mirror of
https://github.com/Xe138/AI-Trader.git
synced 2026-04-02 09:37:23 -04:00
Compare commits
2 Commits
v0.3.0-alp
...
v0.3.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
| 9813a3c9fd | |||
| 3535746eb7 |
10
ROADMAP.md
10
ROADMAP.md
@@ -150,7 +150,15 @@ curl -X POST http://localhost:5000/simulate/to-date \
|
||||
- Integration with monitoring systems (Prometheus, Grafana)
|
||||
- Alerting recommendations
|
||||
- Backup and disaster recovery guidance
|
||||
- Database migration strategy
|
||||
- Database migration strategy:
|
||||
- Automated schema migration system for production databases
|
||||
- Support for ALTER TABLE and table recreation when needed
|
||||
- Migration version tracking and rollback capabilities
|
||||
- Zero-downtime migration procedures for production
|
||||
- Data integrity validation before and after migrations
|
||||
- Migration script testing framework
|
||||
- Note: Currently migrations are minimal (pre-production state)
|
||||
- Pre-production recommendation: Delete and recreate databases for schema updates
|
||||
- Upgrade path documentation (v0.x to v1.0)
|
||||
- Version compatibility guarantees going forward
|
||||
|
||||
|
||||
@@ -289,9 +289,8 @@ def _migrate_schema(cursor: sqlite3.Cursor) -> None:
|
||||
"""
|
||||
Migrate existing database schema to latest version.
|
||||
|
||||
Note: Cannot add CHECK constraints to existing columns via ALTER TABLE.
|
||||
The "downloading_data" status in jobs table requires a fresh database
|
||||
or manual migration if upgrading from an older schema version.
|
||||
Note: For pre-production databases, simply delete and recreate.
|
||||
This migration is only for preserving data during development.
|
||||
"""
|
||||
# Check if positions table exists and has simulation_run_id column
|
||||
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='positions'")
|
||||
@@ -300,23 +299,10 @@ def _migrate_schema(cursor: sqlite3.Cursor) -> None:
|
||||
columns = [row[1] for row in cursor.fetchall()]
|
||||
|
||||
if 'simulation_run_id' not in columns:
|
||||
# Add simulation_run_id column to existing positions table
|
||||
cursor.execute("""
|
||||
ALTER TABLE positions ADD COLUMN simulation_run_id TEXT
|
||||
""")
|
||||
|
||||
# Check if jobs table exists and has warnings column
|
||||
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='jobs'")
|
||||
if cursor.fetchone():
|
||||
cursor.execute("PRAGMA table_info(jobs)")
|
||||
columns = [row[1] for row in cursor.fetchall()]
|
||||
|
||||
if 'warnings' not in columns:
|
||||
# Add warnings column to existing jobs table
|
||||
cursor.execute("""
|
||||
ALTER TABLE jobs ADD COLUMN warnings TEXT
|
||||
""")
|
||||
|
||||
|
||||
def _create_indexes(cursor: sqlite3.Cursor) -> None:
|
||||
"""Create database indexes for query performance."""
|
||||
|
||||
Reference in New Issue
Block a user