CREATE TABLE `grades` ( `id` varchar(128) NOT NULL, `school_id` varchar(128) NOT NULL, `name` varchar(100) NOT NULL, `order` int NOT NULL DEFAULT 0, `grade_head_id` varchar(128), `teaching_head_id` varchar(128), `created_at` timestamp NOT NULL DEFAULT (now()), `updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT `grades_id` PRIMARY KEY(`id`) ); --> statement-breakpoint CREATE TABLE `schools` ( `id` varchar(128) NOT NULL, `name` varchar(255) NOT NULL, `code` varchar(50), `created_at` timestamp NOT NULL DEFAULT (now()), `updated_at` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT `schools_id` PRIMARY KEY(`id`), CONSTRAINT `schools_name_unique` UNIQUE(`name`), CONSTRAINT `schools_code_unique` UNIQUE(`code`) ); --> statement-breakpoint ALTER TABLE `classes` ADD `school_id` varchar(128);--> statement-breakpoint ALTER TABLE `classes` ADD `grade_id` varchar(128);--> statement-breakpoint ALTER TABLE `grades` ADD CONSTRAINT `g_s_fk` FOREIGN KEY (`school_id`) REFERENCES `schools`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE `grades` ADD CONSTRAINT `g_gh_fk` FOREIGN KEY (`grade_head_id`) REFERENCES `users`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint ALTER TABLE `grades` ADD CONSTRAINT `g_th_fk` FOREIGN KEY (`teaching_head_id`) REFERENCES `users`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint CREATE INDEX `grades_school_idx` ON `grades` (`school_id`);--> statement-breakpoint CREATE INDEX `grades_school_name_uniq` ON `grades` (`school_id`,`name`);--> statement-breakpoint CREATE INDEX `grades_grade_head_idx` ON `grades` (`grade_head_id`);--> statement-breakpoint CREATE INDEX `grades_teaching_head_idx` ON `grades` (`teaching_head_id`);--> statement-breakpoint CREATE INDEX `schools_name_idx` ON `schools` (`name`);--> statement-breakpoint CREATE INDEX `schools_code_idx` ON `schools` (`code`);--> statement-breakpoint ALTER TABLE `classes` ADD CONSTRAINT `c_s_fk` FOREIGN KEY (`school_id`) REFERENCES `schools`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint ALTER TABLE `classes` ADD CONSTRAINT `c_g_fk` FOREIGN KEY (`grade_id`) REFERENCES `grades`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint CREATE INDEX `classes_school_idx` ON `classes` (`school_id`);--> statement-breakpoint CREATE INDEX `classes_grade_id_idx` ON `classes` (`grade_id`);