more updates to MODELS and SCHEMA
This commit is contained in:
parent
5b5df18f4b
commit
459f9e8f87
18
MODELS.md
18
MODELS.md
|
@ -227,8 +227,8 @@ struct Album {
|
||||||
deleted_at: Option<chrono::DateTime>,
|
deleted_at: Option<chrono::DateTime>,
|
||||||
tags: Option<Vec<Tag>>,
|
tags: Option<Vec<Tag>>,
|
||||||
comments: Option<Vec<Comment>>,
|
comments: Option<Vec<Comment>>,
|
||||||
cover: Option<String>,
|
cover: Option<ImageId>,
|
||||||
images: Option<Vec<String>>,
|
images: Option<Vec<ImageId>>,
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -247,9 +247,9 @@ struct Playlist {
|
||||||
created_by: PersonId,
|
created_by: PersonId,
|
||||||
created_at: chrono::DateTime,
|
created_at: chrono::DateTime,
|
||||||
modified_at: chrono::DateTime,
|
modified_at: chrono::DateTime,
|
||||||
deleted_at: Option<chrono::DateTime>
|
deleted_at: Option<chrono::DateTime>,
|
||||||
is_public: bool,
|
is_public: bool,
|
||||||
cover: Option<String>,
|
cover: Option<ImageId>,
|
||||||
tracks: Vec<Track>,
|
tracks: Vec<Track>,
|
||||||
tags: Option<Vec<Tag>>,
|
tags: Option<Vec<Tag>>,
|
||||||
comments: Option<Vec<Comment>>,
|
comments: Option<Vec<Comment>>,
|
||||||
|
@ -272,11 +272,12 @@ struct Article {
|
||||||
created_by: PersonId,
|
created_by: PersonId,
|
||||||
created_at: chrono::DateTime,
|
created_at: chrono::DateTime,
|
||||||
modified_at: chrono::DateTime,
|
modified_at: chrono::DateTime,
|
||||||
deleted_at: Option<chrono::DateTime>
|
published_at: Option<chrono::DateTime>,
|
||||||
|
deleted_at: Option<chrono::DateTime>,
|
||||||
is_public: bool,
|
is_public: bool,
|
||||||
is_draft: bool,
|
is_draft: bool,
|
||||||
cover: Option<String>,
|
cover: Option<ImageId>,
|
||||||
images: Option<Vec<String>>,
|
images: Option<Vec<ImageId>>,
|
||||||
tracks: Option<Vec<Track>>,
|
tracks: Option<Vec<Track>>,
|
||||||
tags: Option<Vec<Tag>>,
|
tags: Option<Vec<Tag>>,
|
||||||
comments: Option<Vec<Comment>>,
|
comments: Option<Vec<Comment>>,
|
||||||
|
@ -336,11 +337,14 @@ struct ImageId {
|
||||||
}
|
}
|
||||||
struct Image {
|
struct Image {
|
||||||
id: ImageId,
|
id: ImageId,
|
||||||
|
name: Option<String>,
|
||||||
path: String,
|
path: String,
|
||||||
|
url: String,
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
alt_text: String,
|
alt_text: String,
|
||||||
is_public: bool,
|
is_public: bool,
|
||||||
|
allow_hotlinking: bool,
|
||||||
created_by: PersonId,
|
created_by: PersonId,
|
||||||
created_at: chrono::DateTime,
|
created_at: chrono::DateTime,
|
||||||
modified_by: PersonId,
|
modified_by: PersonId,
|
||||||
|
|
182
SCHEMA.md
182
SCHEMA.md
|
@ -212,6 +212,33 @@ CREATE INDEX Artists_is_enabled_IDX ON Artists (is_enabled);
|
||||||
CREATE INDEX Artists_is_public_IDX ON Artists (is_public);
|
CREATE INDEX Artists_is_public_IDX ON Artists (is_public);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# ArtistContacts
|
||||||
|
The ArtistContacts tablekey-value pairs of methods to contact representatives of the Artist (for example, "fediverse: sundog@toot-lab.reclaim.technology" or "email: sundog@reclaim.technology").
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE ArtistContacts (
|
||||||
|
id TEXT(36),
|
||||||
|
artist_id TEXT(36),
|
||||||
|
"method" TEXT,
|
||||||
|
address TEXT,
|
||||||
|
created_by TEXT(36),
|
||||||
|
created_at INTEGER,
|
||||||
|
modified_by TEXT(36),
|
||||||
|
modified_at INTEGER,
|
||||||
|
deleted_by TEXT(36),
|
||||||
|
deleted_at INTEGER,
|
||||||
|
sort_order INTEGER,
|
||||||
|
CONSTRAINT ArtistContacts_PK PRIMARY KEY (id),
|
||||||
|
CONSTRAINT ArtistContacts_FK FOREIGN KEY (artist_id) REFERENCES Artists(id) ON DELETE CASCADE
|
||||||
|
CONSTRAINT ArtistContacts_FK_1 FOREIGN KEY (created_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT ArtistContacts_FK_2 FOREIGN KEY (modified_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT ArtistContacts_FK_3 FOREIGN KEY (deleted_by) REFERENCES Persons(id)
|
||||||
|
);
|
||||||
|
CREATE INDEX ArtistContacts_artist_id_IDX ON ArtistContacts (artist_id);
|
||||||
|
CREATE INDEX ArtistContacts_deleted_at_IDX ON ArtistContacts (deleted_at);
|
||||||
|
CREATE INDEX ArtistContacts_sort_order_IDX ON ArtistContacts (sort_order);
|
||||||
|
```
|
||||||
|
|
||||||
# ArtistTags
|
# ArtistTags
|
||||||
The ArtistTags table will contain Tags that have been assigned to an Artist.
|
The ArtistTags table will contain Tags that have been assigned to an Artist.
|
||||||
|
|
||||||
|
@ -548,33 +575,156 @@ CREATE INDEX PlaylistComments_playlist_id_IDX ON PlaylistComments (playlist_id);
|
||||||
CREATE INDEX PlaylistComments_comment_id_IDX ON PlaylistComments (comment_id);
|
CREATE INDEX PlaylistComments_comment_id_IDX ON PlaylistComments (comment_id);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Images
|
||||||
|
The Images table will contain Images!
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE Images (
|
||||||
|
id TEXT(36),
|
||||||
|
name TEXT,
|
||||||
|
"path" TEXT,
|
||||||
|
url TEXT,
|
||||||
|
width INTEGER,
|
||||||
|
height INTEGER,
|
||||||
|
alt_text TEXT,
|
||||||
|
is_public INTEGER DEFAULT (1),
|
||||||
|
allow_hotlinking INTEGER DEFAULT (0),
|
||||||
|
created_by TEXT(36),
|
||||||
|
created_at INTEGER,
|
||||||
|
modified_by TEXT(36),
|
||||||
|
modified_at INTEGER,
|
||||||
|
deleted_by TEXT(36),
|
||||||
|
deleted_at INTEGER,
|
||||||
|
CONSTRAINT Images_PK PRIMARY KEY (id),
|
||||||
|
CONSTRAINT Images_FK FOREIGN KEY (created_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT Images_FK_1 FOREIGN KEY (modified_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT Images_FK_2 FOREIGN KEY (deleted_by) REFERENCES Persons(id)
|
||||||
|
);
|
||||||
|
CREATE INDEX Images_name_IDX ON Images (name);
|
||||||
|
CREATE INDEX Images_path_IDX ON Images ("path");
|
||||||
|
CREATE INDEX Images_url_IDX ON Images (url);
|
||||||
|
CREATE INDEX Images_alt_text_IDX ON Images (alt_text);
|
||||||
|
CREATE INDEX Images_is_public_IDX ON Images (is_public);
|
||||||
|
CREATE INDEX Images_allow_hotlinking_IDX ON Images (allow_hotlinking);
|
||||||
|
CREATE INDEX Images_created_by_IDX ON Images (created_by);
|
||||||
|
CREATE INDEX Images_deleted_at_IDX ON Images (deleted_at);
|
||||||
|
```
|
||||||
|
|
||||||
|
# Videos
|
||||||
|
The Videos table will contain Videos!
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE Videos (
|
||||||
|
id TEXT(36),
|
||||||
|
name TEXT,
|
||||||
|
"path" TEXT,
|
||||||
|
url TEXT,
|
||||||
|
width INTEGER,
|
||||||
|
height INTEGER,
|
||||||
|
duration NUMERIC,
|
||||||
|
alt_text TEXT,
|
||||||
|
is_public INTEGER DEFAULT (1),
|
||||||
|
allow_hotlinking INTEGER DEFAULT (0),
|
||||||
|
created_by TEXT(36),
|
||||||
|
created_at INTEGER,
|
||||||
|
modified_by TEXT(36),
|
||||||
|
modified_at INTEGER,
|
||||||
|
deleted_by TEXT(36),
|
||||||
|
deleted_at INTEGER,
|
||||||
|
CONSTRAINT Videos_PK PRIMARY KEY (id),
|
||||||
|
CONSTRAINT Videos_FK FOREIGN KEY (created_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT Videos_FK_1 FOREIGN KEY (modified_by) REFERENCES Persons(id),
|
||||||
|
CONSTRAINT Videos_FK_2 FOREIGN KEY (deleted_by) REFERENCES Persons(id)
|
||||||
|
);
|
||||||
|
CREATE INDEX Videos_name_IDX ON Videos (name);
|
||||||
|
CREATE INDEX Videos_path_IDX ON Videos ("path");
|
||||||
|
CREATE INDEX Videos_url_IDX ON Videos (url);
|
||||||
|
CREATE INDEX Videos_alt_text_IDX ON Videos (alt_text);
|
||||||
|
CREATE INDEX Videos_is_public_IDX ON Videos (is_public);
|
||||||
|
CREATE INDEX Videos_allow_hotlinking_IDX ON Videos (allow_hotlinking);
|
||||||
|
CREATE INDEX Videos_created_by_IDX ON Videos (created_by);
|
||||||
|
CREATE INDEX Videos_deleted_at_IDX ON Videos (deleted_at);
|
||||||
|
```
|
||||||
|
|
||||||
|
# Articles
|
||||||
|
The Articles table will contain Articles!
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE Articles (
|
||||||
|
id TEXT(36),
|
||||||
|
title TEXT,
|
||||||
|
body TEXT,
|
||||||
|
description TEXT,
|
||||||
|
created_by TEXT(36),
|
||||||
|
created_at INTEGER,
|
||||||
|
modified_at INTEGER,
|
||||||
|
published_at INTEGER,
|
||||||
|
deleted_at INTEGER,
|
||||||
|
is_public INTEGER DEFAULT (0),
|
||||||
|
is_draft INTEGER DEFAULT (1),
|
||||||
|
CONSTRAINT Articles_PK PRIMARY KEY (id),
|
||||||
|
CONSTRAINT Articles_FK FOREIGN KEY (created_by) REFERENCES Persons(id)
|
||||||
|
);
|
||||||
|
CREATE INDEX Articles_title_IDX ON Articles (title);
|
||||||
|
CREATE INDEX Articles_body_IDX ON Articles (body);
|
||||||
|
CREATE INDEX Articles_description_IDX ON Articles (description);
|
||||||
|
CREATE INDEX Articles_created_by_IDX ON Articles (created_by);
|
||||||
|
CREATE INDEX Articles_published_at_IDX ON Articles (published_at);
|
||||||
|
CREATE INDEX Articles_deleted_at_IDX ON Articles (deleted_at);
|
||||||
|
CREATE INDEX Articles_is_public_IDX ON Articles (is_public);
|
||||||
|
CREATE INDEX Articles_is_draft_IDX ON Articles (is_draft);
|
||||||
|
```
|
||||||
|
|
||||||
|
# ArticleTags
|
||||||
|
The ArticleTags table will contain Tags that have been assigned to an Article.
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE ArticleTags (
|
||||||
|
article_id TEXT(36),
|
||||||
|
tag_id TEXT(36),
|
||||||
|
is_approved INTEGER DEFAULT (0),
|
||||||
|
CONSTRAINT ArticleTags_PK PRIMARY KEY (article_id,tag_id),
|
||||||
|
CONSTRAINT ArticleTags_FK FOREIGN KEY (article_id) REFERENCES Articles(id) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT ArticleTags_FK_1 FOREIGN KEY (tag_id) REFERENCES Tags(id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
CREATE INDEX ArticleTags_is_approved_IDX ON ArticleTags (is_approved);
|
||||||
|
```
|
||||||
|
|
||||||
|
# ArticleComments
|
||||||
|
The ArticleComments table will relate Comments to the Article they are about, if pertinent.
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
CREATE TABLE ArticleComments (
|
||||||
|
article_id TEXT(36),
|
||||||
|
comment_id TEXT(36),
|
||||||
|
CONSTRAINT ArticleComments_PK PRIMARY KEY (article_id,comment_id),
|
||||||
|
CONSTRAINT ArticleComments_FK FOREIGN KEY (article_id) REFERENCES Articles(id) ON DELETE CASCADE,
|
||||||
|
CONSTRAINT ArticleComments_FK_1 FOREIGN KEY (comment_id) REFERENCES Comments(id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
CREATE INDEX ArticleComments_article_id_IDX ON ArticleComments (article_id);
|
||||||
|
CREATE INDEX ArticleComments_comment_id_IDX ON ArticleComments (comment_id);
|
||||||
|
```
|
||||||
|
|
||||||
# LabelImages
|
# LabelImages
|
||||||
|
|
||||||
# ArtistImages
|
|
||||||
|
|
||||||
# TrackImages
|
|
||||||
|
|
||||||
# AlbumImages
|
|
||||||
|
|
||||||
# PlaylistImages
|
|
||||||
|
|
||||||
# LabelVideos
|
# LabelVideos
|
||||||
|
|
||||||
|
# ArtistImages
|
||||||
|
|
||||||
# ArtistVideos
|
# ArtistVideos
|
||||||
|
|
||||||
# TrackVideos
|
# AlbumImages
|
||||||
|
|
||||||
# AlbumVideos
|
# AlbumVideos
|
||||||
|
|
||||||
# ArtistContacts
|
# TrackImages
|
||||||
|
|
||||||
# Articles
|
# TrackVideos
|
||||||
|
|
||||||
# ArticleTags
|
# PlaylistImages
|
||||||
|
|
||||||
|
# PlaylistVideos
|
||||||
|
|
||||||
# ArticleImages
|
# ArticleImages
|
||||||
|
|
||||||
# ArticleVideos
|
# ArticleVideos
|
||||||
|
|
||||||
# ArticleComments
|
|
||||||
|
|
Loading…
Reference in New Issue