31 lines
1.0 KiB
SQL
31 lines
1.0 KiB
SQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TABLE users (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
username TEXT UNIQUE NOT NULL,
|
|
password_hash TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE notes (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE note_versions (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
note_id UUID NOT NULL REFERENCES notes(id) ON DELETE CASCADE,
|
|
title TEXT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
version_number INT NOT NULL,
|
|
content_hash TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
|
|
CREATE UNIQUE INDEX idx_note_version_unique ON note_versions (note_id, version_number);
|
|
CREATE UNIQUE INDEX idx_users_username ON users(username);
|
|
CREATE INDEX idx_note_versions_note ON note_versions(note_id);
|
|
CREATE INDEX idx_note_versions_number ON note_versions(version_number DESC);
|