ALTER TABLE `student_records` ADD `ownerId` int NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD `username` varchar(64);--> statement-breakpoint
ALTER TABLE `users` ADD `passwordHash` varchar(255);--> statement-breakpoint
ALTER TABLE `users` ADD `isActive` boolean DEFAULT true NOT NULL;--> statement-breakpoint
ALTER TABLE `users` ADD CONSTRAINT `users_username_unique` UNIQUE(`username`);--> statement-breakpoint
ALTER TABLE `student_records` ADD `ownerId` int;--> statement-breakpoint
INSERT INTO `users` (`openId`, `username`, `name`, `loginMethod`, `role`, `isActive`, `lastSignedIn`)
VALUES ('local-admin', 'admin', 'admin', 'local', 'admin', true, NOW())
ON DUPLICATE KEY UPDATE `username` = COALESCE(`username`, 'admin'), `isActive` = true;--> statement-breakpoint
UPDATE `student_records`
SET `ownerId` = (SELECT `id` FROM `users` WHERE `openId` = 'local-admin' LIMIT 1)
WHERE `ownerId` IS NULL;--> statement-breakpoint
ALTER TABLE `student_records` MODIFY `ownerId` int NOT NULL;--> statement-breakpoint
ALTER TABLE `student_records` ADD CONSTRAINT `student_records_ownerId_users_id_fk` FOREIGN KEY (`ownerId`) REFERENCES `users`(`id`) ON DELETE restrict ON UPDATE no action;--> statement-breakpoint
CREATE INDEX `student_records_owner_idx` ON `student_records` (`ownerId`); 
