Improved manually specifying sqlite db
This commit is contained in:
@@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
from collections.abc import AsyncGenerator
|
from collections.abc import AsyncGenerator
|
||||||
from pathlib import Path
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from platformdirs import user_data_dir
|
|
||||||
from sqlalchemy import URL
|
from sqlalchemy import URL
|
||||||
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker, create_async_engine
|
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker, create_async_engine
|
||||||
|
|
||||||
@@ -27,11 +25,14 @@ def get_connection_url() -> URL:
|
|||||||
if db_type is None:
|
if db_type is None:
|
||||||
db_type = env.DatabaseType.SQLITE
|
db_type = env.DatabaseType.SQLITE
|
||||||
|
|
||||||
data_dir = Path(user_data_dir("spoolman"))
|
database = str(env.get_data_dir().joinpath("spoolman.db"))
|
||||||
data_dir.mkdir(parents=True, exist_ok=True)
|
|
||||||
|
|
||||||
database = str(data_dir.joinpath("spoolman.db"))
|
|
||||||
logger.info('No database type specified, using a default SQLite database located at "%s"', database)
|
logger.info('No database type specified, using a default SQLite database located at "%s"', database)
|
||||||
|
elif db_type is env.DatabaseType.SQLITE:
|
||||||
|
if database is not None:
|
||||||
|
raise ValueError("Cannot specify a database name when using SQLite.")
|
||||||
|
|
||||||
|
database = str(env.get_data_dir().joinpath("spoolman.db"))
|
||||||
|
logger.info('Using SQLite database located at "%s"', database)
|
||||||
else:
|
else:
|
||||||
logger.info('Connecting to database of type "%s" at "%s:%s"', db_type, host, port)
|
logger.info('Connecting to database of type "%s" at "%s:%s"', db_type, host, port)
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ from pathlib import Path
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
from urllib import parse
|
from urllib import parse
|
||||||
|
|
||||||
|
from platformdirs import user_data_dir
|
||||||
|
|
||||||
|
|
||||||
class DatabaseType(Enum):
|
class DatabaseType(Enum):
|
||||||
"""The database type."""
|
"""The database type."""
|
||||||
@@ -192,3 +194,14 @@ def is_debug_mode() -> bool:
|
|||||||
if debug_mode == "TRUE" or debug_mode == "1":
|
if debug_mode == "TRUE" or debug_mode == "1":
|
||||||
return True
|
return True
|
||||||
raise ValueError(f"Failed to parse SPOOLMAN_DEBUG_MODE variable: Unknown debug mode '{debug_mode}'.")
|
raise ValueError(f"Failed to parse SPOOLMAN_DEBUG_MODE variable: Unknown debug mode '{debug_mode}'.")
|
||||||
|
|
||||||
|
|
||||||
|
def get_data_dir() -> Path:
|
||||||
|
"""Get the data directory.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Path: The data directory.
|
||||||
|
"""
|
||||||
|
data_dir = Path(user_data_dir("spoolman"))
|
||||||
|
data_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
return data_dir
|
||||||
|
|||||||
@@ -11,16 +11,13 @@ import uvicorn
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
from platformdirs import user_data_dir
|
|
||||||
|
|
||||||
from spoolman import env
|
from spoolman import env
|
||||||
from spoolman.api.v1.router import app as v1_app
|
from spoolman.api.v1.router import app as v1_app
|
||||||
from spoolman.database.database import get_connection_url, setup_db
|
from spoolman.database.database import get_connection_url, setup_db
|
||||||
|
|
||||||
# Define a file logger with log rotation
|
# Define a file logger with log rotation
|
||||||
data_dir = Path(user_data_dir("spoolman"))
|
log_file = env.get_data_dir().joinpath("spoolman.log")
|
||||||
data_dir.mkdir(parents=True, exist_ok=True)
|
|
||||||
log_file = data_dir.joinpath("spoolman.log")
|
|
||||||
file_handler = TimedRotatingFileHandler(log_file, when="midnight", backupCount=5)
|
file_handler = TimedRotatingFileHandler(log_file, when="midnight", backupCount=5)
|
||||||
file_handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(message)s", "%Y-%m-%d %H:%M:%S"))
|
file_handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(message)s", "%Y-%m-%d %H:%M:%S"))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user