Improved manually specifying sqlite db
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user