Improved manually specifying sqlite db

This commit is contained in:
Donkie
2023-07-04 12:10:14 +02:00
parent 57fdfaf0dc
commit d201f17e5e
3 changed files with 21 additions and 10 deletions

View File

@@ -2,10 +2,8 @@
import logging
from collections.abc import AsyncGenerator
from pathlib import Path
from typing import Optional
from platformdirs import user_data_dir
from sqlalchemy import URL
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:
db_type = env.DatabaseType.SQLITE
data_dir = Path(user_data_dir("spoolman"))
data_dir.mkdir(parents=True, exist_ok=True)
database = str(data_dir.joinpath("spoolman.db"))
database = str(env.get_data_dir().joinpath("spoolman.db"))
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:
logger.info('Connecting to database of type "%s" at "%s:%s"', db_type, host, port)

View File

@@ -7,6 +7,8 @@ from pathlib import Path
from typing import Optional
from urllib import parse
from platformdirs import user_data_dir
class DatabaseType(Enum):
"""The database type."""
@@ -192,3 +194,14 @@ def is_debug_mode() -> bool:
if debug_mode == "TRUE" or debug_mode == "1":
return True
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

View File

@@ -11,16 +11,13 @@ import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from platformdirs import user_data_dir
from spoolman import env
from spoolman.api.v1.router import app as v1_app
from spoolman.database.database import get_connection_url, setup_db
# Define a file logger with log rotation
data_dir = Path(user_data_dir("spoolman"))
data_dir.mkdir(parents=True, exist_ok=True)
log_file = data_dir.joinpath("spoolman.log")
log_file = env.get_data_dir().joinpath("spoolman.log")
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"))