From 64a2726c73e4c70347d13b2f030c603de84b243c Mon Sep 17 00:00:00 2001 From: Tianyu Liu Date: Sat, 13 Sep 2025 12:58:46 +0200 Subject: [PATCH] wip --- backend/trading_journal/db.py | 11 +++++------ backend/trading_journal/db_migration.py | 4 ++-- backend/trading_journal/models.py | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/trading_journal/db.py b/backend/trading_journal/db.py index e098fef..c147df7 100644 --- a/backend/trading_journal/db.py +++ b/backend/trading_journal/db.py @@ -5,12 +5,13 @@ from typing import TYPE_CHECKING from sqlalchemy import event from sqlalchemy.pool import StaticPool -from sqlmodel import Session, SQLModel, create_engine +from sqlmodel import Session, create_engine + +import trading_journal.db_migration if TYPE_CHECKING: from collections.abc import Generator - - from sqlalchemy.engine import Connection + from sqlite3 import Connection as DBAPIConnection class Database: @@ -29,11 +30,9 @@ class Database: if self._database_url.startswith("sqlite"): - def _enable_sqlite_pragmas(dbapi_conn: Connection, _connection_record: object) -> None: + def _enable_sqlite_pragmas(dbapi_conn: DBAPIConnection, _connection_record: object) -> None: try: cur = dbapi_conn.cursor() - cur.execute("PRAGMA journal_mode=WAL;") - cur.execute("PRAGMA synchronous=NORMAL;") cur.execute("PRAGMA foreign_keys=ON;") cur.execute("PRAGMA busy_timeout=30000;") cur.close() diff --git a/backend/trading_journal/db_migration.py b/backend/trading_journal/db_migration.py index dec8e0b..678634f 100644 --- a/backend/trading_journal/db_migration.py +++ b/backend/trading_journal/db_migration.py @@ -3,7 +3,7 @@ from __future__ import annotations from typing import Callable from sqlalchemy import text -from sqlalchemy.engine import Engine +from sqlalchemy.engine import Connection, Engine from sqlmodel import SQLModel # 最新 schema 版本号 @@ -26,7 +26,7 @@ MIGRATIONS: dict[int, Callable[[Engine], None]] = { } -def _get_sqlite_user_version(conn) -> int: +def _get_sqlite_user_version(conn: Connection) -> int: row = conn.execute(text("PRAGMA user_version")).fetchone() return int(row[0]) if row and row[0] is not None else 0 diff --git a/backend/trading_journal/models.py b/backend/trading_journal/models.py index a3ae112..051c876 100644 --- a/backend/trading_journal/models.py +++ b/backend/trading_journal/models.py @@ -2,6 +2,7 @@ from __future__ import annotations from datetime import date, datetime # noqa: TC003 from enum import Enum +from typing import TYPE_CHECKING from sqlmodel import Column, DateTime, Field, Relationship, SQLModel from sqlmodel import Enum as SQLEnum