{ "version": "5", "dialect": "mysql", "id": "7f4322d5-fca2-43e2-8d99-d98ecef54b41", "prevId": "5bab5fce-302f-485a-a496-e4deeafc2269", "tables": { "achievements": { "name": "achievements", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "type": { "name": "type", "type": "enum('knowledge','behavior')", "primaryKey": false, "notNull": true, "autoincrement": false }, "name": { "name": "name", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "description": { "name": "description", "type": "varchar(300)", "primaryKey": false, "notNull": true, "autoincrement": false }, "icon_url": { "name": "icon_url", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "condition": { "name": "condition", "type": "json", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": { "achievements_id": { "name": "achievements_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "ad_recovery_sessions": { "name": "ad_recovery_sessions", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "type": { "name": "type", "type": "enum('hearts','bonusAttempts','streakProtection')", "primaryKey": false, "notNull": true, "autoincrement": false }, "status": { "name": "status", "type": "enum('pending','settling','completed','failed','expired')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'pending'" }, "client_request_id": { "name": "client_request_id", "type": "varchar(80)", "primaryKey": false, "notNull": true, "autoincrement": false }, "complete_request_id": { "name": "complete_request_id", "type": "varchar(80)", "primaryKey": false, "notNull": false, "autoincrement": false }, "platform": { "name": "platform", "type": "enum('ios','android','harmony','web')", "primaryKey": false, "notNull": true, "autoincrement": false }, "ad_provider": { "name": "ad_provider", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "ad_placement_id": { "name": "ad_placement_id", "type": "varchar(120)", "primaryKey": false, "notNull": true, "autoincrement": false }, "provider_reward_token": { "name": "provider_reward_token", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "reward_snapshot": { "name": "reward_snapshot", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "progress_before": { "name": "progress_before", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "progress_after": { "name": "progress_after", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "failure_reason": { "name": "failure_reason", "type": "varchar(80)", "primaryKey": false, "notNull": false, "autoincrement": false }, "provider_error": { "name": "provider_error", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "duplicate_count": { "name": "duplicate_count", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "expires_at": { "name": "expires_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false }, "completed_at": { "name": "completed_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": { "uk_ad_recovery_user_client_request": { "name": "uk_ad_recovery_user_client_request", "columns": [ "user_id", "client_request_id" ], "isUnique": true }, "idx_ad_recovery_user_type_status_created": { "name": "idx_ad_recovery_user_type_status_created", "columns": [ "user_id", "type", "status", "created_at" ], "isUnique": false } }, "foreignKeys": { "ad_recovery_sessions_user_id_users_id_fk": { "name": "ad_recovery_sessions_user_id_users_id_fk", "tableFrom": "ad_recovery_sessions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "ad_recovery_sessions_id": { "name": "ad_recovery_sessions_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "admin_audit_log": { "name": "admin_audit_log", "columns": { "id": { "name": "id", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": true }, "admin_id": { "name": "admin_id", "type": "varchar(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "action": { "name": "action", "type": "varchar(10)", "primaryKey": false, "notNull": true, "autoincrement": false }, "resource": { "name": "resource", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "details": { "name": "details", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "ip_address": { "name": "ip_address", "type": "varchar(45)", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": { "admin_audit_log_id": { "name": "admin_audit_log_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "admin_users": { "name": "admin_users", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "username": { "name": "username", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "password_hash": { "name": "password_hash", "type": "varchar(255)", "primaryKey": false, "notNull": true, "autoincrement": false }, "role": { "name": "role", "type": "enum('admin','super_admin')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'admin'" }, "is_active": { "name": "is_active", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 1 }, "last_login_at": { "name": "last_login_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": { "uk_admin_username": { "name": "uk_admin_username", "columns": [ "username" ], "isUnique": true } }, "foreignKeys": {}, "compositePrimaryKeys": { "admin_users_id": { "name": "admin_users_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "categories": { "name": "categories", "columns": { "id": { "name": "id", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "name": { "name": "name", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "slug": { "name": "slug", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "parent_id": { "name": "parent_id", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "sort_order": { "name": "sort_order", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "question_count": { "name": "question_count", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "status": { "name": "status", "type": "enum('active','inactive')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'active'" }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": { "uk_slug": { "name": "uk_slug", "columns": [ "slug" ], "isUnique": true } }, "foreignKeys": {}, "compositePrimaryKeys": { "categories_id": { "name": "categories_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "knowledge_cards": { "name": "knowledge_cards", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "question_id": { "name": "question_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "summary": { "name": "summary", "type": "varchar(300)", "primaryKey": false, "notNull": true, "autoincrement": false }, "deep_dive": { "name": "deep_dive", "type": "text", "primaryKey": false, "notNull": false, "autoincrement": false }, "source_ref": { "name": "source_ref", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": { "uk_question": { "name": "uk_question", "columns": [ "question_id" ], "isUnique": true } }, "foreignKeys": { "knowledge_cards_question_id_questions_id_fk": { "name": "knowledge_cards_question_id_questions_id_fk", "tableFrom": "knowledge_cards", "tableTo": "questions", "columnsFrom": [ "question_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "knowledge_cards_id": { "name": "knowledge_cards_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "leaderboard_snapshots": { "name": "leaderboard_snapshots", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "tier": { "name": "tier", "type": "enum('bronze','silver','gold','platinum','diamond','master','grandmaster','champion','legend','mythic')", "primaryKey": false, "notNull": true, "autoincrement": false }, "weekly_xp": { "name": "weekly_xp", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "rank": { "name": "rank", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false }, "league": { "name": "league", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "week_start": { "name": "week_start", "type": "date", "primaryKey": false, "notNull": false, "autoincrement": false }, "week_end": { "name": "week_end", "type": "date", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "idx_user_week": { "name": "idx_user_week", "columns": [ "user_id", "week_start" ], "isUnique": false } }, "foreignKeys": {}, "compositePrimaryKeys": { "leaderboard_snapshots_id": { "name": "leaderboard_snapshots_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "question_ratings": { "name": "question_ratings", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "question_id": { "name": "question_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "rating": { "name": "rating", "type": "enum('good','bad')", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "uk_user_question_rating": { "name": "uk_user_question_rating", "columns": [ "user_id", "question_id" ], "isUnique": true } }, "foreignKeys": {}, "compositePrimaryKeys": { "question_ratings_id": { "name": "question_ratings_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "questions": { "name": "questions", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "stem": { "name": "stem", "type": "json", "primaryKey": false, "notNull": true, "autoincrement": false }, "content_type": { "name": "content_type", "type": "enum('text','image','video','audio')", "primaryKey": false, "notNull": true, "autoincrement": false }, "correct_answer": { "name": "correct_answer", "type": "varchar(500)", "primaryKey": false, "notNull": true, "autoincrement": false }, "distractors": { "name": "distractors", "type": "json", "primaryKey": false, "notNull": true, "autoincrement": false }, "category_id": { "name": "category_id", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "difficulty": { "name": "difficulty", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false }, "dynamic_difficulty": { "name": "dynamic_difficulty", "type": "decimal(3,1)", "primaryKey": false, "notNull": false, "autoincrement": false }, "source": { "name": "source", "type": "enum('system','ugc')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'system'" }, "creator_id": { "name": "creator_id", "type": "char(36)", "primaryKey": false, "notNull": false, "autoincrement": false }, "status": { "name": "status", "type": "enum('draft','reviewing','published','archived')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'draft'" }, "stats": { "name": "stats", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "('{\"timesAnswered\":0,\"correctRate\":0,\"avgTimeMs\":0}')" }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": { "questions_category_id_categories_id_fk": { "name": "questions_category_id_categories_id_fk", "tableFrom": "questions", "tableTo": "categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "questions_id": { "name": "questions_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "skill_tree": { "name": "skill_tree", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "category_id": { "name": "category_id", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "title": { "name": "title", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "parent_id": { "name": "parent_id", "type": "char(36)", "primaryKey": false, "notNull": false, "autoincrement": false }, "sort_order": { "name": "sort_order", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "questions_required": { "name": "questions_required", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 4 }, "pass_threshold": { "name": "pass_threshold", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 2 }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": { "skill_tree_category_id_categories_id_fk": { "name": "skill_tree_category_id_categories_id_fk", "tableFrom": "skill_tree", "tableTo": "categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "skill_tree_id": { "name": "skill_tree_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "subscriptions": { "name": "subscriptions", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "tier": { "name": "tier", "type": "enum('free','pro','proplus')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'free'" }, "platform": { "name": "platform", "type": "enum('huawei','apple','google')", "primaryKey": false, "notNull": false, "autoincrement": false }, "purchase_token": { "name": "purchase_token", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "expires_at": { "name": "expires_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "auto_renew": { "name": "auto_renew", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "status": { "name": "status", "type": "enum('active','expired','cancelled')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'active'" }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": { "uk_subscription_user": { "name": "uk_subscription_user", "columns": [ "user_id" ], "isUnique": true } }, "foreignKeys": {}, "compositePrimaryKeys": { "subscriptions_id": { "name": "subscriptions_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_achievements": { "name": "user_achievements", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "achievement_id": { "name": "achievement_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "unlocked_at": { "name": "unlocked_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "uk_user_achievement": { "name": "uk_user_achievement", "columns": [ "user_id", "achievement_id" ], "isUnique": true } }, "foreignKeys": {}, "compositePrimaryKeys": { "user_achievements_id": { "name": "user_achievements_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_chapter_progress": { "name": "user_chapter_progress", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "chapter_id": { "name": "chapter_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "status": { "name": "status", "type": "enum('locked','unlocked','passed','perfect')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'locked'" }, "best_correct_count": { "name": "best_correct_count", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "attempts": { "name": "attempts", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "completed_at": { "name": "completed_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false } }, "indexes": { "uk_user_chapter": { "name": "uk_user_chapter", "columns": [ "user_id", "chapter_id" ], "isUnique": true } }, "foreignKeys": { "user_chapter_progress_user_id_users_id_fk": { "name": "user_chapter_progress_user_id_users_id_fk", "tableFrom": "user_chapter_progress", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "user_chapter_progress_chapter_id_skill_tree_id_fk": { "name": "user_chapter_progress_chapter_id_skill_tree_id_fk", "tableFrom": "user_chapter_progress", "tableTo": "skill_tree", "columnsFrom": [ "chapter_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_chapter_progress_id": { "name": "user_chapter_progress_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_feedback": { "name": "user_feedback", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "content": { "name": "content", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, "contact": { "name": "contact", "type": "varchar(255)", "primaryKey": false, "notNull": false, "autoincrement": false }, "page_context": { "name": "page_context", "type": "varchar(200)", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": { "user_feedback_id": { "name": "user_feedback_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_progress": { "name": "user_progress", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "question_id": { "name": "question_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "correct": { "name": "correct", "type": "tinyint", "primaryKey": false, "notNull": true, "autoincrement": false }, "time_ms": { "name": "time_ms", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false }, "answered_at": { "name": "answered_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "idx_user_answered": { "name": "idx_user_answered", "columns": [ "user_id", "answered_at" ], "isUnique": false } }, "foreignKeys": { "user_progress_user_id_users_id_fk": { "name": "user_progress_user_id_users_id_fk", "tableFrom": "user_progress", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "user_progress_question_id_questions_id_fk": { "name": "user_progress_question_id_questions_id_fk", "tableFrom": "user_progress", "tableTo": "questions", "columnsFrom": [ "question_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_progress_id": { "name": "user_progress_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "users": { "name": "users", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "auth_type": { "name": "auth_type", "type": "enum('huawei','guest','phone','apple','google')", "primaryKey": false, "notNull": true, "autoincrement": false }, "auth_id": { "name": "auth_id", "type": "varchar(255)", "primaryKey": false, "notNull": true, "autoincrement": false }, "nickname": { "name": "nickname", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "avatar_url": { "name": "avatar_url", "type": "varchar(500)", "primaryKey": false, "notNull": false, "autoincrement": false }, "tier": { "name": "tier", "type": "enum('free','pro','proplus')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'free'" }, "xp_total": { "name": "xp_total", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "streak_days": { "name": "streak_days", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "streak_last_date": { "name": "streak_last_date", "type": "date", "primaryKey": false, "notNull": false, "autoincrement": false }, "hearts_remaining": { "name": "hearts_remaining", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 5 }, "hearts_last_restore": { "name": "hearts_last_restore", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "daily_xp_goal": { "name": "daily_xp_goal", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 50 }, "daily_xp_earned": { "name": "daily_xp_earned", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "daily_xp_date": { "name": "daily_xp_date", "type": "date", "primaryKey": false, "notNull": false, "autoincrement": false }, "current_theme": { "name": "current_theme", "type": "varchar(20)", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'inkTeal'" }, "active_track_id": { "name": "active_track_id", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "daily_attempts_left": { "name": "daily_attempts_left", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 5 }, "daily_attempts_date": { "name": "daily_attempts_date", "type": "date", "primaryKey": false, "notNull": false, "autoincrement": false }, "check_in_days": { "name": "check_in_days", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "last_check_in_date": { "name": "last_check_in_date", "type": "date", "primaryKey": false, "notNull": false, "autoincrement": false }, "streak_protected_until": { "name": "streak_protected_until", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": { "uk_auth": { "name": "uk_auth", "columns": [ "auth_type", "auth_id" ], "isUnique": true } }, "foreignKeys": {}, "compositePrimaryKeys": { "users_id": { "name": "users_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} } }, "views": {}, "_meta": { "schemas": {}, "tables": {}, "columns": {} }, "internal": { "tables": {}, "indexes": {} } }