Some checks failed
Deploy to Firebase Hosting on merge / build_and_deploy (push) Has been cancelled
53 lines
2.2 KiB
SQL
53 lines
2.2 KiB
SQL
-- SQL script to create tables for authentication and session management
|
|
|
|
-- Create the users table
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` VARCHAR(255) NOT NULL PRIMARY KEY,
|
|
`provider` VARCHAR(50) NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create the sessions table
|
|
CREATE TABLE IF NOT EXISTS `sessions` (
|
|
`id` VARCHAR(255) NOT NULL PRIMARY KEY,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Create the session_users table to link sessions and users
|
|
CREATE TABLE IF NOT EXISTS `session_users` (
|
|
`session_id` VARCHAR(255) NOT NULL,
|
|
`user_id` VARCHAR(255) NOT NULL,
|
|
`provider` VARCHAR(50) NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`session_id`, `user_id`),
|
|
FOREIGN KEY (`session_id`) REFERENCES `sessions` (`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Create the votes table
|
|
CREATE TABLE IF NOT EXISTS `votes` (
|
|
`session_id` VARCHAR(255) NOT NULL,
|
|
`user_id` VARCHAR(255) NOT NULL,
|
|
`vote` INT NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`session_id`, `user_id`),
|
|
FOREIGN KEY (`session_id`) REFERENCES `sessions` (`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Index for faster lookups on session_users
|
|
CREATE INDEX `idx_session_users_session_id` ON `session_users`(`session_id`);
|
|
CREATE INDEX `idx_session_users_user_id` ON `session_users`(`user_id`);
|
|
|
|
-- Index for votes table
|
|
CREATE INDEX `idx_votes_session_id` ON `votes`(`session_id`);
|
|
CREATE INDEX `idx_votes_user_id` ON `votes`(`user_id`);
|
|
|
|
-- Adjustments for existing queries (if needed)
|
|
-- Example: Use INSERT IGNORE to prevent duplicate key errors
|
|
-- This is for adding users or session users, which is already handled in the route logic
|