This commit is contained in:
88
drizzle/0009_smart_mephistopheles.sql
Normal file
88
drizzle/0009_smart_mephistopheles.sql
Normal file
@@ -0,0 +1,88 @@
|
||||
SET @has_exams_subject := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'exams'
|
||||
AND COLUMN_NAME = 'subject_id'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_exams_subject = 0, 'ALTER TABLE `exams` ADD `subject_id` varchar(128);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_exams_grade := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'exams'
|
||||
AND COLUMN_NAME = 'grade_id'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_exams_grade = 0, 'ALTER TABLE `exams` ADD `grade_id` varchar(128);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_kp_anchor := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'knowledge_points'
|
||||
AND COLUMN_NAME = 'anchor_text'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_kp_anchor = 0, 'ALTER TABLE `knowledge_points` ADD `anchor_text` varchar(255);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_exams_subject_fk := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'exams'
|
||||
AND CONSTRAINT_NAME = 'exams_subject_id_subjects_id_fk'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_exams_subject_fk = 0, 'ALTER TABLE `exams` ADD CONSTRAINT `exams_subject_id_subjects_id_fk` FOREIGN KEY (`subject_id`) REFERENCES `subjects`(`id`) ON DELETE no action ON UPDATE no action;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_exams_grade_fk := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'exams'
|
||||
AND CONSTRAINT_NAME = 'exams_grade_id_grades_id_fk'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_exams_grade_fk = 0, 'ALTER TABLE `exams` ADD CONSTRAINT `exams_grade_id_grades_id_fk` FOREIGN KEY (`grade_id`) REFERENCES `grades`(`id`) ON DELETE no action ON UPDATE no action;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_exams_subject_idx := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'exams'
|
||||
AND INDEX_NAME = 'exams_subject_idx'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_exams_subject_idx = 0, 'CREATE INDEX `exams_subject_idx` ON `exams` (`subject_id`);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_exams_grade_idx := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'exams'
|
||||
AND INDEX_NAME = 'exams_grade_idx'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_exams_grade_idx = 0, 'CREATE INDEX `exams_grade_idx` ON `exams` (`grade_id`);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
INSERT IGNORE INTO `roles` (`id`, `name`, `created_at`, `updated_at`)
|
||||
SELECT UUID(), LOWER(TRIM(`role`)), NOW(), NOW()
|
||||
FROM `users`
|
||||
WHERE `role` IS NOT NULL AND TRIM(`role`) <> '';--> statement-breakpoint
|
||||
INSERT IGNORE INTO `users_to_roles` (`user_id`, `role_id`)
|
||||
SELECT `users`.`id`, `roles`.`id`
|
||||
FROM `users`
|
||||
INNER JOIN `roles` ON `roles`.`name` = LOWER(TRIM(`users`.`role`))
|
||||
WHERE `users`.`role` IS NOT NULL AND TRIM(`users`.`role`) <> '';--> statement-breakpoint
|
||||
ALTER TABLE `users` DROP COLUMN `role`;
|
||||
110
drizzle/0010_subject_id_switch.sql
Normal file
110
drizzle/0010_subject_id_switch.sql
Normal file
@@ -0,0 +1,110 @@
|
||||
SET @has_subject_id := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'class_subject_teachers'
|
||||
AND COLUMN_NAME = 'subject_id'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_subject_id = 0, 'ALTER TABLE `class_subject_teachers` ADD COLUMN `subject_id` VARCHAR(128) NULL;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
INSERT INTO `subjects` (`id`, `name`, `code`)
|
||||
SELECT UUID(), '语文', 'CHINESE' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '语文' OR `code` = 'CHINESE')
|
||||
UNION ALL
|
||||
SELECT UUID(), '数学', 'MATH' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '数学' OR `code` = 'MATH')
|
||||
UNION ALL
|
||||
SELECT UUID(), '英语', 'ENG' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '英语' OR `code` = 'ENG')
|
||||
UNION ALL
|
||||
SELECT UUID(), '美术', 'ART' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '美术' OR `code` = 'ART')
|
||||
UNION ALL
|
||||
SELECT UUID(), '体育', 'PE' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '体育' OR `code` = 'PE')
|
||||
UNION ALL
|
||||
SELECT UUID(), '科学', 'SCI' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '科学' OR `code` = 'SCI')
|
||||
UNION ALL
|
||||
SELECT UUID(), '社会', 'SOC' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '社会' OR `code` = 'SOC')
|
||||
UNION ALL
|
||||
SELECT UUID(), '音乐', 'MUSIC' FROM DUAL
|
||||
WHERE NOT EXISTS (SELECT 1 FROM `subjects` WHERE `name` = '音乐' OR `code` = 'MUSIC');--> statement-breakpoint
|
||||
|
||||
SET @has_subject_col := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'class_subject_teachers'
|
||||
AND COLUMN_NAME = 'subject'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@has_subject_col = 1, '
|
||||
UPDATE `class_subject_teachers` cst
|
||||
JOIN `subjects` s ON (
|
||||
s.`name` = cst.`subject`
|
||||
OR s.`code` = CASE cst.`subject`
|
||||
WHEN ''语文'' THEN ''CHINESE''
|
||||
WHEN ''数学'' THEN ''MATH''
|
||||
WHEN ''英语'' THEN ''ENG''
|
||||
WHEN ''美术'' THEN ''ART''
|
||||
WHEN ''体育'' THEN ''PE''
|
||||
WHEN ''科学'' THEN ''SCI''
|
||||
WHEN ''社会'' THEN ''SOC''
|
||||
WHEN ''音乐'' THEN ''MUSIC''
|
||||
ELSE NULL
|
||||
END
|
||||
)
|
||||
SET cst.`subject_id` = s.`id`
|
||||
WHERE cst.`subject_id` IS NULL;
|
||||
', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @subject_id_nulls := (
|
||||
SELECT COUNT(*) FROM `class_subject_teachers`
|
||||
WHERE `subject_id` IS NULL
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@subject_id_nulls = 0, 'ALTER TABLE `class_subject_teachers` MODIFY COLUMN `subject_id` VARCHAR(128) NOT NULL;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @sql := IF(@subject_id_nulls = 0, 'ALTER TABLE `class_subject_teachers` DROP PRIMARY KEY;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
SET @sql := IF(@subject_id_nulls = 0, 'ALTER TABLE `class_subject_teachers` ADD PRIMARY KEY (`class_id`, `subject_id`);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @sql := IF(@subject_id_nulls = 0 AND @has_subject_col = 1, 'ALTER TABLE `class_subject_teachers` DROP COLUMN `subject`;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_subject_id_idx := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'class_subject_teachers'
|
||||
AND INDEX_NAME = 'class_subject_teachers_subject_id_idx'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@subject_id_nulls = 0 AND @has_subject_id_idx = 0, 'CREATE INDEX `class_subject_teachers_subject_id_idx` ON `class_subject_teachers` (`subject_id`);', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;--> statement-breakpoint
|
||||
|
||||
SET @has_subject_fk := (
|
||||
SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'class_subject_teachers'
|
||||
AND CONSTRAINT_NAME = 'cst_s_fk'
|
||||
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
|
||||
);--> statement-breakpoint
|
||||
SET @sql := IF(@subject_id_nulls = 0 AND @has_subject_fk = 0, 'ALTER TABLE `class_subject_teachers` ADD CONSTRAINT `cst_s_fk` FOREIGN KEY (`subject_id`) REFERENCES `subjects`(`id`) ON DELETE CASCADE;', 'SELECT 1');--> statement-breakpoint
|
||||
PREPARE stmt FROM @sql;--> statement-breakpoint
|
||||
EXECUTE stmt;--> statement-breakpoint
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -2,7 +2,7 @@
|
||||
"version": "5",
|
||||
"dialect": "mysql",
|
||||
"id": "2cf4c7e4-f538-499e-a5a5-9281d556bc9d",
|
||||
"prevId": "5eaf9185-8a1e-4e35-8144-553aec7ff31f",
|
||||
"prevId": "a6d95d47-4400-464e-bc53-45735dd6e3e3",
|
||||
"tables": {
|
||||
"academic_years": {
|
||||
"name": "academic_years",
|
||||
@@ -3068,4 +3068,4 @@
|
||||
"tables": {},
|
||||
"indexes": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"version": "5",
|
||||
"dialect": "mysql",
|
||||
"id": "5eaf9185-8a1e-4e35-8144-553aec7ff31f",
|
||||
"prevId": "3b23e056-3d79-4ea9-a03e-d1b5d56bafda",
|
||||
"id": "551f3408-945e-4f1d-984c-bfd35fe9d0ea",
|
||||
"prevId": "2cf4c7e4-f538-499e-a5a5-9281d556bc9d",
|
||||
"tables": {
|
||||
"academic_years": {
|
||||
"name": "academic_years",
|
||||
@@ -1180,6 +1180,20 @@
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"subject_id": {
|
||||
"name": "subject_id",
|
||||
"type": "varchar(128)",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"grade_id": {
|
||||
"name": "grade_id",
|
||||
"type": "varchar(128)",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"start_time": {
|
||||
"name": "start_time",
|
||||
"type": "timestamp",
|
||||
@@ -1220,7 +1234,22 @@
|
||||
"default": "(now())"
|
||||
}
|
||||
},
|
||||
"indexes": {},
|
||||
"indexes": {
|
||||
"exams_subject_idx": {
|
||||
"name": "exams_subject_idx",
|
||||
"columns": [
|
||||
"subject_id"
|
||||
],
|
||||
"isUnique": false
|
||||
},
|
||||
"exams_grade_idx": {
|
||||
"name": "exams_grade_idx",
|
||||
"columns": [
|
||||
"grade_id"
|
||||
],
|
||||
"isUnique": false
|
||||
}
|
||||
},
|
||||
"foreignKeys": {
|
||||
"exams_creator_id_users_id_fk": {
|
||||
"name": "exams_creator_id_users_id_fk",
|
||||
@@ -1234,6 +1263,32 @@
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
},
|
||||
"exams_subject_id_subjects_id_fk": {
|
||||
"name": "exams_subject_id_subjects_id_fk",
|
||||
"tableFrom": "exams",
|
||||
"tableTo": "subjects",
|
||||
"columnsFrom": [
|
||||
"subject_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
},
|
||||
"exams_grade_id_grades_id_fk": {
|
||||
"name": "exams_grade_id_grades_id_fk",
|
||||
"tableFrom": "exams",
|
||||
"tableTo": "grades",
|
||||
"columnsFrom": [
|
||||
"grade_id"
|
||||
],
|
||||
"columnsTo": [
|
||||
"id"
|
||||
],
|
||||
"onDelete": "no action",
|
||||
"onUpdate": "no action"
|
||||
}
|
||||
},
|
||||
"compositePrimaryKeys": {
|
||||
@@ -2009,6 +2064,13 @@
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"anchor_text": {
|
||||
"name": "anchor_text",
|
||||
"type": "varchar(255)",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"parent_id": {
|
||||
"name": "parent_id",
|
||||
"type": "varchar(128)",
|
||||
@@ -2765,14 +2827,6 @@
|
||||
"notNull": false,
|
||||
"autoincrement": false
|
||||
},
|
||||
"role": {
|
||||
"name": "role",
|
||||
"type": "varchar(50)",
|
||||
"primaryKey": false,
|
||||
"notNull": false,
|
||||
"autoincrement": false,
|
||||
"default": "'student'"
|
||||
},
|
||||
"password": {
|
||||
"name": "password",
|
||||
"type": "varchar(255)",
|
||||
@@ -3006,4 +3060,4 @@
|
||||
"tables": {},
|
||||
"indexes": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,20 @@
|
||||
"when": 1768470966367,
|
||||
"tag": "0008_thin_madrox",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 9,
|
||||
"version": "5",
|
||||
"when": 1772162908476,
|
||||
"tag": "0009_smart_mephistopheles",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 10,
|
||||
"version": "5",
|
||||
"when": 1772439600000,
|
||||
"tag": "0010_subject_id_switch",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user