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`;
|
||||
Reference in New Issue
Block a user