{ "version": "5", "dialect": "mysql", "id": "336479f9-32f5-490f-84f4-c505f206b02b", "prevId": "0c272a13-5ef4-40ac-adc8-5c10d9c351fb", "tables": { "account_migrations": { "name": "account_migrations", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "guest_user_id": { "name": "guest_user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "formal_user_id": { "name": "formal_user_id", "type": "char(36)", "primaryKey": false, "notNull": false, "autoincrement": false }, "provider": { "name": "provider", "type": "enum('apple','google','phone')", "primaryKey": false, "notNull": true, "autoincrement": false }, "provider_user_id": { "name": "provider_user_id", "type": "varchar(255)", "primaryKey": false, "notNull": true, "autoincrement": false }, "client_migration_id": { "name": "client_migration_id", "type": "varchar(80)", "primaryKey": false, "notNull": true, "autoincrement": false }, "status": { "name": "status", "type": "enum('in_progress','completed','failed')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'in_progress'" }, "migration_summary": { "name": "migration_summary", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "completed_at": { "name": "completed_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false } }, "indexes": { "uk_migration_guest_client": { "name": "uk_migration_guest_client", "columns": [ "guest_user_id", "client_migration_id" ], "isUnique": true }, "uk_migration_guest_provider": { "name": "uk_migration_guest_provider", "columns": [ "guest_user_id", "provider" ], "isUnique": true } }, "foreignKeys": { "account_migrations_guest_user_id_users_id_fk": { "name": "account_migrations_guest_user_id_users_id_fk", "tableFrom": "account_migrations", "tableTo": "users", "columnsFrom": [ "guest_user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "account_migrations_formal_user_id_users_id_fk": { "name": "account_migrations_formal_user_id_users_id_fk", "tableFrom": "account_migrations", "tableTo": "users", "columnsFrom": [ "formal_user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "account_migrations_id": { "name": "account_migrations_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "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": {} }, "app_settings": { "name": "app_settings", "columns": { "key": { "name": "key", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "value": { "name": "value", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, "description": { "name": "description", "type": "varchar(300)", "primaryKey": false, "notNull": false, "autoincrement": false }, "updated_at": { "name": "updated_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": { "app_settings_key": { "name": "app_settings_key", "columns": [ "key" ] } }, "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": {} }, "challenge_session_answers": { "name": "challenge_session_answers", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "session_id": { "name": "session_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 }, "submit_request_id": { "name": "submit_request_id", "type": "varchar(80)", "primaryKey": false, "notNull": true, "autoincrement": false }, "answer_order": { "name": "answer_order", "type": "tinyint", "primaryKey": false, "notNull": true, "autoincrement": false }, "answer": { "name": "answer", "type": "varchar(500)", "primaryKey": false, "notNull": false, "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 }, "combo_count": { "name": "combo_count", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "result_snapshot": { "name": "result_snapshot", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "submitted_at": { "name": "submitted_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "uk_challenge_answer_session_question": { "name": "uk_challenge_answer_session_question", "columns": [ "session_id", "question_id" ], "isUnique": true }, "uk_challenge_answer_session_request": { "name": "uk_challenge_answer_session_request", "columns": [ "session_id", "submit_request_id" ], "isUnique": true }, "idx_challenge_answer_user_submitted": { "name": "idx_challenge_answer_user_submitted", "columns": [ "user_id", "submitted_at" ], "isUnique": false } }, "foreignKeys": { "challenge_session_answers_session_id_challenge_sessions_id_fk": { "name": "challenge_session_answers_session_id_challenge_sessions_id_fk", "tableFrom": "challenge_session_answers", "tableTo": "challenge_sessions", "columnsFrom": [ "session_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "challenge_session_answers_user_id_users_id_fk": { "name": "challenge_session_answers_user_id_users_id_fk", "tableFrom": "challenge_session_answers", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "challenge_session_answers_question_id_questions_id_fk": { "name": "challenge_session_answers_question_id_questions_id_fk", "tableFrom": "challenge_session_answers", "tableTo": "questions", "columnsFrom": [ "question_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "challenge_session_answers_id": { "name": "challenge_session_answers_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "challenge_sessions": { "name": "challenge_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 }, "track_id": { "name": "track_id", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "category_id": { "name": "category_id", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "chapter_id": { "name": "chapter_id", "type": "char(36)", "primaryKey": false, "notNull": false, "autoincrement": false }, "status": { "name": "status", "type": "enum('pending','in_progress','completed','abandoned','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 }, "question_ids": { "name": "question_ids", "type": "json", "primaryKey": false, "notNull": true, "autoincrement": false }, "total_questions": { "name": "total_questions", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 5 }, "answered_count": { "name": "answered_count", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "correct_count": { "name": "correct_count", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "high_reward_eligible": { "name": "high_reward_eligible", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 1 }, "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 }, "expires_at": { "name": "expires_at", "type": "datetime", "primaryKey": false, "notNull": false, "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_challenge_session_user_client_request": { "name": "uk_challenge_session_user_client_request", "columns": [ "user_id", "client_request_id" ], "isUnique": true }, "uk_challenge_session_user_complete_request": { "name": "uk_challenge_session_user_complete_request", "columns": [ "user_id", "complete_request_id" ], "isUnique": true }, "idx_challenge_session_user_status_created": { "name": "idx_challenge_session_user_status_created", "columns": [ "user_id", "status", "created_at" ], "isUnique": false }, "idx_challenge_session_chapter_status": { "name": "idx_challenge_session_chapter_status", "columns": [ "chapter_id", "status" ], "isUnique": false } }, "foreignKeys": { "challenge_sessions_user_id_users_id_fk": { "name": "challenge_sessions_user_id_users_id_fk", "tableFrom": "challenge_sessions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "challenge_sessions_category_id_categories_id_fk": { "name": "challenge_sessions_category_id_categories_id_fk", "tableFrom": "challenge_sessions", "tableTo": "categories", "columnsFrom": [ "category_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "challenge_sessions_chapter_id_skill_tree_id_fk": { "name": "challenge_sessions_chapter_id_skill_tree_id_fk", "tableFrom": "challenge_sessions", "tableTo": "skill_tree", "columnsFrom": [ "chapter_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "challenge_sessions_id": { "name": "challenge_sessions_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "inventory_transactions": { "name": "inventory_transactions", "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 }, "inventory_item_id": { "name": "inventory_item_id", "type": "char(36)", "primaryKey": false, "notNull": false, "autoincrement": false }, "item_id": { "name": "item_id", "type": "enum('coins','streak_shield','double_xp_potion','heart_supply','hint_feather','mascot_outfit')", "primaryKey": false, "notNull": true, "autoincrement": false }, "direction": { "name": "direction", "type": "enum('grant','consume','adjust')", "primaryKey": false, "notNull": true, "autoincrement": false }, "quantity_delta": { "name": "quantity_delta", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": false }, "balance_after": { "name": "balance_after", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false }, "source_type": { "name": "source_type", "type": "enum('challenge','daily_task','level_up','theme_node','chest','shop_purchase','ad_recovery','subscription','admin_grant','system_adjust','leaderboard_settlement')", "primaryKey": false, "notNull": true, "autoincrement": false }, "source_id": { "name": "source_id", "type": "varchar(120)", "primaryKey": false, "notNull": false, "autoincrement": false }, "idempotency_key": { "name": "idempotency_key", "type": "varchar(160)", "primaryKey": false, "notNull": false, "autoincrement": false }, "snapshot": { "name": "snapshot", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "uk_inventory_transaction_idempotency": { "name": "uk_inventory_transaction_idempotency", "columns": [ "user_id", "idempotency_key" ], "isUnique": true }, "idx_inventory_transaction_user_created": { "name": "idx_inventory_transaction_user_created", "columns": [ "user_id", "created_at" ], "isUnique": false }, "idx_inventory_transaction_source": { "name": "idx_inventory_transaction_source", "columns": [ "source_type", "source_id" ], "isUnique": false } }, "foreignKeys": { "inventory_transactions_user_id_users_id_fk": { "name": "inventory_transactions_user_id_users_id_fk", "tableFrom": "inventory_transactions", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "fk_inv_tx_item": { "name": "fk_inv_tx_item", "tableFrom": "inventory_transactions", "tableTo": "user_inventory_items", "columnsFrom": [ "inventory_item_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "inventory_transactions_id": { "name": "inventory_transactions_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 }, "group_id": { "name": "group_id", "type": "varchar(80)", "primaryKey": false, "notNull": false, "autoincrement": false }, "league": { "name": "league", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "reward_snapshot": { "name": "reward_snapshot", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "settled_at": { "name": "settled_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "week_start": { "name": "week_start", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "week_end": { "name": "week_end", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "uk_leaderboard_snapshot_user_week": { "name": "uk_leaderboard_snapshot_user_week", "columns": [ "user_id", "week_start" ], "isUnique": true }, "idx_leaderboard_snapshot_group_rank": { "name": "idx_leaderboard_snapshot_group_rank", "columns": [ "group_id", "week_start", "rank" ], "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": {} }, "reward_ledger": { "name": "reward_ledger", "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 }, "source_type": { "name": "source_type", "type": "enum('challenge_answer','challenge_completion','daily_task','streak_milestone','level_up','theme_node','knowledge_card','chest','shop_purchase','ad_recovery','leaderboard_settlement','subscription','admin_grant','system_adjust')", "primaryKey": false, "notNull": true, "autoincrement": false }, "source_id": { "name": "source_id", "type": "varchar(120)", "primaryKey": false, "notNull": false, "autoincrement": false }, "idempotency_key": { "name": "idempotency_key", "type": "varchar(160)", "primaryKey": false, "notNull": true, "autoincrement": false }, "status": { "name": "status", "type": "enum('pending','settling','completed','failed','reversed')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'pending'" }, "reward_snapshot": { "name": "reward_snapshot", "type": "json", "primaryKey": false, "notNull": true, "autoincrement": false }, "resource_deltas": { "name": "resource_deltas", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "state_before": { "name": "state_before", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "state_after": { "name": "state_after", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "failure_reason": { "name": "failure_reason", "type": "varchar(120)", "primaryKey": false, "notNull": false, "autoincrement": false }, "settled_at": { "name": "settled_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_reward_ledger_user_idempotency": { "name": "uk_reward_ledger_user_idempotency", "columns": [ "user_id", "idempotency_key" ], "isUnique": true }, "idx_reward_ledger_user_status_created": { "name": "idx_reward_ledger_user_status_created", "columns": [ "user_id", "status", "created_at" ], "isUnique": false }, "idx_reward_ledger_source": { "name": "idx_reward_ledger_source", "columns": [ "source_type", "source_id" ], "isUnique": false } }, "foreignKeys": { "reward_ledger_user_id_users_id_fk": { "name": "reward_ledger_user_id_users_id_fk", "tableFrom": "reward_ledger", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "reward_ledger_id": { "name": "reward_ledger_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_daily_progress": { "name": "user_daily_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 }, "progress_date": { "name": "progress_date", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "timezone": { "name": "timezone", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'UTC'" }, "first_challenge_session_id": { "name": "first_challenge_session_id", "type": "char(36)", "primaryKey": false, "notNull": false, "autoincrement": false }, "first_challenge_completed_at": { "name": "first_challenge_completed_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "challenge_sessions_completed": { "name": "challenge_sessions_completed", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "high_reward_sessions_max": { "name": "high_reward_sessions_max", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 3 }, "high_reward_sessions_used": { "name": "high_reward_sessions_used", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "high_reward_sessions_restored": { "name": "high_reward_sessions_restored", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "daily_tasks_completed": { "name": "daily_tasks_completed", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "daily_tasks_reward_claimed": { "name": "daily_tasks_reward_claimed", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "xp_earned": { "name": "xp_earned", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "coins_earned": { "name": "coins_earned", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "streak_counted": { "name": "streak_counted", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "metadata": { "name": "metadata", "type": "json", "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_daily_progress_user_date": { "name": "uk_daily_progress_user_date", "columns": [ "user_id", "progress_date" ], "isUnique": true }, "idx_daily_progress_date": { "name": "idx_daily_progress_date", "columns": [ "progress_date" ], "isUnique": false } }, "foreignKeys": { "user_daily_progress_user_id_users_id_fk": { "name": "user_daily_progress_user_id_users_id_fk", "tableFrom": "user_daily_progress", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "fk_daily_progress_session": { "name": "fk_daily_progress_session", "tableFrom": "user_daily_progress", "tableTo": "challenge_sessions", "columnsFrom": [ "first_challenge_session_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_daily_progress_id": { "name": "user_daily_progress_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_daily_tasks": { "name": "user_daily_tasks", "columns": { "id": { "name": "id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "daily_progress_id": { "name": "daily_progress_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "task_date": { "name": "task_date", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "task_id": { "name": "task_id", "type": "varchar(80)", "primaryKey": false, "notNull": true, "autoincrement": false }, "task_type": { "name": "task_type", "type": "enum('complete_challenge','earn_xp','answer_correct','review_explanation','use_item','watch_ad')", "primaryKey": false, "notNull": true, "autoincrement": false }, "target_count": { "name": "target_count", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 1 }, "current_count": { "name": "current_count", "type": "smallint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "status": { "name": "status", "type": "enum('active','completed','reward_claimed','expired')", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'active'" }, "reward_snapshot": { "name": "reward_snapshot", "type": "json", "primaryKey": false, "notNull": false, "autoincrement": false }, "completed_at": { "name": "completed_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "reward_claimed_at": { "name": "reward_claimed_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_daily_task_user_date_task": { "name": "uk_daily_task_user_date_task", "columns": [ "user_id", "task_date", "task_id" ], "isUnique": true }, "idx_daily_task_progress_status": { "name": "idx_daily_task_progress_status", "columns": [ "daily_progress_id", "status" ], "isUnique": false } }, "foreignKeys": { "user_daily_tasks_daily_progress_id_user_daily_progress_id_fk": { "name": "user_daily_tasks_daily_progress_id_user_daily_progress_id_fk", "tableFrom": "user_daily_tasks", "tableTo": "user_daily_progress", "columnsFrom": [ "daily_progress_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" }, "user_daily_tasks_user_id_users_id_fk": { "name": "user_daily_tasks_user_id_users_id_fk", "tableFrom": "user_daily_tasks", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_daily_tasks_id": { "name": "user_daily_tasks_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_inventory_items": { "name": "user_inventory_items", "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 }, "item_id": { "name": "item_id", "type": "enum('streak_shield','double_xp_potion','heart_supply','hint_feather','mascot_outfit')", "primaryKey": false, "notNull": true, "autoincrement": false }, "quantity": { "name": "quantity", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "active_until": { "name": "active_until", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "metadata": { "name": "metadata", "type": "json", "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_inventory_user_item": { "name": "uk_inventory_user_item", "columns": [ "user_id", "item_id" ], "isUnique": true }, "idx_inventory_user_active": { "name": "idx_inventory_user_active", "columns": [ "user_id", "active_until" ], "isUnique": false } }, "foreignKeys": { "user_inventory_items_user_id_users_id_fk": { "name": "user_inventory_items_user_id_users_id_fk", "tableFrom": "user_inventory_items", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_inventory_items_id": { "name": "user_inventory_items_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": {} }, "user_region_change_logs": { "name": "user_region_change_logs", "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 }, "from_region_code": { "name": "from_region_code", "type": "varchar(20)", "primaryKey": false, "notNull": false, "autoincrement": false }, "to_region_code": { "name": "to_region_code", "type": "varchar(20)", "primaryKey": false, "notNull": true, "autoincrement": false }, "changed_at": { "name": "changed_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "idx_region_change_user_changed": { "name": "idx_region_change_user_changed", "columns": [ "user_id", "changed_at" ], "isUnique": false } }, "foreignKeys": { "user_region_change_logs_user_id_users_id_fk": { "name": "user_region_change_logs_user_id_users_id_fk", "tableFrom": "user_region_change_logs", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_region_change_logs_id": { "name": "user_region_change_logs_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_wallets": { "name": "user_wallets", "columns": { "user_id": { "name": "user_id", "type": "char(36)", "primaryKey": false, "notNull": true, "autoincrement": false }, "coins_balance": { "name": "coins_balance", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "lifetime_coins_earned": { "name": "lifetime_coins_earned", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "lifetime_coins_spent": { "name": "lifetime_coins_spent", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 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": { "user_wallets_user_id_users_id_fk": { "name": "user_wallets_user_id_users_id_fk", "tableFrom": "user_wallets", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_wallets_user_id": { "name": "user_wallets_user_id", "columns": [ "user_id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user_weekly_xp": { "name": "user_weekly_xp", "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 }, "week_start": { "name": "week_start", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "week_end": { "name": "week_end", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "timezone": { "name": "timezone", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false, "default": "'UTC'" }, "xp_earned": { "name": "xp_earned", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "challenge_sessions_completed": { "name": "challenge_sessions_completed", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "group_id": { "name": "group_id", "type": "varchar(80)", "primaryKey": false, "notNull": false, "autoincrement": false }, "rank": { "name": "rank", "type": "int", "primaryKey": false, "notNull": false, "autoincrement": false }, "settled": { "name": "settled", "type": "tinyint", "primaryKey": false, "notNull": false, "autoincrement": false, "default": 0 }, "settled_at": { "name": "settled_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "last_xp_at": { "name": "last_xp_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "next_refresh_at": { "name": "next_refresh_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_weekly_xp_user_week": { "name": "uk_weekly_xp_user_week", "columns": [ "user_id", "week_start" ], "isUnique": true }, "idx_weekly_xp_group_rank": { "name": "idx_weekly_xp_group_rank", "columns": [ "group_id", "week_start", "xp_earned" ], "isUnique": false }, "idx_weekly_xp_week_settled": { "name": "idx_weekly_xp_week_settled", "columns": [ "week_start", "settled" ], "isUnique": false } }, "foreignKeys": { "user_weekly_xp_user_id_users_id_fk": { "name": "user_weekly_xp_user_id_users_id_fk", "tableFrom": "user_weekly_xp", "tableTo": "users", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_weekly_xp_id": { "name": "user_weekly_xp_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 }, "region_code": { "name": "region_code", "type": "varchar(20)", "primaryKey": false, "notNull": false, "autoincrement": false }, "region_selected_at": { "name": "region_selected_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "region_changed_at": { "name": "region_changed_at", "type": "datetime", "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 }, "idx_users_region": { "name": "idx_users_region", "columns": [ "region_code" ], "isUnique": false } }, "foreignKeys": {}, "compositePrimaryKeys": { "users_id": { "name": "users_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} } }, "views": {}, "_meta": { "schemas": {}, "tables": {}, "columns": {} }, "internal": { "tables": {}, "indexes": {} } }