Have got soft and hard deleting

This commit is contained in:
Leon Mika 2026-02-23 21:18:34 +11:00
parent aef3bb6a1e
commit 3ea5823ca0
27 changed files with 588 additions and 55 deletions

View file

@ -1,5 +1,12 @@
-- name: SelectPostsOfSite :many
SELECT * FROM posts WHERE site_id = ? ORDER BY created_at DESC LIMIT 10;
SELECT *
FROM posts
WHERE site_id = ? AND (
CASE CAST (sqlc.arg(post_filter) AS TEXT)
WHEN 'deleted' THEN deleted_at > 0
ELSE deleted_at = 0
END
) ORDER BY created_at DESC LIMIT 10;
-- name: SelectPost :one
SELECT * FROM posts WHERE id = ? LIMIT 1;
@ -10,19 +17,34 @@ SELECT * FROM posts WHERE guid = ? LIMIT 1;
-- name: InsertPost :one
INSERT INTO posts (
site_id,
state,
guid,
title,
body,
slug,
created_at,
published_at
) VALUES (?, ?, ?, ?, ?, ?, ?)
updated_at,
published_at,
deleted_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
RETURNING id;
-- name: UpdatePost :exec
UPDATE posts SET
title = ?,
state = ?,
body = ?,
slug = ?,
published_at = ?
WHERE id = ?;
updated_at = ?,
published_at = ?,
deleted_at = ?
WHERE id = ?;
-- name: SoftDeletePost :exec
UPDATE posts SET deleted_at = ? WHERE id = ?;
-- name: RestorePost :exec
UPDATE posts SET deleted_at = 0 WHERE id = ?;
-- name: HardDeletePost :exec
DELETE FROM posts WHERE id = ?;

View file

@ -18,8 +18,8 @@ CREATE INDEX idx_site_owner ON sites (owner_id);
CREATE TABLE publish_targets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id INTEGER NOT NULL,
target_type TEXT NOT NULL,
enabled INT NOT NULL,
target_type TEXT NOT NULL,
enabled INT NOT NULL,
base_url TEXT NOT NULL,
target_ref TEXT NOT NULL,
target_key TEXT NOT NULL
@ -29,12 +29,15 @@ CREATE INDEX idx_publish_targets_site ON publish_targets (site_id);
CREATE TABLE posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id INTEGER NOT NULL,
state 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
updated_at INTEGER NOT NULL,
published_at INTEGER NOT NULL,
deleted_at INTEGER NOT NULL
);
CREATE INDEX idx_post_site ON posts (site_id);
CREATE UNIQUE INDEX idx_post_guid ON posts (guid);