feat: auto-initialize trading_days schema on database creation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-04 07:09:09 -05:00
parent 93ba9deebb
commit a673fc5008
2 changed files with 59 additions and 0 deletions

View File

@@ -560,6 +560,35 @@ class Database:
self.connection = sqlite3.connect(db_path, check_same_thread=False)
self.connection.row_factory = sqlite3.Row
# Auto-initialize schema if needed
self._initialize_schema()
def _initialize_schema(self):
"""Initialize database schema if tables don't exist."""
import importlib.util
import os
# Check if trading_days table exists
cursor = self.connection.execute(
"SELECT name FROM sqlite_master WHERE type='table' AND name='trading_days'"
)
if cursor.fetchone() is None:
# Schema doesn't exist, create it
# Import migration module using importlib (module name starts with number)
migration_path = os.path.join(
os.path.dirname(__file__),
'migrations',
'001_trading_days_schema.py'
)
spec = importlib.util.spec_from_file_location(
"trading_days_schema",
migration_path
)
migration_module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(migration_module)
migration_module.create_trading_days_schema(self)
def create_trading_day(
self,
job_id: str,

View File

@@ -0,0 +1,30 @@
import pytest
from api.database import Database
class TestDatabaseInitialization:
def test_database_creates_new_schema_on_init(self, tmp_path):
"""Test database automatically creates trading_days schema."""
db_path = tmp_path / "new.db"
# Create database (should auto-initialize schema)
db = Database(str(db_path))
# Verify trading_days table exists
cursor = db.connection.execute(
"SELECT name FROM sqlite_master WHERE type='table' AND name='trading_days'"
)
assert cursor.fetchone() is not None
# Verify holdings table exists
cursor = db.connection.execute(
"SELECT name FROM sqlite_master WHERE type='table' AND name='holdings'"
)
assert cursor.fetchone() is not None
# Verify actions table exists
cursor = db.connection.execute(
"SELECT name FROM sqlite_master WHERE type='table' AND name='actions'"
)
assert cursor.fetchone() is not None