updates MODELS and SCHEMA

This commit is contained in:
Sundog
2023-10-19 13:11:52 -04:00
parent 1359dca5df
commit 69b694ae60
2 changed files with 345 additions and 5 deletions

View File

@ -48,9 +48,10 @@ enum PersonCredentialProviderType {
struct PersonCredentialProviderId {
id: String,
}
enum PersonCredentialProvider {
struct PersonCredentialProvider {
id: PersonCredentialProviderId,
name: String,
type: PersonCredentialProviderType,
config: String,
}
struct PersonCredential {
@ -99,12 +100,41 @@ struct Label {
name: String,
description: String,
website: String,
is_enabled: bool,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: PersonId,
modified_at: chrono::DateTime,
deleted_by: Option<PersonId>,
deleted_at: Option<chrono::DateTime>,
artists: HashMap<Artist>,
tags: Option<Vec<Tag>>,
comments: Option<Vec<Comment>>,
}
```
# LabelContact
A LabelContact represents a method for contacting a representative of a Label.
``` rust
struct LabelContactId {
id: String,
}
struct LabelContact {
id: LabelContactId,
method: String,
address: String,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: PersonId,
modified_at: chrono::DateTime,
deleted_by: Option<PersonId>,
deleted_at: Option<chrono::DateTime>,
sort_order: usize,
}
```
# Artist
An Artist represents a musical artist.
@ -118,8 +148,19 @@ struct Artist {
name: String,
bio: String,
website: String,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: PersonId,
modified_at: chrono::DateTime,
deleted_by: Option<PersonId>,
deleted_at: Option<chrono::DateTime>,
is_enabled: bool,
is_public: bool,
labels: Option<Vec<LabelId>>,
tags: Option<Vec<Tag>>,
comments: Option<Vec<Comment>>,
cover: Option<String>,
images: Option<Vec<String>>,
}
```
@ -134,9 +175,9 @@ struct TrackId {
struct Track {
id: TrackId,
title: String,
description: String,
description: Option<String>,
duration: chrono::Duration,
artists: HashMap<Artist>,
artists: Vec<Artist>,
is_public: bool,
is_available: bool,
preview_source: Option<String>,
@ -168,8 +209,8 @@ struct Album {
id: AlbumId,
title: String,
description: String,
artists: HashMap<Artist>,
tracks: HashMap<Track>,
artists: Vec<Artist>,
tracks: Vec<Track>,
is_public: bool,
is_available: bool,
preview_source: Option<String>,