diff --git a/.gitignore b/.gitignore index cc8c9de84..10838b11b 100644 --- a/.gitignore +++ b/.gitignore @@ -47,5 +47,3 @@ build/ # Tracker temp files tracker_tasks.json -# Schema metadata snapshot -schema-metadata-snapshot.json diff --git a/docs/schema-metadata-snapshot.json b/docs/schema-metadata-snapshot.json new file mode 100644 index 000000000..92906191a --- /dev/null +++ b/docs/schema-metadata-snapshot.json @@ -0,0 +1,2165 @@ +{ + "tables": { + "asset_libraries": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": true, + "name": "kind", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "asset_count", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "total_size", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "kind" + ], + "name": "ix_asset_libraries_kind", + "unique": false + }, + { + "columns": [ + "project_id" + ], + "name": "ix_asset_libraries_project_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "assets": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "asset_library_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(500)", + "unique": false + }, + { + "index": true, + "name": "file_type", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "file_size", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "file_url", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(1000)", + "unique": false + }, + { + "index": false, + "name": "thumbnail_url", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(1000)", + "unique": false + }, + { + "index": false, + "name": "duration", + "nullable": true, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "width", + "nullable": true, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "height", + "nullable": true, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "fps", + "nullable": true, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "codec", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(50)", + "unique": false + }, + { + "index": true, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": true, + "name": "classification_status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "classification_result", + "nullable": true, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "quality_score", + "nullable": true, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "uploaded_by_user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": true, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "asset_library_id" + ], + "name": "ix_assets_asset_library_id", + "unique": false + }, + { + "columns": [ + "classification_status" + ], + "name": "ix_assets_classification_status", + "unique": false + }, + { + "columns": [ + "created_at" + ], + "name": "ix_assets_created_at", + "unique": false + }, + { + "columns": [ + "file_type" + ], + "name": "ix_assets_file_type", + "unique": false + }, + { + "columns": [ + "project_id" + ], + "name": "ix_assets_project_id", + "unique": false + }, + { + "columns": [ + "status" + ], + "name": "ix_assets_status", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "classification_jobs": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "asset_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "classification", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(50)", + "unique": false + }, + { + "index": false, + "name": "confidence", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "error_message", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "asset_id" + ], + "name": "ix_classification_jobs_asset_id", + "unique": false + }, + { + "columns": [ + "project_id" + ], + "name": "ix_classification_jobs_project_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "duplication_records": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "filename", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(500)", + "unique": false + }, + { + "index": false, + "name": "file_size", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "storage_key", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(500)", + "unique": false + }, + { + "index": false, + "name": "duration_seconds", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": true, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "duplicate_rate", + "nullable": true, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "duplicate_count", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "video_fingerprint", + "nullable": true, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "error_message", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "status" + ], + "name": "ix_duplication_records_status", + "unique": false + }, + { + "columns": [ + "user_id" + ], + "name": "ix_duplication_records_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "duplication_segments": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "record_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "source_start", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "source_end", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "matched_video_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "matched_video_name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(500)", + "unique": false + }, + { + "index": false, + "name": "matched_start", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "matched_end", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "similarity", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "record_id" + ], + "name": "ix_duplication_segments_record_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "edit_templates": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(120)", + "unique": false + }, + { + "index": false, + "name": "description", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "target_duration", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "clip_count", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "is_active", + "nullable": false, + "primary_key": false, + "type": "BOOLEAN", + "unique": false + }, + { + "index": false, + "name": "created_by_user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "project_id" + ], + "name": "ix_edit_templates_project_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "generated_videos": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "generation_task_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "file_url", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(1000)", + "unique": false + }, + { + "index": false, + "name": "file_size", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "duration", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "thumbnail_url", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(1000)", + "unique": false + }, + { + "index": false, + "name": "width", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "height", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "fps", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": true, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": true, + "name": "review_status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "generation_params", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "generated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": true, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "video_fingerprint", + "nullable": true, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "is_duplicate", + "nullable": false, + "primary_key": false, + "type": "BOOLEAN", + "unique": false + }, + { + "index": false, + "name": "duplicate_of", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "generation_task_id" + ], + "name": "ix_generated_videos_generation_task_id", + "unique": false + }, + { + "columns": [ + "project_id" + ], + "name": "ix_generated_videos_project_id", + "unique": false + }, + { + "columns": [ + "review_status" + ], + "name": "ix_generated_videos_review_status", + "unique": false + }, + { + "columns": [ + "status" + ], + "name": "ix_generated_videos_status", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "generation_tasks": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "strategy_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "asset_library_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "voice_library_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "template_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "asset_ids", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "title_ids", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "voice_ids", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": true, + "name": "editing_mode", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": true, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "progress", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "result_count", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "error_message", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "started_at", + "nullable": true, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "completed_at", + "nullable": true, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": true, + "name": "created_by_user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "asset_library_id" + ], + "name": "ix_generation_tasks_asset_library_id", + "unique": false + }, + { + "columns": [ + "created_by_user_id" + ], + "name": "ix_generation_tasks_created_by_user_id", + "unique": false + }, + { + "columns": [ + "editing_mode" + ], + "name": "ix_generation_tasks_editing_mode", + "unique": false + }, + { + "columns": [ + "project_id" + ], + "name": "ix_generation_tasks_project_id", + "unique": false + }, + { + "columns": [ + "status" + ], + "name": "ix_generation_tasks_status", + "unique": false + }, + { + "columns": [ + "template_id" + ], + "name": "ix_generation_tasks_template_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "ingest_jobs": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "library_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "storage_key", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "error_message", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "result_asset_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "library_id" + ], + "name": "ix_ingest_jobs_library_id", + "unique": false + }, + { + "columns": [ + "project_id" + ], + "name": "ix_ingest_jobs_project_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "projects": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": true, + "name": "owner_user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(32)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(100)", + "unique": false + }, + { + "index": false, + "name": "description", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "shared_users", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "owner_user_id" + ], + "name": "ix_projects_owner_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "recipe_items": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "recipe_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "item_type", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "item_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "position", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "recipe_id" + ], + "name": "ix_recipe_items_recipe_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "recipes": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(200)", + "unique": false + }, + { + "index": false, + "name": "description", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "template_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "generation_params", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "is_active", + "nullable": false, + "primary_key": false, + "type": "BOOLEAN", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "user_id" + ], + "name": "ix_recipes_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "template_categories": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(100)", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "user_id" + ], + "name": "ix_template_categories_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "template_segments": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "template_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "segment_order", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "duration_min", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "duration_max", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "material_type", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "template_id" + ], + "name": "ix_template_segments_template_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "templates": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(200)", + "unique": false + }, + { + "index": true, + "name": "mode", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(30)", + "unique": false + }, + { + "index": false, + "name": "category", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(100)", + "unique": false + }, + { + "index": false, + "name": "tags", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "title_config", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "subtitle_config", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "bgm_config", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "estimated_duration", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "is_active", + "nullable": false, + "primary_key": false, + "type": "BOOLEAN", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "mode" + ], + "name": "ix_templates_mode", + "unique": false + }, + { + "columns": [ + "user_id" + ], + "name": "ix_templates_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "title_libraries": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "description", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": true, + "name": "category", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(50)", + "unique": false + }, + { + "index": false, + "name": "text", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(500)", + "unique": false + }, + { + "index": false, + "name": "tags", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "usage_count", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": true, + "name": "is_active", + "nullable": false, + "primary_key": false, + "type": "BOOLEAN", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "category" + ], + "name": "ix_title_libraries_category", + "unique": false + }, + { + "columns": [ + "is_active" + ], + "name": "ix_title_libraries_is_active", + "unique": false + }, + { + "columns": [ + "user_id" + ], + "name": "ix_title_libraries_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + }, + "users": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "email", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": true + }, + { + "index": true, + "name": "username", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(100)", + "unique": true + }, + { + "index": false, + "name": "display_name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "password_hash", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "email_verified", + "nullable": false, + "primary_key": false, + "type": "BOOLEAN", + "unique": false + }, + { + "index": false, + "name": "email_verification_token", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "password_reset_token", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "password_reset_expires_at", + "nullable": true, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "last_login_at", + "nullable": true, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "last_login_ip", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(50)", + "unique": false + }, + { + "index": false, + "name": "subscription_plan", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "subscription_status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "subscription_expires_at", + "nullable": true, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "max_projects", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "max_storage_gb", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "used_storage_gb", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "email" + ], + "name": "ix_users_email", + "unique": true + }, + { + "columns": [ + "username" + ], + "name": "ix_users_username", + "unique": true + } + ], + "primary_key": [ + "id" + ] + }, + "voice_libraries": { + "columns": [ + { + "index": false, + "name": "id", + "nullable": false, + "primary_key": true, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "user_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": true, + "name": "project_id", + "nullable": true, + "primary_key": false, + "type": "VARCHAR(36)", + "unique": false + }, + { + "index": false, + "name": "name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(255)", + "unique": false + }, + { + "index": false, + "name": "text", + "nullable": false, + "primary_key": false, + "type": "TEXT", + "unique": false + }, + { + "index": false, + "name": "voice_provider", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(50)", + "unique": false + }, + { + "index": false, + "name": "voice_id", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(100)", + "unique": false + }, + { + "index": false, + "name": "voice_name", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(100)", + "unique": false + }, + { + "index": false, + "name": "audio_url", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(1000)", + "unique": false + }, + { + "index": false, + "name": "duration", + "nullable": false, + "primary_key": false, + "type": "FLOAT", + "unique": false + }, + { + "index": false, + "name": "file_size", + "nullable": false, + "primary_key": false, + "type": "INTEGER", + "unique": false + }, + { + "index": true, + "name": "status", + "nullable": false, + "primary_key": false, + "type": "VARCHAR(20)", + "unique": false + }, + { + "index": false, + "name": "tags", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "metadata", + "nullable": false, + "primary_key": false, + "type": "JSON", + "unique": false + }, + { + "index": false, + "name": "created_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + }, + { + "index": false, + "name": "updated_at", + "nullable": false, + "primary_key": false, + "type": "DATETIME", + "unique": false + } + ], + "indexes": [ + { + "columns": [ + "project_id" + ], + "name": "ix_voice_libraries_project_id", + "unique": false + }, + { + "columns": [ + "status" + ], + "name": "ix_voice_libraries_status", + "unique": false + }, + { + "columns": [ + "user_id" + ], + "name": "ix_voice_libraries_user_id", + "unique": false + } + ], + "primary_key": [ + "id" + ] + } + } +}