{ "version": "5", "dialect": "mysql", "id": "344969b3-8a75-4900-b08f-c3407340d1c4", "prevId": "a044f535-beea-4fe6-8db5-3ae0019977de", "tables": { "activation_code": { "name": "activation_code", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "child_user_id": { "name": "child_user_id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "code_hash": { "name": "code_hash", "type": "varchar(64)", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_by": { "name": "created_by", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "expires_at": { "name": "expires_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false }, "used_at": { "name": "used_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false } }, "indexes": {}, "foreignKeys": { "activation_code_child_user_id_user_id_fk": { "name": "activation_code_child_user_id_user_id_fk", "tableFrom": "activation_code", "tableTo": "user", "columnsFrom": [ "child_user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "activation_code_created_by_user_id_fk": { "name": "activation_code_created_by_user_id_fk", "tableFrom": "activation_code", "tableTo": "user", "columnsFrom": [ "created_by" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "activation_code_id": { "name": "activation_code_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "family": { "name": "family", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "name": { "name": "name", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": {}, "foreignKeys": {}, "compositePrimaryKeys": { "family_id": { "name": "family_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "photo": { "name": "photo", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "task_instance_id": { "name": "task_instance_id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "oss_key": { "name": "oss_key", "type": "varchar(300)", "primaryKey": false, "notNull": true, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "idx_photo_instance": { "name": "idx_photo_instance", "columns": [ "task_instance_id" ], "isUnique": false } }, "foreignKeys": { "photo_task_instance_id_task_instance_id_fk": { "name": "photo_task_instance_id_task_instance_id_fk", "tableFrom": "photo", "tableTo": "task_instance", "columnsFrom": [ "task_instance_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "photo_id": { "name": "photo_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "session": { "name": "session", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "user_id": { "name": "user_id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "token_hash": { "name": "token_hash", "type": "varchar(64)", "primaryKey": false, "notNull": true, "autoincrement": false }, "device_label": { "name": "device_label", "type": "varchar(100)", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" }, "expires_at": { "name": "expires_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false } }, "indexes": { "uq_session_token": { "name": "uq_session_token", "columns": [ "token_hash" ], "isUnique": true }, "idx_session_user": { "name": "idx_session_user", "columns": [ "user_id" ], "isUnique": false } }, "foreignKeys": { "session_user_id_user_id_fk": { "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", "columnsFrom": [ "user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "session_id": { "name": "session_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "task_instance": { "name": "task_instance", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "child_user_id": { "name": "child_user_id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "date": { "name": "date", "type": "date", "primaryKey": false, "notNull": true, "autoincrement": false }, "title": { "name": "title", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "subject": { "name": "subject", "type": "enum('chinese','math','english','exercise','other')", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "'other'" }, "requires_photo": { "name": "requires_photo", "type": "boolean", "primaryKey": false, "notNull": true, "autoincrement": false, "default": false }, "status": { "name": "status", "type": "enum('pending','done')", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "'pending'" }, "is_makeup": { "name": "is_makeup", "type": "boolean", "primaryKey": false, "notNull": true, "autoincrement": false, "default": false }, "done_at": { "name": "done_at", "type": "datetime", "primaryKey": false, "notNull": false, "autoincrement": false }, "sort_order": { "name": "sort_order", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": false, "default": 0 }, "source_template_id": { "name": "source_template_id", "type": "bigint", "primaryKey": false, "notNull": false, "autoincrement": false }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "idx_instance_child_date": { "name": "idx_instance_child_date", "columns": [ "child_user_id", "date" ], "isUnique": false } }, "foreignKeys": { "task_instance_child_user_id_user_id_fk": { "name": "task_instance_child_user_id_user_id_fk", "tableFrom": "task_instance", "tableTo": "user", "columnsFrom": [ "child_user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "task_instance_id": { "name": "task_instance_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "task_template": { "name": "task_template", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "child_user_id": { "name": "child_user_id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "dow": { "name": "dow", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": false }, "title": { "name": "title", "type": "varchar(100)", "primaryKey": false, "notNull": true, "autoincrement": false }, "subject": { "name": "subject", "type": "enum('chinese','math','english','exercise','other')", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "'other'" }, "requires_photo": { "name": "requires_photo", "type": "boolean", "primaryKey": false, "notNull": true, "autoincrement": false, "default": false }, "sort_order": { "name": "sort_order", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": false, "default": 0 }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "idx_template_child_dow": { "name": "idx_template_child_dow", "columns": [ "child_user_id", "dow" ], "isUnique": false } }, "foreignKeys": { "task_template_child_user_id_user_id_fk": { "name": "task_template_child_user_id_user_id_fk", "tableFrom": "task_template", "tableTo": "user", "columnsFrom": [ "child_user_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "task_template_id": { "name": "task_template_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "user": { "name": "user", "columns": { "id": { "name": "id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": true }, "family_id": { "name": "family_id", "type": "bigint", "primaryKey": false, "notNull": true, "autoincrement": false }, "role": { "name": "role", "type": "enum('parent','child')", "primaryKey": false, "notNull": true, "autoincrement": false }, "display_name": { "name": "display_name", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "phone": { "name": "phone", "type": "varchar(20)", "primaryKey": false, "notNull": false, "autoincrement": false }, "password_hash": { "name": "password_hash", "type": "varchar(100)", "primaryKey": false, "notNull": false, "autoincrement": false }, "sort_order": { "name": "sort_order", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": false, "default": 0 }, "created_at": { "name": "created_at", "type": "datetime", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "CURRENT_TIMESTAMP" } }, "indexes": { "uq_user_phone": { "name": "uq_user_phone", "columns": [ "phone" ], "isUnique": true } }, "foreignKeys": { "user_family_id_family_id_fk": { "name": "user_family_id_family_id_fk", "tableFrom": "user", "tableTo": "family", "columnsFrom": [ "family_id" ], "columnsTo": [ "id" ], "onDelete": "no action", "onUpdate": "no action" } }, "compositePrimaryKeys": { "user_id": { "name": "user_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} } }, "views": {}, "_meta": { "schemas": {}, "tables": {}, "columns": {} }, "internal": { "tables": {}, "indexes": {} } }