Initial commit
This commit is contained in:
68
templates/migrations/0001_example.sql
Normal file
68
templates/migrations/0001_example.sql
Normal file
@@ -0,0 +1,68 @@
|
||||
-- Migration: Initial Schema
|
||||
-- Generated by Drizzle Kit
|
||||
-- This is an example migration file showing the structure
|
||||
-- Actual migrations should be generated with: drizzle-kit generate
|
||||
|
||||
-- Create users table
|
||||
CREATE TABLE `users` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`email` text NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`bio` text,
|
||||
`created_at` integer NOT NULL,
|
||||
`updated_at` integer
|
||||
);
|
||||
|
||||
-- Create unique index on email
|
||||
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);
|
||||
|
||||
-- Create index on email for faster lookups
|
||||
CREATE INDEX `users_email_idx` ON `users` (`email`);
|
||||
|
||||
-- Create index on created_at for sorting
|
||||
CREATE INDEX `users_created_at_idx` ON `users` (`created_at`);
|
||||
|
||||
-- Create posts table
|
||||
CREATE TABLE `posts` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`title` text NOT NULL,
|
||||
`slug` text NOT NULL,
|
||||
`content` text NOT NULL,
|
||||
`published` integer DEFAULT false NOT NULL,
|
||||
`author_id` integer NOT NULL,
|
||||
`created_at` integer NOT NULL,
|
||||
`updated_at` integer,
|
||||
FOREIGN KEY (`author_id`) REFERENCES `users`(`id`) ON DELETE cascade
|
||||
);
|
||||
|
||||
-- Create unique index on slug
|
||||
CREATE UNIQUE INDEX `posts_slug_unique` ON `posts` (`slug`);
|
||||
|
||||
-- Create index on slug for URL lookups
|
||||
CREATE INDEX `posts_slug_idx` ON `posts` (`slug`);
|
||||
|
||||
-- Create index on author_id for user's posts
|
||||
CREATE INDEX `posts_author_idx` ON `posts` (`author_id`);
|
||||
|
||||
-- Create composite index on published + created_at
|
||||
CREATE INDEX `posts_published_created_idx` ON `posts` (`published`, `created_at`);
|
||||
|
||||
-- Create comments table
|
||||
CREATE TABLE `comments` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`content` text NOT NULL,
|
||||
`post_id` integer NOT NULL,
|
||||
`author_id` integer NOT NULL,
|
||||
`created_at` integer NOT NULL,
|
||||
FOREIGN KEY (`post_id`) REFERENCES `posts`(`id`) ON DELETE cascade,
|
||||
FOREIGN KEY (`author_id`) REFERENCES `users`(`id`) ON DELETE cascade
|
||||
);
|
||||
|
||||
-- Create index on post_id for post's comments
|
||||
CREATE INDEX `comments_post_idx` ON `comments` (`post_id`);
|
||||
|
||||
-- Create index on author_id for user's comments
|
||||
CREATE INDEX `comments_author_idx` ON `comments` (`author_id`);
|
||||
|
||||
-- Optimize database
|
||||
PRAGMA optimize;
|
||||
Reference in New Issue
Block a user