手を動かす前にデータベース設計考えとく
カテゴリとかタグとか使わないと思うし users と posts と comments があれば十分かな(一人で使うだろうから users も別になくていいけど)
無難にこんな感じでいいかな 最近の PostgreSQL って拡張機能使わなくても UUID 生成できたり色々便利になっててすごい
CREATE TABLE IF NOT EXISTS users (
id UUID DEFAULT gen_random_uuid(),
username VARCHAR(255) UNIQUE NOT NULL,
hashed_password VARCHAR(255) NOT NULL,
salt VARCHAR(255) NOT NULL,
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS posts (
id UUID DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id),
title TEXT NOT NULL,
content TEXT NOT NULL,
is_deleted BOOLEAN DEFAULT FALSE,
is_published BOOLEAN DEFAULT TRUE,
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS comments (
id UUID DEFAULT gen_random_uuid(),
post_id UUID NOT NULL REFERENCES posts(id),
author TEXT NOT NULL,
content TEXT NOT NULL,
is_deleted BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
インデックスも貼るよん とりあえず絶対使うとこだけ
CREATE INDEX idx_posts_created_at ON posts (created_at);
CREATE INDEX idx_comments_post_id ON comments (post_id);