Koucha/koucha/migrations/20260115003047_initial_schema.sql

61 lines
1.3 KiB
MySQL
Raw Normal View History

2026-01-16 13:13:02 -08:00
-- Add migration script here
PRAGMA foreign_keys = ON;
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL
);
CREATE TABLE channels (
id INTEGER PRIMARY KEY,
2026-01-20 11:36:26 -08:00
title TEXT NOT NULL,
link TEXT UNIQUE NOT NULL,
description TEXT,
last_fetched TEXT
2026-01-16 13:13:02 -08:00
);
CREATE TABLE items (
id INTEGER PRIMARY KEY,
channel_id INTEGER NOT NULL,
guid TEXT NOT NULL,
2026-01-20 11:36:26 -08:00
2026-01-22 15:55:31 -08:00
fetched_at TEXT,
2026-01-20 11:36:26 -08:00
title TEXT,
description TEXT,
content TEXT,
2026-01-16 13:13:02 -08:00
UNIQUE(channel_id, guid),
FOREIGN KEY (channel_id) REFERENCES channels(id)
);
CREATE TABLE feeds (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
2026-01-20 16:36:14 -08:00
title TEXT NOT NULL,
2026-01-16 13:13:02 -08:00
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE feed_channels (
feed_id INTEGER NOT NULL,
channel_id INTEGER NOT NULL,
initial_score INTEGER,
gravity INTEGER,
boost INTEGER,
2026-01-16 13:13:02 -08:00
PRIMARY KEY (feed_id, channel_id),
FOREIGN KEY (feed_id) REFERENCES feeds(id),
FOREIGN KEY (channel_id) REFERENCES channels(id)
);
CREATE TABLE feed_items (
item_id INTEGER NOT NULL,
feed_id INTEGER NOT NULL,
score INTEGER NOT NULL,
archived BOOLEAN DEFAULT FALSE,
PRIMARY KEY (item_id, feed_id),
FOREIGN KEY (feed_id) REFERENCES feeds(id),
FOREIGN KEY (item_id) REFERENCES items(id)
);
CREATE INDEX idx_feed_items_score
ON feed_items(feed_id, archived, score DESC);