28 lines
895 B
SQL
28 lines
895 B
SQL
-- Users table
|
|
CREATE TABLE users (
|
|
id TEXT PRIMARY KEY,
|
|
email TEXT UNIQUE NOT NULL,
|
|
password_hash TEXT NOT NULL,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at DATETIME
|
|
);
|
|
|
|
-- Posts table
|
|
CREATE TABLE posts (
|
|
id TEXT PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
author_id TEXT NOT NULL REFERENCES users(id),
|
|
published BOOLEAN DEFAULT FALSE,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at DATETIME
|
|
);
|
|
|
|
-- Indexes for performance
|
|
CREATE INDEX idx_posts_deleted_at ON posts(deleted_at);
|
|
CREATE INDEX idx_posts_published ON posts(published) WHERE deleted_at IS NULL;
|
|
CREATE INDEX idx_posts_author ON posts(author_id) WHERE deleted_at IS NULL;
|
|
CREATE INDEX idx_users_email ON users(email) WHERE deleted_at IS NULL;
|