From 863dccd4fd7ee76678b7fff474f62e6f75af4cfb Mon Sep 17 00:00:00 2001 From: Alexander Ng Date: Wed, 11 Dec 2024 01:13:14 -0800 Subject: [PATCH] muscles --- data.json | 79 ------------------------------------- gen.ts | 8 ++-- relevant.json | 53 ------------------------- src/main.rs | 4 +- src/v1/body_parts/create.rs | 34 ---------------- src/v1/body_parts/mod.rs | 13 ------ src/v1/mod.rs | 2 - src/v1/muscles/create.rs | 11 ++++-- src/v1/muscles/get_all.rs | 23 +++++++++++ src/v1/muscles/mod.rs | 2 + 10 files changed, 40 insertions(+), 189 deletions(-) delete mode 100644 data.json delete mode 100644 relevant.json delete mode 100644 src/v1/body_parts/create.rs delete mode 100644 src/v1/body_parts/mod.rs create mode 100644 src/v1/muscles/get_all.rs diff --git a/data.json b/data.json deleted file mode 100644 index e6a59ac..0000000 --- a/data.json +++ /dev/null @@ -1,79 +0,0 @@ -[ - { - "major_group": "Upper Body", - "group_name": "Chest", - "muscles": [ - "Pectoralis major", - "Pectoralis minor" - ] - }, - { - "major_group": "Upper Body", - "group_name": "Back", - "muscles": [ - "Latissimus dorsi", - "Trapezius", - "Rhomboids", - "Erector spinae", - "Teres major" - ] - }, - { - "major_group": "Upper Body", - "group_name": "Shoulders", - "muscles": [ - "Deltoids", - "Rotator cuff muscles" - ] - }, - { - "major_group": "Upper Body", - "group_name": "Arms", - "muscles": [ - "Biceps brachii", - "Brachialis", - "Triceps brachii", - "Brachioradialis", - "Forearm flexors/extensors" - ] - }, - { - "major_group": "Core", - "group_name": "Abdominals", - "muscles": [ - "Rectus abdominis", - "Transverse abdominis", - "External obliques", - "Internal obliques" - ] - }, - { - "major_group": "Core", - "group_name": "Lower Back", - "muscles": [ - "Quadratus lumborum", - "Erector spinae" - ] - }, - { - "major_group": "Lower Body", - "group_name": "Legs", - "muscles": [ - "Quadriceps", - "Hamstrings", - "Gluteus maximus", - "Gluteus medius", - "Gluteus minimus", - "Adductors", - "Abductors" - ] - }, - { - "major_group": "Lower Body", - "group_name": "Calves", - "muscles": [ - "Gastrocnemius", - "Soleus" - ] - } -] diff --git a/gen.ts b/gen.ts index 1291d57..b72bcea 100644 --- a/gen.ts +++ b/gen.ts @@ -16,8 +16,8 @@ const data: MuscleGroup[] = [ major_group: "Upper Body", group_name: "Chest", muscles: [ - { colloquial_name: "Pecs", scientific_name: "Pectoralis major" }, - { colloquial_name: "Pec Minor", scientific_name: "Pectoralis minor" } + { colloquial_name: "Upper Pecs", scientific_name: "Clavicular Pectoralis Major" }, + { colloquial_name: "Pecs", scientific_name: "Sternal Pectoralis Major" }, ] }, { @@ -35,7 +35,9 @@ const data: MuscleGroup[] = [ major_group: "Upper Body", group_name: "Shoulders", muscles: [ - { colloquial_name: "Delts", scientific_name: "Deltoideus" }, + { colloquial_name: "Front Delts", scientific_name: "Anterior deltoid" }, + { colloquial_name: "Rear Delts", scientific_name: "Posterior deltoid" }, + { colloquial_name: "Side Delts", scientific_name: "Lateral deltoid" }, { colloquial_name: "Rotator Cuff", scientific_name: "Rotator cuff" } ] }, diff --git a/relevant.json b/relevant.json deleted file mode 100644 index 11e979f..0000000 --- a/relevant.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "Upper Body": { - "Chest": { - "Pectoralis major": "Pecs", - "Pectoralis minor": "Pecs" - }, - "Back": { - "Latissimus dorsi": "Lats", - "Trapezius": "Traps", - "Rhomboids": "Upper/mid-back muscles", - "Erector spinae": "Spinal erectors", - "Teres major": "Upper lats" - }, - "Shoulders": { - "Deltoids": "Delts", - "Rotator cuff muscles": "Rotator cuff" - }, - "Arms": { - "Biceps brachii": "Biceps", - "Brachialis": "Biceps’ under-muscle", - "Triceps brachii": "Triceps", - "Brachioradialis": "Forearm muscles", - "Forearm flexors/extensors": "Forearm muscles" - } - }, - "Core": { - "Abdominals": { - "Rectus abdominis": "Abs", - "Transverse abdominis": "Deep core abs", - "External obliques": "Side abs", - "Internal obliques": "Inner side abs" - }, - "Lower Back": { - "Quadratus lumborum": "QL/Lower back muscles", - "Erector spinae": "Spinal erectors" - } - }, - "Lower Body": { - "Legs": { - "Quadriceps": "Quads", - "Hamstrings": "Quads", - "Gluteus maximus": "Glutes/Butt muscles", - "Gluteus medius": "Glutes/Butt muscles", - "Gluteus minimus": "Glutes/Butt muscles", - "Adductors": "Adductors", - "Abductors": "Adductors" - }, - "Calves": { - "Gastrocnemius": "Calves", - "Soleus": "Calves" - } - } -} diff --git a/src/main.rs b/src/main.rs index 626d45d..e6fdf71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,7 +6,7 @@ use utoipa_axum::{router::OpenApiRouter, routes}; use utoipa_swagger_ui::SwaggerUi; // tags -use v1::{auth::AUTH_TAG, body_parts::BODY_PARTS_TAG, exercises::EXERCISES_TAG}; +use v1::{auth::AUTH_TAG, exercises::EXERCISES_TAG, muscles::MUSCLES_TAG}; mod v1; mod structs; @@ -28,7 +28,7 @@ pub(crate) use utoipa::ToSchema; tags( (name = AUTH_TAG, description = "Authentication API endpoints"), (name = EXERCISES_TAG, description = "Exercise API endpoints"), - (name = BODY_PARTS_TAG, description = "Body part API endpoints"), + (name = MUSCLES_TAG, description = "Muscle API endpoints"), // (name = CUSTOMER_TAG, description = "Customer API endpoints"), // (name = ORDER_TAG, description = "Order API endpoints") ), diff --git a/src/v1/body_parts/create.rs b/src/v1/body_parts/create.rs deleted file mode 100644 index 071a5a6..0000000 --- a/src/v1/body_parts/create.rs +++ /dev/null @@ -1,34 +0,0 @@ -use extractors::users::UserId; -use sqlx::query; - -use crate::*; - -#[derive(Serialize, Deserialize, ToSchema)] -pub struct CreateBodyPartBody { - name: String, -} - -#[utoipa::path(post, path = "/create", responses((status = OK, body = String)), tag = super::BODY_PARTS_TAG)] -pub async fn create( - State(state): State, - UserId(user_id): UserId, - Json(body): Json, -) -> Result { - let is_admin = query!("SELECT is_admin FROM users WHERE id = $1", user_id) - .fetch_one(&*state.db) - .await? - .is_admin; - - if !is_admin { - return Err(AppError::Error(Errors::Unauthorized)); - } - - let out = query!( - "INSERT INTO body_parts (name) VALUES ($1) RETURNING id", - body.name - ) - .fetch_one(&*state.db) - .await?; - - Ok(out.id.to_string()) -} diff --git a/src/v1/body_parts/mod.rs b/src/v1/body_parts/mod.rs deleted file mode 100644 index 6b8d117..0000000 --- a/src/v1/body_parts/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -use crate::AppState; - -pub(super) use super::*; - -pub mod create; - -pub const BODY_PARTS_TAG: &str = "body_parts"; - -pub(super) fn router(state: AppState) -> OpenApiRouter { - OpenApiRouter::new() - .routes(routes!(create::create)) - .with_state(state) -} diff --git a/src/v1/mod.rs b/src/v1/mod.rs index 8e53b96..7acc8fb 100644 --- a/src/v1/mod.rs +++ b/src/v1/mod.rs @@ -4,7 +4,6 @@ pub(super) use utoipa_axum::routes; use crate::AppState; pub mod auth; -pub mod body_parts; pub mod exercises; pub mod muscles; @@ -13,6 +12,5 @@ pub fn router(state: AppState) -> OpenApiRouter { .with_state(state.clone()) .nest("/auth", auth::router(state.clone())) .nest("/exercises", exercises::router(state.clone())) - .nest("/body_parts", body_parts::router(state.clone())) .nest("/muscles", muscles::router(state.clone())) } diff --git a/src/v1/muscles/create.rs b/src/v1/muscles/create.rs index ec96fbb..74e20bb 100644 --- a/src/v1/muscles/create.rs +++ b/src/v1/muscles/create.rs @@ -6,7 +6,9 @@ use crate::*; #[derive(Serialize, Deserialize, ToSchema)] pub struct CreateMuscleBody { name: String, - body_parts: Vec, + scientific_name: String, + major_group: String, + minor_group: String, } #[utoipa::path(post, path = "/create", responses((status = OK, body = String)), tag = super::MUSCLES_TAG)] @@ -25,8 +27,11 @@ pub async fn create( } let out = query!( - "INSERT INTO muscles (name) VALUES ($1) RETURNING id", - body.name + "INSERT INTO muscles (name, scientific_name, major_group, minor_group) VALUES ($1, $2, $3, $4) RETURNING id", + body.name, + body.scientific_name, + body.major_group, + body.minor_group, ) .fetch_one(&*state.db) .await?; diff --git a/src/v1/muscles/get_all.rs b/src/v1/muscles/get_all.rs new file mode 100644 index 0000000..a8bf05a --- /dev/null +++ b/src/v1/muscles/get_all.rs @@ -0,0 +1,23 @@ +// use extractors::users::UserId; +use sqlx::query_as; + +use crate::*; + +#[derive(Serialize, Deserialize, ToSchema)] +pub struct Muscle { + id: String, + name: String, + scientific_name: Option, + major_group: Option, + minor_group: String, +} + +#[utoipa::path(get, path = "/all", responses((status = OK, body = Muscle)), tag = super::MUSCLES_TAG)] +pub async fn get_all(State(state): State) -> Result>, AppError> { + let muscles = query_as!(Muscle, "SELECT * FROM muscles") + .fetch_all(&*state.db) + .await?; + + Ok(Json(muscles)) +} + diff --git a/src/v1/muscles/mod.rs b/src/v1/muscles/mod.rs index 4f7394b..b9824e4 100644 --- a/src/v1/muscles/mod.rs +++ b/src/v1/muscles/mod.rs @@ -3,11 +3,13 @@ use crate::AppState; pub(super) use super::*; pub mod create; +pub mod get_all; pub const MUSCLES_TAG: &str = "muscles"; pub(super) fn router(state: AppState) -> OpenApiRouter { OpenApiRouter::new() .routes(routes!(create::create)) + .routes(routes!(get_all::get_all)) .with_state(state) }