50 lines
1.6 KiB
SQL
50 lines
1.6 KiB
SQL
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`email` VARCHAR(255) NOT NULL UNIQUE,
|
|
`password` VARCHAR(255) NOT NULL,
|
|
`stripe_customer_id` VARCHAR(255),
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS `songs` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT NOT NULL,
|
|
`title` VARCHAR(255) NOT NULL,
|
|
`artist` VARCHAR(255),
|
|
`file_path` VARCHAR(255) NOT NULL,
|
|
`uploaded_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS `certificates` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`song_id` INT NOT NULL,
|
|
`certificate_hash` VARCHAR(255) NOT NULL UNIQUE,
|
|
`file_path` VARCHAR(255) NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`song_id`) REFERENCES `songs`(`id`) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS `subscriptions` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT NOT NULL,
|
|
`stripe_subscription_id` VARCHAR(255) NOT NULL UNIQUE,
|
|
`plan` VARCHAR(50) NOT NULL,
|
|
`status` VARCHAR(50) NOT NULL,
|
|
`start_date` TIMESTAMP NOT NULL,
|
|
`end_date` TIMESTAMP,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS `daily_uploads` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`user_id` INT NOT NULL,
|
|
`upload_date` DATE NOT NULL,
|
|
`upload_count` INT NOT NULL DEFAULT 0,
|
|
UNIQUE KEY `user_date` (`user_id`, `upload_date`),
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
|
|
);
|