4 Commits

Author SHA1 Message Date
ab9aed00ab add rustfmt
Some checks failed
checks / format (push) Failing after 3s
checks / format (pull_request) Failing after 2s
2023-10-21 01:34:57 -07:00
e410731e99 Revert "test"
Some checks failed
checks / format (push) Failing after 2s
checks / format (pull_request) Failing after 3s
This reverts commit 81158ca818.
2023-10-21 01:28:34 -07:00
81158ca818 test
Some checks failed
checks / format (push) Failing after 2s
checks / format (pull_request) Failing after 3s
2023-10-21 01:26:51 -07:00
4be42a6cbe add automated format check
Some checks failed
checks / format (push) Failing after 19s
checks / format (pull_request) Failing after 3s
2023-10-21 01:15:35 -07:00
4 changed files with 51 additions and 82 deletions

View File

@ -0,0 +1,16 @@
name: checks
on:
- push
- pull_request
jobs:
lint:
runs_on: "alpine_amd64"
container:
image: "rust:1.73-alpine3.18"
name: format
steps:
- name: TODO put in image base
run: rustup component add rustfmt
- name: rustfmt
run: cargo fmt --check

View File

@ -1,30 +0,0 @@
# Contribution Guidelines
## Code Formatting
We format all Rust code using edition 2021 rules. This edition is defined in our Cargo.toml and most methods below will pick this up automatically.
### Manual Method
The most editor agnostic way to format your Rust code is by manually running cargo's fmt sub command.
To check if your code is formatted without making changes, run `cargo fmt --check`. Then if you want to format your code you can run just `cargo fmt`.
### VScode
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.
You can also set language specific settings as outlined [here](https://code.visualstudio.com/docs/getstarted/settings#_language-specific-editor-settings). You will again want to then search for format on save and check the checkbox.
### Other Editors
You will first need to [install rust-analyzer](https://rust-analyzer.github.io/manual.html#installation), then configure your editor and install any needed plugins or extensions as outlined on that page.
### Pre Commit Hook
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, move the file `pre-commit` to `.git/hooks/pre-commit`. That's it.

View File

@ -185,6 +185,7 @@ 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,
@ -217,6 +218,7 @@ 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,
@ -287,14 +289,23 @@ 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 CommentTarget {
Label(LabelId),
Artist(ArtistId),
Album(AlbumId),
Track(TrackId),
Playlist(PlaylistId),
Article(ArticleId),
Comment(CommentId),
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>,
}
struct CommentId {
id: String,
@ -302,7 +313,8 @@ struct CommentId {
struct Comment {
id: CommentId,
body: String,
target: CommentTarget,
target_type: CommentTargetType,
target_id: CommentTargetId,
created_by: PersonId,
created_at: chrono::DateTime,
modified_by: Option<PersonId>,
@ -393,6 +405,7 @@ struct Collection {
albums: Option<Vec<Album>>,
tracks: Option<Vec<Track>>,
other_products: Option<Vec<OtherProduct>>,
price: Option<rusty_money::Money>,
}
```
@ -416,7 +429,7 @@ struct OtherProduct {
is_available: bool,
deleted_by: Option<PersonId>,
deleted_at: Option<chrono::DateTime>,
requires_shipping: bool,
price: Option<rusty_money::Money>
}
```
@ -426,10 +439,10 @@ A Purchase represents one or more Tracks or Albums that a Person purchases from
``` rust
enum PurchaseItemType {
Album(AlbumId),
Track(TrackId),
Collection(CollectionId),
OtherProduct(OtherProductId),
Album,
Track,
Collection,
OtherProduct,
}
struct PurchaseItemId {
id: String,
@ -439,15 +452,18 @@ struct SkuId {
}
struct Sku {
id: SkuId,
item: PurchaseItemType,
album_id: Option<AlbumId>,
track_id: Option<TrackId>,
collection_id: Option<CollectionId>,
other_product_id: Option<OtherProductId>,
variant: Option<String>,
description: Option<String>,
price: Option<rusty_money::Money>,
requires_shipping: bool,
discount_percentage: Option<f64>,
discount_flatrate: Option<rusty_money::Money>,
}
struct PurchaseItem {
id: PurchaseItemId,
sku: SkuId,
type: PurchaseItemType,
sku: Option<SkuId>,
quantity: usize,
}
enum PurchaseState {
@ -465,35 +481,5 @@ 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>,
}
```

View File

@ -1,3 +0,0 @@
#!/bin/bash
cargo fmt --check