From 4e5e35c1da01b9a5e361083a0752df6653d314c7 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Sun, 8 Dec 2024 22:31:37 +0000 Subject: [PATCH] refactor(trello): rename module types as model --- src/trello/api/boards.rs | 13 ++++- src/trello/api/members.rs | 7 ++- src/trello/api/tests/mod.rs | 5 +- src/trello/client.rs | 2 +- src/trello/mod.rs | 23 ++++++--- src/trello/{types => model}/auth.rs | 12 +++-- src/trello/{types => model}/board.rs | 4 +- src/trello/{types => model}/card.rs | 0 src/trello/model/list.rs | 8 +++ src/trello/{types => model}/mod.rs | 13 ++--- src/trello/{types => model}/new_card.rs | 0 src/trello/tests.rs | 67 +++++++++++++------------ src/trello/types/list.rs | 10 ---- 13 files changed, 89 insertions(+), 75 deletions(-) rename src/trello/{types => model}/auth.rs (70%) rename src/trello/{types => model}/board.rs (66%) rename src/trello/{types => model}/card.rs (100%) create mode 100644 src/trello/model/list.rs rename src/trello/{types => model}/mod.rs (61%) rename src/trello/{types => model}/new_card.rs (100%) delete mode 100644 src/trello/types/list.rs diff --git a/src/trello/api/boards.rs b/src/trello/api/boards.rs index 5ddf1c6..185b606 100644 --- a/src/trello/api/boards.rs +++ b/src/trello/api/boards.rs @@ -1,5 +1,16 @@ // -use crate::trello::types::{board::TrelloBoard, TrelloBoardName}; +use crate::trello::model::board::TrelloBoard; +// use color_eyre::Result; +// use kxio::net::Net; +// +// use crate::{ +// f, +// trello::{ +// model::{TrelloAuth, TrelloBoardId}, +// url, +// }, +// }; +use crate::trello::model::TrelloBoardName; // pub(crate) async fn get_board( // auth: &TrelloAuth, diff --git a/src/trello/api/members.rs b/src/trello/api/members.rs index 8e6571c..3b84b69 100644 --- a/src/trello/api/members.rs +++ b/src/trello/api/members.rs @@ -1,12 +1,11 @@ // use kxio::{net::Net, print::Printer}; -use crate::trello::TrelloConfig; use crate::{ api_result::APIResult, trello::{ - types::{auth::TrelloAuth, board::TrelloBoard}, - url, + model::{auth::TrelloAuth, board::TrelloBoard}, + url, TrelloConfig, }, }; @@ -50,7 +49,7 @@ pub(crate) async fn get_boards_that_member_belongs_to( }; APIResult::new( net.get(url("/members/me/boards?lists=open")) - .headers(auth.into()) + .headers((&auth).into()) .header("Accept", "application/json") .send() .await, diff --git a/src/trello/api/tests/mod.rs b/src/trello/api/tests/mod.rs index b6fdd4b..1fa3797 100644 --- a/src/trello/api/tests/mod.rs +++ b/src/trello/api/tests/mod.rs @@ -6,7 +6,9 @@ use serde_json::json; use crate::{ s, - trello::{api::members::get_boards_that_member_belongs_to, types::board::TrelloBoard}, + trello::{ + api::members::get_boards_that_member_belongs_to, model::board::TrelloBoard, TrelloConfig, + }, }; mod given; @@ -15,7 +17,6 @@ type TestResult = color_eyre::Result<()>; mod members { use super::*; - use crate::trello::TrelloConfig; #[tokio::test] async fn get_member_boards() -> TestResult { diff --git a/src/trello/client.rs b/src/trello/client.rs index d39c001..f2dd728 100644 --- a/src/trello/client.rs +++ b/src/trello/client.rs @@ -1,6 +1,6 @@ // use crate::api_result::APIResult; -use crate::trello::types::board::TrelloBoard; +use crate::trello::model::board::TrelloBoard; use crate::trello::TrelloConfig; use crate::FullCtx; diff --git a/src/trello/mod.rs b/src/trello/mod.rs index ba10d58..3defb10 100644 --- a/src/trello/mod.rs +++ b/src/trello/mod.rs @@ -2,16 +2,23 @@ pub(crate) mod api; pub(crate) mod boards; pub(crate) mod client; -pub(crate) mod types; +pub(crate) mod model; -// #[cfg(test)] -// mod tests; +#[cfg(test)] +mod tests; -use crate::execute::Execute; -use crate::trello::boards::TrelloBoardCommand; -use crate::trello::types::auth::{TrelloApiKey, TrelloApiSecret}; -use crate::trello::types::TrelloBoardName; -use crate::{f, FullCtx}; +use crate::{ + execute::Execute, + f, + trello::{ + boards::TrelloBoardCommand, + model::{ + auth::{TrelloApiKey, TrelloApiSecret}, + TrelloBoardName, + }, + }, + FullCtx, +}; use clap::Parser; pub(crate) fn url(path: impl Into) -> String { diff --git a/src/trello/types/auth.rs b/src/trello/model/auth.rs similarity index 70% rename from src/trello/types/auth.rs rename to src/trello/model/auth.rs index 273b189..2cae623 100644 --- a/src/trello/types/auth.rs +++ b/src/trello/model/auth.rs @@ -1,25 +1,27 @@ -// use std::collections::HashMap; +// use derive_more::derive::Display; use crate::newtype; -newtype!(TrelloApiKey, String, Display, "API Key"); +newtype!(TrelloApiKey, String, Display, PartialOrd, Ord, "API Key"); newtype!( TrelloApiSecret, String, Display, + PartialOrd, + Ord, "API Secret token for Trello" ); #[derive(Debug, Clone)] -pub struct TrelloAuth<'cfg> { +pub(crate) struct TrelloAuth<'cfg> { pub(crate) api_key: &'cfg TrelloApiKey, pub(crate) api_secret: &'cfg TrelloApiSecret, } -impl From> for HashMap { - fn from(value: TrelloAuth) -> Self { +impl From<&TrelloAuth<'_>> for HashMap { + fn from(value: &TrelloAuth) -> Self { HashMap::from([( "Authorization".into(), format!( diff --git a/src/trello/types/board.rs b/src/trello/model/board.rs similarity index 66% rename from src/trello/types/board.rs rename to src/trello/model/board.rs index 1b5c8ef..6d70899 100644 --- a/src/trello/types/board.rs +++ b/src/trello/model/board.rs @@ -1,6 +1,6 @@ // -use crate::trello::types::list::TrelloList; -use crate::trello::types::{TrelloBoardId, TrelloBoardName}; +use super::{TrelloBoardId, TrelloBoardName}; +use crate::trello::model::list::TrelloList; #[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize)] pub(crate) struct TrelloBoard { diff --git a/src/trello/types/card.rs b/src/trello/model/card.rs similarity index 100% rename from src/trello/types/card.rs rename to src/trello/model/card.rs diff --git a/src/trello/model/list.rs b/src/trello/model/list.rs new file mode 100644 index 0000000..5b6c0d3 --- /dev/null +++ b/src/trello/model/list.rs @@ -0,0 +1,8 @@ +// +use super::{TrelloListId, TrelloListName}; + +#[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize)] +pub(crate) struct TrelloList { + pub(crate) id: TrelloListId, + pub(crate) name: TrelloListName, +} diff --git a/src/trello/types/mod.rs b/src/trello/model/mod.rs similarity index 61% rename from src/trello/types/mod.rs rename to src/trello/model/mod.rs index e983aa4..8d9df06 100644 --- a/src/trello/types/mod.rs +++ b/src/trello/model/mod.rs @@ -9,14 +9,7 @@ use derive_more::derive::Display; use crate::newtype; newtype!(TrelloBoardId, String, Display, "Board ID"); -newtype!( - TrelloBoardName, - String, - Display, - PartialOrd, - Ord, - "Board Name" -); +newtype!(TrelloBoardName, String, Display, "Board Name"); newtype!(TrelloListId, String, "List ID"); newtype!( TrelloListName, @@ -26,5 +19,5 @@ newtype!( Ord, "List Name" ); -// newtype!(TrelloCardId, String, Display, "Card ID"); -// newtype!(TrelloCardName, String, Display, "Card Name"); +newtype!(TrelloCardId, String, Display, "Card ID"); +newtype!(TrelloCardName, String, Display, "Card Name"); diff --git a/src/trello/types/new_card.rs b/src/trello/model/new_card.rs similarity index 100% rename from src/trello/types/new_card.rs rename to src/trello/model/new_card.rs diff --git a/src/trello/tests.rs b/src/trello/tests.rs index 0e363b2..414c8d9 100644 --- a/src/trello/tests.rs +++ b/src/trello/tests.rs @@ -3,43 +3,46 @@ use std::collections::HashMap; use crate::{ s, - trello::types::auth::TrelloAuth, trello::{ api::boards::TrelloBoards as _, - types::{ - TrelloBoard, TrelloBoardId, TrelloBoardName, TrelloList, TrelloListId, TrelloListName, - }, + model::{auth::TrelloAuth, board::TrelloBoard, TrelloBoardId, TrelloBoardName}, }, }; -mod board { - #[test] - fn list_of_boards_find_by_name_returns_board() { - //given - let board = TrelloBoard::new( - TrelloBoardId::new("2"), - TrelloBoardName::new("beta"), - vec![], - ); - let boards = vec![ - TrelloBoard::new( - TrelloBoardId::new("1"), - TrelloBoardName::new("alpha"), - vec![], - ), - board.clone(), - TrelloBoard::new( - TrelloBoardId::new("3"), - TrelloBoardName::new("gamma"), - vec![], - ), - ]; +mod commands { + use super::*; - //when - let result = boards.find_by_name(board.name()); + mod board { + use super::*; - //then - assert_eq!(result, Some(&board)); + #[test] + fn list_of_boards_find_by_name_returns_board() { + //given + let board = TrelloBoard { + id: TrelloBoardId::new("2"), + name: TrelloBoardName::new("beta"), + lists: vec![], + }; + let boards = vec![ + TrelloBoard { + id: TrelloBoardId::new("1"), + name: TrelloBoardName::new("alpha"), + lists: vec![], + }, + board.clone(), + TrelloBoard { + id: TrelloBoardId::new("3"), + name: TrelloBoardName::new("gamma"), + lists: vec![], + }, + ]; + + //when + let result = boards.find_by_name(&board.name); + + //then + assert_eq!(result, Some(&board)); + } } } @@ -47,8 +50,8 @@ mod board { fn trello_auth_into_hashmap() { //given let trello_auth = TrelloAuth { - api_key: s!("key").into(), - api_secret: s!("token").into(), + api_key: &s!("key").into(), + api_secret: &s!("token").into(), }; //when diff --git a/src/trello/types/list.rs b/src/trello/types/list.rs deleted file mode 100644 index aeebf93..0000000 --- a/src/trello/types/list.rs +++ /dev/null @@ -1,10 +0,0 @@ -// -use derive_more::derive::Constructor; - -use crate::trello::types::{TrelloListId, TrelloListName}; - -#[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize, Constructor)] -pub(crate) struct TrelloList { - pub(crate) id: TrelloListId, - pub(crate) name: TrelloListName, -}