diff --git a/src/landppt/database/migrations/add_speech_scripts_table.py b/src/landppt/database/migrations/add_speech_scripts_table.py new file mode 100644 index 0000000..1587971 --- /dev/null +++ b/src/landppt/database/migrations/add_speech_scripts_table.py @@ -0,0 +1,64 @@ +""" +Add speech_scripts table migration +""" + +import sys +import os +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '../../..')) + +from sqlalchemy import text +from landppt.database.database import engine + + +def upgrade(): + """Create speech_scripts table""" + with engine.connect() as conn: + # Create speech_scripts table + conn.execute(text(""" + CREATE TABLE IF NOT EXISTS speech_scripts ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + project_id VARCHAR(36) NOT NULL, + slide_index INTEGER NOT NULL, + slide_title VARCHAR(255) NOT NULL, + script_content TEXT NOT NULL, + estimated_duration VARCHAR(50), + speaker_notes TEXT, + generation_type VARCHAR(20) NOT NULL, + tone VARCHAR(50) NOT NULL, + target_audience VARCHAR(100) NOT NULL, + custom_audience TEXT, + language_complexity VARCHAR(20) NOT NULL, + speaking_pace VARCHAR(20) NOT NULL, + custom_style_prompt TEXT, + include_transitions BOOLEAN NOT NULL DEFAULT 1, + include_timing_notes BOOLEAN NOT NULL DEFAULT 0, + created_at REAL NOT NULL, + updated_at REAL NOT NULL, + FOREIGN KEY (project_id) REFERENCES projects (project_id) + ) + """)) + + # Create indexes + conn.execute(text(""" + CREATE INDEX IF NOT EXISTS idx_speech_scripts_project_id + ON speech_scripts (project_id) + """)) + + conn.execute(text(""" + CREATE INDEX IF NOT EXISTS idx_speech_scripts_project_slide + ON speech_scripts (project_id, slide_index) + """)) + + conn.commit() + + +def downgrade(): + """Drop speech_scripts table""" + with engine.connect() as conn: + conn.execute(text("DROP TABLE IF EXISTS speech_scripts")) + conn.commit() + + +if __name__ == "__main__": + upgrade() + print("Speech scripts table created successfully!")