{ "version": "5", "dialect": "mysql", "id": "97232350-6c6c-4c3e-98d6-c34d33d55a4d", "prevId": "b020bc0f-36bb-45fc-aad9-6cc6e6c99426", "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 }, "content": { "name": "content", "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": { "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": {} }, "class_enrollments": { "name": "class_enrollments", "columns": { "class_id": { "name": "class_id", "type": "varchar(128)", "primaryKey": false, "notNull": true, "autoincrement": false }, "student_id": { "name": "student_id", "type": "varchar(128)", "primaryKey": false, "notNull": true, "autoincrement": false }, "class_enrollment_status": { "name": "class_enrollment_status", "type": "enum('active','inactive')", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "'active'" }, "created_at": { "name": "created_at", "type": "timestamp", "primaryKey": false, "notNull": true, "autoincrement": false, "default": "(now())" } }, "indexes": { "class_enrollments_class_idx": { "name": "class_enrollments_class_idx", "columns": [ "class_id" ], "isUnique": false }, "class_enrollments_student_idx": { "name": "class_enrollments_student_idx", "columns": [ "student_id" ], "isUnique": false } }, "foreignKeys": { "ce_c_fk": { "name": "ce_c_fk", "tableFrom": "class_enrollments", "tableTo": "classes", "columnsFrom": [ "class_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" }, "ce_s_fk": { "name": "ce_s_fk", "tableFrom": "class_enrollments", "tableTo": "users", "columnsFrom": [ "student_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "class_enrollments_class_id_student_id_pk": { "name": "class_enrollments_class_id_student_id_pk", "columns": [ "class_id", "student_id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "class_schedule": { "name": "class_schedule", "columns": { "id": { "name": "id", "type": "varchar(128)", "primaryKey": false, "notNull": true, "autoincrement": false }, "class_id": { "name": "class_id", "type": "varchar(128)", "primaryKey": false, "notNull": true, "autoincrement": false }, "weekday": { "name": "weekday", "type": "int", "primaryKey": false, "notNull": true, "autoincrement": false }, "start_time": { "name": "start_time", "type": "varchar(5)", "primaryKey": false, "notNull": true, "autoincrement": false }, "end_time": { "name": "end_time", "type": "varchar(5)", "primaryKey": false, "notNull": true, "autoincrement": false }, "course": { "name": "course", "type": "varchar(255)", "primaryKey": false, "notNull": true, "autoincrement": false }, "location": { "name": "location", "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": { "class_schedule_class_idx": { "name": "class_schedule_class_idx", "columns": [ "class_id" ], "isUnique": false }, "class_schedule_class_day_idx": { "name": "class_schedule_class_day_idx", "columns": [ "class_id", "weekday" ], "isUnique": false } }, "foreignKeys": { "cs_c_fk": { "name": "cs_c_fk", "tableFrom": "class_schedule", "tableTo": "classes", "columnsFrom": [ "class_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "class_schedule_id": { "name": "class_schedule_id", "columns": [ "id" ] } }, "uniqueConstraints": {}, "checkConstraint": {} }, "classes": { "name": "classes", "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 }, "grade": { "name": "grade", "type": "varchar(50)", "primaryKey": false, "notNull": true, "autoincrement": false }, "homeroom": { "name": "homeroom", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "room": { "name": "room", "type": "varchar(50)", "primaryKey": false, "notNull": false, "autoincrement": false }, "teacher_id": { "name": "teacher_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": { "classes_teacher_idx": { "name": "classes_teacher_idx", "columns": [ "teacher_id" ], "isUnique": false }, "classes_grade_idx": { "name": "classes_grade_idx", "columns": [ "grade" ], "isUnique": false } }, "foreignKeys": { "classes_teacher_id_users_id_fk": { "name": "classes_teacher_id_users_id_fk", "tableFrom": "classes", "tableTo": "users", "columnsFrom": [ "teacher_id" ], "columnsTo": [ "id" ], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "classes_id": { "name": "classes_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 }, "chapter_id": { "name": "chapter_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 }, "kp_chapter_id_idx": { "name": "kp_chapter_id_idx", "columns": [ "chapter_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": {} } }