From 727dea748cc2db0cdfa83862b7828b6671bbfe86 Mon Sep 17 00:00:00 2001 From: cwilvx Date: Fri, 5 Jul 2024 05:00:28 +0300 Subject: [PATCH] remove hardcoded db location + move Db engine to module --- app/db/__init__.py | 20 +++----------------- app/db/engine.py | 5 +++++ app/db/libdata.py | 5 ++--- app/setup/sqlite.py | 10 ++++++++++ pyproject.toml | 1 + 5 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 app/db/engine.py diff --git a/app/db/__init__.py b/app/db/__init__.py index 4b1c4366..4f7fb524 100644 --- a/app/db/__init__.py +++ b/app/db/__init__.py @@ -1,7 +1,6 @@ from typing import Any from sqlalchemy import ( - create_engine, delete, func, insert, @@ -15,18 +14,7 @@ from sqlalchemy.orm import ( MappedAsDataclass, ) -# ============================================================ -# TODO: Make sure the database is created before we run this. -fullpath = "/home/cwilvx/temp/swingmusic/swing.db" -engine = create_engine( - f"sqlite+pysqlite:///{fullpath}", - echo=False, - max_overflow=0, - pool_size=5, -) - -# connection = engine.connect() - +from app.db.engine import DbEngine @event.listens_for(Engine, "connect") def set_sqlite_pragma(dbapi_connection, connection_record): @@ -38,12 +26,10 @@ def set_sqlite_pragma(dbapi_connection, connection_record): class DbManager: def __init__(self, commit: bool = False): self.commit = commit - self.engine = create_engine(f"sqlite+pysqlite:///{fullpath}", echo=True) - self.conn = self.engine.connect() + self.conn = DbEngine.engine.connect() def __enter__(self): return self.conn.execution_options(preserve_rowcount=True) - # return connection def __exit__(self, exc_type, exc_val, exc_tb): if self.commit: @@ -92,4 +78,4 @@ class Base(MappedAsDataclass, DeclarativeBase): def create_all(): - Base().metadata.create_all(engine) + Base().metadata.create_all(DbEngine.engine) diff --git a/app/db/engine.py b/app/db/engine.py new file mode 100644 index 00000000..233ba004 --- /dev/null +++ b/app/db/engine.py @@ -0,0 +1,5 @@ +from sqlalchemy import Engine + + +class DbEngine: + engine: Engine = None diff --git a/app/db/libdata.py b/app/db/libdata.py index c769eb2e..f68aa95c 100644 --- a/app/db/libdata.py +++ b/app/db/libdata.py @@ -12,8 +12,7 @@ from app.db.utils import ( ) from app.models import Album as AlbumModel from app.utils.remove_duplicates import remove_duplicates -from app.db import engine - +from app.db.engine import DbEngine from sqlalchemy import JSON, Boolean, Integer, String, delete, select, update from sqlalchemy.orm import Mapped, mapped_column, DeclarativeBase @@ -25,7 +24,7 @@ def create_all(): """ Create all the tables defined in this file. """ - Base.metadata.create_all(engine) + Base.metadata.create_all(DbEngine.engine) class Base(MasterBase, DeclarativeBase): diff --git a/app/setup/sqlite.py b/app/setup/sqlite.py index 8ce8dbe5..81d60b7e 100644 --- a/app/setup/sqlite.py +++ b/app/setup/sqlite.py @@ -3,6 +3,7 @@ Module to setup Sqlite databases and tables. Applies migrations. """ +from sqlalchemy import create_engine from app.db.userdata import UserTable from app.db.sqlite import create_connection, create_tables, queries from app.db.sqlite.auth import SQLiteAuthMethods as authdb @@ -12,6 +13,8 @@ from app.settings import Db from app.db import create_all from app.db.libdata import create_all as create_all_libdata +from app.db.engine import DbEngine + def run_migrations(): """ @@ -24,6 +27,13 @@ def setup_sqlite(): """ Create Sqlite databases and tables. """ + DbEngine.engine = create_engine( + f"sqlite+pysqlite:///{Db.get_app_db_path()}", + echo=False, + max_overflow=0, + pool_size=25, + ) + create_all() create_all_libdata() diff --git a/pyproject.toml b/pyproject.toml index 695cc857..8275feb6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,6 +3,7 @@ name = "Swing music player" version = "0.1.0" description = "" authors = ["geoffrey45 "] +package-mode = false [tool.poetry.dependencies] python = ">=3.10,<3.12"