Initial commit.
This commit is contained in:
78
migrate_db.py
Normal file
78
migrate_db.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from app import app, db
|
||||
import sqlite3
|
||||
import os
|
||||
|
||||
def migrate_database():
|
||||
db_path = 'timetrack.db'
|
||||
|
||||
# Check if database exists
|
||||
if not os.path.exists(db_path):
|
||||
print("Database doesn't exist. Creating new database.")
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
return
|
||||
|
||||
print("Migrating existing database...")
|
||||
|
||||
# Connect to the database
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Check if the time_entry columns already exist
|
||||
cursor.execute("PRAGMA table_info(time_entry)")
|
||||
time_entry_columns = [column[1] for column in cursor.fetchall()]
|
||||
|
||||
# Add new columns to time_entry if they don't exist
|
||||
if 'is_paused' not in time_entry_columns:
|
||||
print("Adding is_paused column to time_entry...")
|
||||
cursor.execute("ALTER TABLE time_entry ADD COLUMN is_paused BOOLEAN DEFAULT 0")
|
||||
|
||||
if 'pause_start_time' not in time_entry_columns:
|
||||
print("Adding pause_start_time column to time_entry...")
|
||||
cursor.execute("ALTER TABLE time_entry ADD COLUMN pause_start_time TIMESTAMP")
|
||||
|
||||
if 'total_break_duration' not in time_entry_columns:
|
||||
print("Adding total_break_duration column to time_entry...")
|
||||
cursor.execute("ALTER TABLE time_entry ADD COLUMN total_break_duration INTEGER DEFAULT 0")
|
||||
|
||||
# Check if the work_config table exists
|
||||
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='work_config'")
|
||||
if not cursor.fetchone():
|
||||
print("Creating work_config table...")
|
||||
cursor.execute("""
|
||||
CREATE TABLE work_config (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
work_hours_per_day FLOAT DEFAULT 8.0,
|
||||
mandatory_break_minutes INTEGER DEFAULT 30,
|
||||
break_threshold_hours FLOAT DEFAULT 6.0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
""")
|
||||
# Insert default config
|
||||
cursor.execute("""
|
||||
INSERT INTO work_config (work_hours_per_day, mandatory_break_minutes, break_threshold_hours)
|
||||
VALUES (8.0, 30, 6.0)
|
||||
""")
|
||||
else:
|
||||
# Check if the work_config columns already exist
|
||||
cursor.execute("PRAGMA table_info(work_config)")
|
||||
work_config_columns = [column[1] for column in cursor.fetchall()]
|
||||
|
||||
# Add new columns to work_config if they don't exist
|
||||
if 'additional_break_minutes' not in work_config_columns:
|
||||
print("Adding additional_break_minutes column to work_config...")
|
||||
cursor.execute("ALTER TABLE work_config ADD COLUMN additional_break_minutes INTEGER DEFAULT 15")
|
||||
|
||||
if 'additional_break_threshold_hours' not in work_config_columns:
|
||||
print("Adding additional_break_threshold_hours column to work_config...")
|
||||
cursor.execute("ALTER TABLE work_config ADD COLUMN additional_break_threshold_hours FLOAT DEFAULT 9.0")
|
||||
|
||||
# Commit changes and close connection
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
print("Database migration completed successfully!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
migrate_database()
|
||||
Reference in New Issue
Block a user