feat: add basic blog features

This commit is contained in:
2026-03-09 22:17:39 +01:00
commit c16657f996
29 changed files with 3095 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
CREATE XTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE posts (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
title VARCHAR(255) NULL UNIQUE,
content TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

View File

@@ -0,0 +1,29 @@
CREATE TABLE users (
id TEXT PRIMARY KEY NOT NULL UNIQUE,
username VARCHAR(255)
);
CREATE TABLE passkeys (
id TEXT PRIMARY KEY NOT NULL UNIQUE,
public_key BYTEA,
webauthn_user__id TEXT UNIQUE,
counter BIGINT,
device_type VARCHAR(32),
transports VARCHAR(255)
);
-- User/passkey junction table
CREATE TABLE user_passkeys (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id TEXT NOT NULL,
passkey_id TEXT NOT NULL,
-- Foreign key constraints
CONSTRAINT fk_user_passkeys_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
CONSTRAINT fk_user_passkeys_passkeys FOREIGN KEY (passkey_id) REFERENCES passkeys(id) ON DELETE CASCADE,
-- Prevent duplicates
CONSTRAINT unique_user_passkeys UNIQUE (user_id, passkey_id)
);
CREATE INDEX index_passkeys ON passkeys (id, webauthn_user__id);