Modified models to support a DB

This commit is contained in:
Leon Mika 2026-02-19 21:21:27 +11:00
parent 3591e0c723
commit ebaec3d296
33 changed files with 675 additions and 64 deletions

14
sql/queries/posts.sql Normal file
View file

@ -0,0 +1,14 @@
-- name: SelectPostsOfSite :many
SELECT * FROM posts WHERE site_id = ? ORDER BY created_at DESC LIMIT 10;
-- name: InsertPost :one
INSERT INTO posts (
site_id,
guid,
title,
body,
slug,
created_at,
published_at
) VALUES (?, ?, ?, ?, ?, ?, ?)
RETURNING id;

View file

@ -0,0 +1,12 @@
-- name: SelectPublishTargetsOfSite :many
SELECT * FROM publish_targets WHERE site_id = ?;
-- name: InsertPublishTarget :one
INSERT INTO publish_targets (
site_id,
publish_target_type,
base_url,
target_site_id,
target_publish_key
) VALUES (?, ?, ?, ?, ?)
RETURNING id;

10
sql/queries/sites.sql Normal file
View file

@ -0,0 +1,10 @@
-- name: SelectSitesOwnedByUser :many
SELECT * FROM sites WHERE owner_id = ?;
-- name: InsertSite :one
INSERT INTO sites (
owner_id,
title,
tagline
) VALUES (?, ?, ?)
RETURNING id;

5
sql/queries/users.sql Normal file
View file

@ -0,0 +1,5 @@
-- name: SelectUserByUsername :one
SELECT * FROM users WHERE username = ?;
-- name: InsertUserByUsername :one
INSERT INTO users (username, password) VALUES (?, ?) RETURNING id;

38
sql/schema/01_init.up.sql Normal file
View file

@ -0,0 +1,38 @@
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL
);
CREATE UNIQUE INDEX idx_users_username ON users (username);
CREATE TABLE sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
owner_id INTEGER NOT NULL,
title TEXT NOT NULL,
tagline TEXT NOT NULL,
FOREIGN KEY (owner_id) REFERENCES users (id) ON DELETE CASCADE
);
CREATE INDEX idx_site_owner ON site (owner_id);
CREATE TABLE publish_targets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id INTEGER NOT NULL,
publish_target_type INTEGER NOT NULL,
base_url TEXT NOT NULL,
target_site_id TEXT NOT NULL,
target_publish_key TEXT NOT NULL
);
CREATE INDEX idx_publish_targets_site ON publish_targets (site_id);
CREATE TABLE posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id INTEGER NOT NULL,
guid TEXT NOT NULL,
title TEXT NOT NULL,
body TEXT NOT NULL,
slug TEXT NOT NULL,
created_at INTEGER NOT NULL,
published_at INTEGER NOT NULL
);
CREATE INDEX idx_post_site ON posts (site_id);