5 Commits

Author SHA1 Message Date
136da63d00 Fix typo and add rust market links
Adds links to the rust meta extension and the VScode rust page
2023-10-21 16:28:04 -07:00
acfec3b97e fix pre-commit filename typo 2023-10-21 16:28:04 -07:00
0b0d4cb982 add formatting doc and pre-commit 2023-10-21 16:28:04 -07:00
abe545397b more model refinement 2023-10-20 09:37:57 -04:00
cb3f76aa17 refines MODELS around cart functionality, moves all pricing into Sku model, adds CouponCode model 2023-10-20 09:32:52 -04:00
2 changed files with 51 additions and 37 deletions

View File

@ -12,7 +12,7 @@ To check if your code is formatted without making changes, run `cargo fmt --chec
### VScode
We recommend the meta extension Rust, which includes rust-analyzer. Then to set your editor to format on save:
We recommend the meta extension [Rust Bundle](https://marketplace.visualstudio.com/items?itemName=1YiB.rust-bundle) , which includes rust-analyzer. ([More info](https://code.visualstudio.com/docs/languages/rust) on Rust with VScode) Then to set your editor to format on save:
* In Visual Studio Code, press Control + Shift + P or Command + Shift + P (Mac) to open the command palette and type setting and then select Preferences: Open User Settings option.
* Search for format on save setting and check the checkbox.
@ -27,4 +27,4 @@ You will first need to [install rust-analyzer](https://rust-analyzer.github.io/m
If you want to think about formatting your code less and just have git yell at you whe you try to commit code that is not properly formatted, you can use a simple pre-commit hook.
After cloning the repo, the file `pre-commit` to `.git/hooks/pre-commit`. That's it.
After cloning the repo, move the file `pre-commit` to `.git/hooks/pre-commit`. That's it.

View File

@ -185,7 +185,6 @@ struct Track {
is_available: bool,
preview_source: Option<String>,
source: String,
price: Option<rusty_money::Money>,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: PersonId,
@ -218,7 +217,6 @@ struct Album {
is_available: bool,
preview_source: Option<String>,
source: String,
price: Option<rusty_money::Money>,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: PersonId,
@ -289,23 +287,14 @@ struct Article {
A Comment represents a textual comment that a Person wants to attach contextually to an Artist, an Album, a Track, or a Playlist.
``` rust
enum CommentTargetType {
Label,
Artist,
Album,
Track,
Playlist,
Article,
Comment,
}
struct CommentTargetId {
label_id: Option<LabelId>,
artist_id: Option<ArtistId>,
album_id: Option<AlbumId>,
track_id: Option<TrackId>,
playlist_id: Option<PlaylistId>,
article_id: Option<ArticleId>,
comment_id: Option<CommentId>,
enum CommentTarget {
Label(LabelId),
Artist(ArtistId),
Album(AlbumId),
Track(TrackId),
Playlist(PlaylistId),
Article(ArticleId),
Comment(CommentId),
}
struct CommentId {
id: String,
@ -313,8 +302,7 @@ struct CommentId {
struct Comment {
id: CommentId,
body: String,
target_type: CommentTargetType,
target_id: CommentTargetId,
target: CommentTarget,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: Option<PersonId>,
@ -405,7 +393,6 @@ struct Collection {
albums: Option<Vec<Album>>,
tracks: Option<Vec<Track>>,
other_products: Option<Vec<OtherProduct>>,
price: Option<rusty_money::Money>,
}
```
@ -429,7 +416,7 @@ struct OtherProduct {
is_available: bool,
deleted_by: Option<PersonId>,
deleted_at: Option<chrono::DateTime>,
price: Option<rusty_money::Money>
requires_shipping: bool,
}
```
@ -439,10 +426,10 @@ A Purchase represents one or more Tracks or Albums that a Person purchases from
``` rust
enum PurchaseItemType {
Album,
Track,
Collection,
OtherProduct,
Album(AlbumId),
Track(TrackId),
Collection(CollectionId),
OtherProduct(OtherProductId),
}
struct PurchaseItemId {
id: String,
@ -452,18 +439,15 @@ struct SkuId {
}
struct Sku {
id: SkuId,
album_id: Option<AlbumId>,
track_id: Option<TrackId>,
collection_id: Option<CollectionId>,
other_product_id: Option<OtherProductId>,
item: PurchaseItemType,
variant: Option<String>,
discount_percentage: Option<f64>,
discount_flatrate: Option<rusty_money::Money>,
description: Option<String>,
price: Option<rusty_money::Money>,
requires_shipping: bool,
}
struct PurchaseItem {
id: PurchaseItemId,
type: PurchaseItemType,
sku: Option<SkuId>,
sku: SkuId,
quantity: usize,
}
enum PurchaseState {
@ -481,5 +465,35 @@ struct Purchase {
state: PurchaseState,
purchased_by: Person,
purchased_at: Option<chrono::DateTime>,
fulfilled_by: Option<Person>,
fulfilled_at: Option<chrono::DateTime>,
}
```
# CouponCode
A CouponCode represents a code a Person can enter to receive a discount on a PurchateItem or on a Purchase.
``` rust
struct CouponCodeId {
id: String,
}
struct CouponCode {
id: CouponCodeId,
name: String,
code: String,
uses: usize,
max_uses: usize,
expiration: Option<chrono::DateTime>,
discount_flat: Option<rusty_money::Money>,
discount_percentage: Option<f32>,
skus: Option<Vec<SkuId>>,
is_active: bool,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: PersonId,
modified_at: chrono::DateTime,
deleted_by: Option<PersonId>,
deleted_at: Option<chrono::DateTime>,
}
```