db: rework schema and infrastructure

This commit is contained in:
Lucas 2023-03-04 21:31:42 +00:00
parent fbcaea8bfc
commit 13a6d287af
7 changed files with 86 additions and 85 deletions

6
migrations/1_down.sql Normal file
View file

@ -0,0 +1,6 @@
-- DROP VIEW tagged_media_view;
DROP VIEW tag_count_view;
DROP TABLE media_tags;
DROP TABLE tags;
DROP TABLE media_content;
DROP TABLE media;

35
migrations/1_up.sql Normal file
View file

@ -0,0 +1,35 @@
CREATE TABLE media(
media_id INTEGER PRIMARY KEY,
seaweedfs_fid TEXT (33) NOT NULL,
filename TEXT (256) NOT NULL,
content_type TEXT (256)
);
CREATE TABLE tags(
tag_id INTEGER PRIMARY KEY,
name TEXT (256) NOT NULL UNIQUE
);
CREATE TABLE media_tags(
media_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
FOREIGN KEY (media_id) REFERENCES media (media_id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags (tag_id) ON DELETE CASCADE,
PRIMARY KEY(media_id, tag_id)
);
CREATE VIEW tag_count_view AS SELECT
tags.tag_id AS tag_id,
tags.name AS name,
COUNT(media_tags.media_id) AS count
FROM tags
INNER JOIN media_tags USING (tag_id)
GROUP BY tag_id;
-- CREATE VIEW tagged_media_view AS SELECT
-- tags.tag_id AS tag_id,
-- tags.name AS tag_name,
-- media.media_id AS media_id
-- FROM media
-- INNER JOIN media_tags USING (media_id)
-- INNER JOIN tags USING (tag_id);