From 315a84b510c833239a66c4197e6c77d101e8a1bf Mon Sep 17 00:00:00 2001 From: Bregy Malpartida Date: Sun, 5 Mar 2023 18:40:32 -0500 Subject: [PATCH 1/2] feat: updated with new models and ~example of dalaloader --- migrations/20221228013635_init.sql | Bin 23846 -> 13044 bytes migrations/db.hcl | 168 ++++---------------- sqlx-data.json | 236 ++++++++++++++++++++++++++--- src/graphql/mutation.rs | 158 ++++++++++--------- src/graphql/query.rs | 81 ++++++---- src/graphql/subscription.rs | 6 +- src/main.rs | 7 +- src/sdk/labels.rs | 128 ++++++++++++++++ src/sdk/member.rs | 135 +++++++++-------- src/sdk/mod.rs | 1 + src/sdk/organization.rs | 16 ++ src/sdk/project.rs | 69 +++++---- src/sdk/task.rs | 63 ++++++-- src/sdk/team.rs | 40 ++--- 14 files changed, 712 insertions(+), 396 deletions(-) create mode 100644 src/sdk/labels.rs create mode 100644 src/sdk/organization.rs diff --git a/migrations/20221228013635_init.sql b/migrations/20221228013635_init.sql index 2bdf8bf8d52d6b5a2f6847d6762902ef1577bb02..782a664b88ca965e9291250e839c6f8d51dff0fe 100644 GIT binary patch literal 13044 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.unwrap().0; let plexo_engine = ctx.data::().unwrap(); println!("token: {}", auth_token); - + let task_final_info = sqlx::query!( r#" INSERT INTO tasks (title, description, owner_id, status, priority, due_date, project_id, lead_id, labels) @@ -76,7 +76,6 @@ impl MutationRoot { .execute(&plexo_engine.pool) .await .unwrap(); - for assignee in assignees { let _add_assignee = sqlx::query!( @@ -91,8 +90,7 @@ impl MutationRoot { .await .unwrap(); } - - }, + } None => (), }; @@ -109,25 +107,25 @@ impl MutationRoot { .map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: task_final_info.project_id, lead_id: task_final_info.lead_id, - labels: task_final_info - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: task_final_info.owner_id.unwrap_or(Uuid::nil()), + // labels: task_final_info + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: task_final_info.owner_id, count: task_final_info.count, }; // plexo_engine // .subscription_manager // .broadcast_task_created(auth_token, task) - // .await; + // .await; task } @@ -168,7 +166,7 @@ impl MutationRoot { ).fetch_one(&plexo_engine.pool) .await .unwrap(); - + let _a = match assignees { Some(assignees) => { let _delete_assignees = sqlx::query!( @@ -181,7 +179,6 @@ impl MutationRoot { .execute(&plexo_engine.pool) .await .unwrap(); - for assignee in assignees { let _add_assignee = sqlx::query!( @@ -196,8 +193,7 @@ impl MutationRoot { .await .unwrap(); } - - }, + } None => (), }; @@ -214,21 +210,21 @@ impl MutationRoot { .map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: task_final_info.project_id, lead_id: task_final_info.lead_id, - labels: task_final_info - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: task_final_info.owner_id.unwrap_or(Uuid::nil()), + // labels: task_final_info + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: task_final_info.owner_id, count: task_final_info.count, }; - + task } @@ -271,21 +267,21 @@ impl MutationRoot { .map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: task_final_info.project_id, lead_id: task_final_info.lead_id, - labels: task_final_info - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: task_final_info.owner_id.unwrap_or(Uuid::nil()), + // labels: task_final_info + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: task_final_info.owner_id, count: task_final_info.count, }; - + task } @@ -583,7 +579,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -758,7 +754,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -827,7 +823,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -1096,8 +1092,6 @@ impl MutationRoot { } } - - async fn add_assignees_to_task( &self, ctx: &Context<'_>, @@ -1145,18 +1139,18 @@ impl MutationRoot { .map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: task.project_id, lead_id: task.lead_id, - labels: task - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: task.owner_id.unwrap_or(Uuid::nil()), + // labels: task + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: task.owner_id, count: task.count, } } @@ -1208,18 +1202,18 @@ impl MutationRoot { .map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: task.project_id, lead_id: task.lead_id, - labels: task - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: task.owner_id.unwrap_or(Uuid::nil()), + // labels: task + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: task.owner_id, count: task.count, } } @@ -1359,7 +1353,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -1411,7 +1405,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -1644,7 +1638,7 @@ impl MutationRoot { // name: project.name.clone(), // description: project.description.clone(), // prefix: project.prefix.clone(), - // owner_id: project.owner_id.unwrap_or(Uuid::nil()), + // owner_id: project.owner_id, // lead_id: project.lead_id, // start_date: project // .due_date @@ -1696,7 +1690,7 @@ impl MutationRoot { // name: project.name.clone(), // description: project.description.clone(), // prefix: project.prefix.clone(), - // owner_id: project.owner_id.unwrap_or(Uuid::nil()), + // owner_id: project.owner_id, // lead_id: project.lead_id, // start_date: project // .due_date @@ -1750,7 +1744,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -1802,7 +1796,7 @@ impl MutationRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date diff --git a/src/graphql/query.rs b/src/graphql/query.rs index 9daafe5..b808c2c 100644 --- a/src/graphql/query.rs +++ b/src/graphql/query.rs @@ -5,6 +5,7 @@ use uuid::Uuid; use crate::{ auth::auth::PlexoAuthToken, sdk::{ + labels::Label, member::{Member, MemberRole}, project::Project, task::{Task, TaskPriority, TaskStatus}, @@ -76,18 +77,18 @@ impl QueryRoot { due_date: r.due_date.map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: r.project_id, lead_id: r.lead_id, - labels: r - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: r.owner_id.unwrap_or(Uuid::nil()), + // labels: r + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: r.owner_id, count: r.count, }) .collect() @@ -123,18 +124,18 @@ impl QueryRoot { .map(|d| DateTimeBridge::from_offset_date_time(d)), project_id: task.project_id, lead_id: task.lead_id, - labels: task - .labels - .as_ref() - .map(|l| { - l.as_array() - .unwrap() - .iter() - .map(|s| s.as_str().unwrap().to_string()) - .collect() - }) - .unwrap_or(vec![]), - owner_id: task.owner_id.unwrap_or(Uuid::nil()), + // labels: task + // .labels + // .as_ref() + // .map(|l| { + // l.as_array() + // .unwrap() + // .iter() + // .map(|s| s.as_str().unwrap().to_string()) + // .collect() + // }) + // .unwrap_or(vec![]), + owner_id: task.owner_id, count: task.count, } } @@ -268,7 +269,7 @@ impl QueryRoot { updated_at: DateTimeBridge::from_offset_date_time(r.updated_at), name: r.name.clone(), prefix: r.prefix.clone(), - owner_id: r.owner_id.unwrap_or(Uuid::nil()), + owner_id: r.owner_id, description: r.description.clone(), lead_id: r.lead_id.clone(), start_date: r @@ -305,7 +306,7 @@ impl QueryRoot { name: project.name.clone(), description: project.description.clone(), prefix: project.prefix.clone(), - owner_id: project.owner_id.unwrap_or(Uuid::nil()), + owner_id: project.owner_id, lead_id: project.lead_id, start_date: project .due_date @@ -373,4 +374,32 @@ impl QueryRoot { prefix: team.prefix, } } + + async fn labels(&self, ctx: &Context<'_>) -> Vec