Files
CICD/drizzle/meta/0002_snapshot.json
SpecialX 13e91e628d
Some checks failed
CI / build-and-test (push) Failing after 3m34s
CI / deploy (push) Has been skipped
Merge exams grading into homework
Redirect /teacher/exams/grading* to /teacher/homework/submissions; remove exam grading UI/actions/data-access; add homework student workflow and update design docs.
2025-12-31 11:59:03 +08:00

1885 lines
47 KiB
JSON

{
"version": "5",
"dialect": "mysql",
"id": "e6118000-4093-4c16-a01c-e33a2a5f0875",
"prevId": "c1afed29-ad52-484d-a6a1-272b6dec6a24",
"tables": {
"accounts": {
"name": "accounts",
"columns": {
"userId": {
"name": "userId",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"provider": {
"name": "provider",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"providerAccountId": {
"name": "providerAccountId",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"refresh_token": {
"name": "refresh_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"access_token": {
"name": "access_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"token_type": {
"name": "token_type",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"scope": {
"name": "scope",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"id_token": {
"name": "id_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"session_state": {
"name": "session_state",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {
"account_userId_idx": {
"name": "account_userId_idx",
"columns": [
"userId"
],
"isUnique": false
}
},
"foreignKeys": {
"accounts_userId_users_id_fk": {
"name": "accounts_userId_users_id_fk",
"tableFrom": "accounts",
"tableTo": "users",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"accounts_provider_providerAccountId_pk": {
"name": "accounts_provider_providerAccountId_pk",
"columns": [
"provider",
"providerAccountId"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"chapters": {
"name": "chapters",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"textbook_id": {
"name": "textbook_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"order": {
"name": "order",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"parent_id": {
"name": "parent_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"textbook_idx": {
"name": "textbook_idx",
"columns": [
"textbook_id"
],
"isUnique": false
},
"parent_id_idx": {
"name": "parent_id_idx",
"columns": [
"parent_id"
],
"isUnique": false
}
},
"foreignKeys": {
"chapters_textbook_id_textbooks_id_fk": {
"name": "chapters_textbook_id_textbooks_id_fk",
"tableFrom": "chapters",
"tableTo": "textbooks",
"columnsFrom": [
"textbook_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"chapters_id": {
"name": "chapters_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"exam_questions": {
"name": "exam_questions",
"columns": {
"exam_id": {
"name": "exam_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"question_id": {
"name": "question_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"score": {
"name": "score",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"order": {
"name": "order",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
}
},
"indexes": {},
"foreignKeys": {
"exam_questions_exam_id_exams_id_fk": {
"name": "exam_questions_exam_id_exams_id_fk",
"tableFrom": "exam_questions",
"tableTo": "exams",
"columnsFrom": [
"exam_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"exam_questions_question_id_questions_id_fk": {
"name": "exam_questions_question_id_questions_id_fk",
"tableFrom": "exam_questions",
"tableTo": "questions",
"columnsFrom": [
"question_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"exam_questions_exam_id_question_id_pk": {
"name": "exam_questions_exam_id_question_id_pk",
"columns": [
"exam_id",
"question_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"exam_submissions": {
"name": "exam_submissions",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"exam_id": {
"name": "exam_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"student_id": {
"name": "student_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"score": {
"name": "score",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"status": {
"name": "status",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "'started'"
},
"submitted_at": {
"name": "submitted_at",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"exam_student_idx": {
"name": "exam_student_idx",
"columns": [
"exam_id",
"student_id"
],
"isUnique": false
}
},
"foreignKeys": {
"exam_submissions_exam_id_exams_id_fk": {
"name": "exam_submissions_exam_id_exams_id_fk",
"tableFrom": "exam_submissions",
"tableTo": "exams",
"columnsFrom": [
"exam_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"exam_submissions_student_id_users_id_fk": {
"name": "exam_submissions_student_id_users_id_fk",
"tableFrom": "exam_submissions",
"tableTo": "users",
"columnsFrom": [
"student_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"exam_submissions_id": {
"name": "exam_submissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"exams": {
"name": "exams",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"structure": {
"name": "structure",
"type": "json",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"creator_id": {
"name": "creator_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"start_time": {
"name": "start_time",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"end_time": {
"name": "end_time",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"status": {
"name": "status",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "'draft'"
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {
"exams_creator_id_users_id_fk": {
"name": "exams_creator_id_users_id_fk",
"tableFrom": "exams",
"tableTo": "users",
"columnsFrom": [
"creator_id"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"exams_id": {
"name": "exams_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"homework_answers": {
"name": "homework_answers",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"submission_id": {
"name": "submission_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"question_id": {
"name": "question_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"answer_content": {
"name": "answer_content",
"type": "json",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"score": {
"name": "score",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"feedback": {
"name": "feedback",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"hw_answer_submission_idx": {
"name": "hw_answer_submission_idx",
"columns": [
"submission_id"
],
"isUnique": false
},
"hw_answer_submission_question_idx": {
"name": "hw_answer_submission_question_idx",
"columns": [
"submission_id",
"question_id"
],
"isUnique": false
}
},
"foreignKeys": {
"hw_ans_sub_fk": {
"name": "hw_ans_sub_fk",
"tableFrom": "homework_answers",
"tableTo": "homework_submissions",
"columnsFrom": [
"submission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"hw_ans_q_fk": {
"name": "hw_ans_q_fk",
"tableFrom": "homework_answers",
"tableTo": "questions",
"columnsFrom": [
"question_id"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"homework_answers_id": {
"name": "homework_answers_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"homework_assignment_questions": {
"name": "homework_assignment_questions",
"columns": {
"assignment_id": {
"name": "assignment_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"question_id": {
"name": "question_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"score": {
"name": "score",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"order": {
"name": "order",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
}
},
"indexes": {
"hw_assignment_questions_assignment_idx": {
"name": "hw_assignment_questions_assignment_idx",
"columns": [
"assignment_id"
],
"isUnique": false
}
},
"foreignKeys": {
"hw_aq_a_fk": {
"name": "hw_aq_a_fk",
"tableFrom": "homework_assignment_questions",
"tableTo": "homework_assignments",
"columnsFrom": [
"assignment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"hw_aq_q_fk": {
"name": "hw_aq_q_fk",
"tableFrom": "homework_assignment_questions",
"tableTo": "questions",
"columnsFrom": [
"question_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"homework_assignment_questions_assignment_id_question_id_pk": {
"name": "homework_assignment_questions_assignment_id_question_id_pk",
"columns": [
"assignment_id",
"question_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"homework_assignment_targets": {
"name": "homework_assignment_targets",
"columns": {
"assignment_id": {
"name": "assignment_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"student_id": {
"name": "student_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
}
},
"indexes": {
"hw_assignment_targets_assignment_idx": {
"name": "hw_assignment_targets_assignment_idx",
"columns": [
"assignment_id"
],
"isUnique": false
},
"hw_assignment_targets_student_idx": {
"name": "hw_assignment_targets_student_idx",
"columns": [
"student_id"
],
"isUnique": false
}
},
"foreignKeys": {
"hw_at_a_fk": {
"name": "hw_at_a_fk",
"tableFrom": "homework_assignment_targets",
"tableTo": "homework_assignments",
"columnsFrom": [
"assignment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"hw_at_s_fk": {
"name": "hw_at_s_fk",
"tableFrom": "homework_assignment_targets",
"tableTo": "users",
"columnsFrom": [
"student_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"homework_assignment_targets_assignment_id_student_id_pk": {
"name": "homework_assignment_targets_assignment_id_student_id_pk",
"columns": [
"assignment_id",
"student_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"homework_assignments": {
"name": "homework_assignments",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"source_exam_id": {
"name": "source_exam_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"structure": {
"name": "structure",
"type": "json",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"status": {
"name": "status",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "'draft'"
},
"creator_id": {
"name": "creator_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"available_at": {
"name": "available_at",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"due_at": {
"name": "due_at",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"allow_late": {
"name": "allow_late",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"late_due_at": {
"name": "late_due_at",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"max_attempts": {
"name": "max_attempts",
"type": "int",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 1
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"hw_assignment_creator_idx": {
"name": "hw_assignment_creator_idx",
"columns": [
"creator_id"
],
"isUnique": false
},
"hw_assignment_source_exam_idx": {
"name": "hw_assignment_source_exam_idx",
"columns": [
"source_exam_id"
],
"isUnique": false
},
"hw_assignment_status_idx": {
"name": "hw_assignment_status_idx",
"columns": [
"status"
],
"isUnique": false
}
},
"foreignKeys": {
"hw_asg_exam_fk": {
"name": "hw_asg_exam_fk",
"tableFrom": "homework_assignments",
"tableTo": "exams",
"columnsFrom": [
"source_exam_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"hw_asg_creator_fk": {
"name": "hw_asg_creator_fk",
"tableFrom": "homework_assignments",
"tableTo": "users",
"columnsFrom": [
"creator_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"homework_assignments_id": {
"name": "homework_assignments_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"homework_submissions": {
"name": "homework_submissions",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"assignment_id": {
"name": "assignment_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"student_id": {
"name": "student_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"attempt_no": {
"name": "attempt_no",
"type": "int",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 1
},
"score": {
"name": "score",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"status": {
"name": "status",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "'started'"
},
"started_at": {
"name": "started_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"submitted_at": {
"name": "submitted_at",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"is_late": {
"name": "is_late",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"hw_assignment_student_idx": {
"name": "hw_assignment_student_idx",
"columns": [
"assignment_id",
"student_id"
],
"isUnique": false
}
},
"foreignKeys": {
"hw_sub_a_fk": {
"name": "hw_sub_a_fk",
"tableFrom": "homework_submissions",
"tableTo": "homework_assignments",
"columnsFrom": [
"assignment_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"hw_sub_student_fk": {
"name": "hw_sub_student_fk",
"tableFrom": "homework_submissions",
"tableTo": "users",
"columnsFrom": [
"student_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"homework_submissions_id": {
"name": "homework_submissions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"knowledge_points": {
"name": "knowledge_points",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"parent_id": {
"name": "parent_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"level": {
"name": "level",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"order": {
"name": "order",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"parent_id_idx": {
"name": "parent_id_idx",
"columns": [
"parent_id"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {
"knowledge_points_id": {
"name": "knowledge_points_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"questions": {
"name": "questions",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"content": {
"name": "content",
"type": "json",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "enum('single_choice','multiple_choice','text','judgment','composite')",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"difficulty": {
"name": "difficulty",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": 1
},
"parent_id": {
"name": "parent_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"author_id": {
"name": "author_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"parent_id_idx": {
"name": "parent_id_idx",
"columns": [
"parent_id"
],
"isUnique": false
},
"author_id_idx": {
"name": "author_id_idx",
"columns": [
"author_id"
],
"isUnique": false
}
},
"foreignKeys": {
"questions_author_id_users_id_fk": {
"name": "questions_author_id_users_id_fk",
"tableFrom": "questions",
"tableTo": "users",
"columnsFrom": [
"author_id"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"questions_id": {
"name": "questions_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"questions_to_knowledge_points": {
"name": "questions_to_knowledge_points",
"columns": {
"question_id": {
"name": "question_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"knowledge_point_id": {
"name": "knowledge_point_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"kp_idx": {
"name": "kp_idx",
"columns": [
"knowledge_point_id"
],
"isUnique": false
}
},
"foreignKeys": {
"q_kp_qid_fk": {
"name": "q_kp_qid_fk",
"tableFrom": "questions_to_knowledge_points",
"tableTo": "questions",
"columnsFrom": [
"question_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"q_kp_kpid_fk": {
"name": "q_kp_kpid_fk",
"tableFrom": "questions_to_knowledge_points",
"tableTo": "knowledge_points",
"columnsFrom": [
"knowledge_point_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"questions_to_knowledge_points_question_id_knowledge_point_id_pk": {
"name": "questions_to_knowledge_points_question_id_knowledge_point_id_pk",
"columns": [
"question_id",
"knowledge_point_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"roles": {
"name": "roles",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"description": {
"name": "description",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"roles_id": {
"name": "roles_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"roles_name_unique": {
"name": "roles_name_unique",
"columns": [
"name"
]
}
},
"checkConstraint": {}
},
"sessions": {
"name": "sessions",
"columns": {
"sessionToken": {
"name": "sessionToken",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"userId": {
"name": "userId",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"session_userId_idx": {
"name": "session_userId_idx",
"columns": [
"userId"
],
"isUnique": false
}
},
"foreignKeys": {
"sessions_userId_users_id_fk": {
"name": "sessions_userId_users_id_fk",
"tableFrom": "sessions",
"tableTo": "users",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"sessions_sessionToken": {
"name": "sessions_sessionToken",
"columns": [
"sessionToken"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"submission_answers": {
"name": "submission_answers",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"submission_id": {
"name": "submission_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"question_id": {
"name": "question_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"answer_content": {
"name": "answer_content",
"type": "json",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"score": {
"name": "score",
"type": "int",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"feedback": {
"name": "feedback",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"submission_idx": {
"name": "submission_idx",
"columns": [
"submission_id"
],
"isUnique": false
}
},
"foreignKeys": {
"submission_answers_submission_id_exam_submissions_id_fk": {
"name": "submission_answers_submission_id_exam_submissions_id_fk",
"tableFrom": "submission_answers",
"tableTo": "exam_submissions",
"columnsFrom": [
"submission_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"submission_answers_question_id_questions_id_fk": {
"name": "submission_answers_question_id_questions_id_fk",
"tableFrom": "submission_answers",
"tableTo": "questions",
"columnsFrom": [
"question_id"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"submission_answers_id": {
"name": "submission_answers_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"textbooks": {
"name": "textbooks",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"subject": {
"name": "subject",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"grade": {
"name": "grade",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"publisher": {
"name": "publisher",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"textbooks_id": {
"name": "textbooks_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"emailVerified": {
"name": "emailVerified",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"image": {
"name": "image",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"role": {
"name": "role",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "'student'"
},
"password": {
"name": "password",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "(now())"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"onUpdate": true,
"default": "(now())"
}
},
"indexes": {
"email_idx": {
"name": "email_idx",
"columns": [
"email"
],
"isUnique": false
}
},
"foreignKeys": {},
"compositePrimaryKeys": {
"users_id": {
"name": "users_id",
"columns": [
"id"
]
}
},
"uniqueConstraints": {
"users_email_unique": {
"name": "users_email_unique",
"columns": [
"email"
]
}
},
"checkConstraint": {}
},
"users_to_roles": {
"name": "users_to_roles",
"columns": {
"user_id": {
"name": "user_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role_id": {
"name": "role_id",
"type": "varchar(128)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"user_id_idx": {
"name": "user_id_idx",
"columns": [
"user_id"
],
"isUnique": false
}
},
"foreignKeys": {
"users_to_roles_user_id_users_id_fk": {
"name": "users_to_roles_user_id_users_id_fk",
"tableFrom": "users_to_roles",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"users_to_roles_role_id_roles_id_fk": {
"name": "users_to_roles_role_id_roles_id_fk",
"tableFrom": "users_to_roles",
"tableTo": "roles",
"columnsFrom": [
"role_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"users_to_roles_user_id_role_id_pk": {
"name": "users_to_roles_user_id_role_id_pk",
"columns": [
"user_id",
"role_id"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
},
"verificationTokens": {
"name": "verificationTokens",
"columns": {
"identifier": {
"name": "identifier",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"token": {
"name": "token",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"verificationTokens_identifier_token_pk": {
"name": "verificationTokens_identifier_token_pk",
"columns": [
"identifier",
"token"
]
}
},
"uniqueConstraints": {},
"checkConstraint": {}
}
},
"views": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"tables": {},
"indexes": {}
}
}