From e91fd0f2bf8134f715cb63f8df21567899e3e2c5 Mon Sep 17 00:00:00 2001 From: fluo10 Date: Thu, 1 May 2025 08:32:50 +0900 Subject: [PATCH] Move dpts-core to dpts and split crates --- Cargo.lock | 40 +++++++++++--- Cargo.toml | 21 ++++++- dpts-cli/Cargo.toml | 2 +- dpts-cli/src/main.rs | 2 +- dpts-cli/src/record.rs | 2 +- dpts-core/src/data/achievement.rs | 10 ---- dpts-core/src/data/id.rs | 55 ------------------- dpts-core/src/data/label.rs | 9 --- dpts-core/src/data/mod.rs | 9 --- dpts-core/src/data/record.rs | 9 --- dpts-core/src/lib.rs | 22 -------- dpts-csv/Cargo.toml | 13 +++++ .../src/csv/mod.rs => dpts-csv/src/lib.rs | 2 +- {dpts-core/src/csv => dpts-csv/src}/reader.rs | 0 {dpts-core/src/csv => dpts-csv/src}/record.rs | 10 ++-- {dpts-core/src/csv => dpts-csv/src}/table.rs | 2 +- {dpts-core/src/csv => dpts-csv/src}/writer.rs | 0 {dpts-core => dpts-entity}/Cargo.toml | 8 +-- .../entity/mod.rs => dpts-entity/src/lib.rs | 0 .../src}/record_detail.rs | 0 .../src}/record_header.rs | 0 .../entity => dpts-entity/src}/record_tag.rs | 0 .../src/entity => dpts-entity/src}/user.rs | 0 {dpts-core => dpts-entity}/tests/db.rs | 2 +- dpts-error/Cargo.toml | 11 ++++ .../src/error.rs => dpts-error/src/lib.rs | 0 dpts-error/src/main.rs | 3 + dpts-server/Cargo.toml | 2 +- src/lib.rs | 4 ++ 29 files changed, 97 insertions(+), 141 deletions(-) delete mode 100644 dpts-core/src/data/achievement.rs delete mode 100644 dpts-core/src/data/id.rs delete mode 100644 dpts-core/src/data/label.rs delete mode 100644 dpts-core/src/data/mod.rs delete mode 100644 dpts-core/src/data/record.rs delete mode 100644 dpts-core/src/lib.rs create mode 100644 dpts-csv/Cargo.toml rename dpts-core/src/csv/mod.rs => dpts-csv/src/lib.rs (98%) rename {dpts-core/src/csv => dpts-csv/src}/reader.rs (100%) rename {dpts-core/src/csv => dpts-csv/src}/record.rs (59%) rename {dpts-core/src/csv => dpts-csv/src}/table.rs (92%) rename {dpts-core/src/csv => dpts-csv/src}/writer.rs (100%) rename {dpts-core => dpts-entity}/Cargo.toml (85%) rename dpts-core/src/entity/mod.rs => dpts-entity/src/lib.rs (100%) rename {dpts-core/src/entity => dpts-entity/src}/record_detail.rs (100%) rename {dpts-core/src/entity => dpts-entity/src}/record_header.rs (100%) rename {dpts-core/src/entity => dpts-entity/src}/record_tag.rs (100%) rename {dpts-core/src/entity => dpts-entity/src}/user.rs (100%) rename {dpts-core => dpts-entity}/tests/db.rs (98%) create mode 100644 dpts-error/Cargo.toml rename dpts-core/src/error.rs => dpts-error/src/lib.rs (100%) create mode 100644 dpts-error/src/main.rs create mode 100644 src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 8272fb5..fb36f9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -770,34 +770,60 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dpts" +version = "0.1.0" +dependencies = [ + "dpts-csv", + "dpts-entity", + "dpts-error", + "dpts-migration", +] + [[package]] name = "dpts-cli" version = "0.1.0" dependencies = [ "chrono", "clap", - "dpts-core", + "dpts", ] [[package]] -name = "dpts-core" +name = "dpts-csv" +version = "0.1.0" +dependencies = [ + "chrono", + "csv", + "dpts-entity", + "dpts-error", + "serde", +] + +[[package]] +name = "dpts-entity" version = "0.1.0" dependencies = [ - "anyhow", "async-graphql", "axum", "chrono", - "clap", - "csv", "dotenv", "dpts-migration", "log", "sea-orm", "serde", - "thiserror 2.0.12", "tokio", ] +[[package]] +name = "dpts-error" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "thiserror 2.0.12", +] + [[package]] name = "dpts-migration" version = "0.1.0" @@ -812,7 +838,7 @@ version = "0.1.0" dependencies = [ "chrono", "clap", - "dpts-core", + "dpts", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ff2574d..86c509e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,29 @@ +[package] +name = "dpts" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true + +[dependencies] +dpts-csv = { workspace = true } +dpts-entity = { workspace = true } +dpts-error = { workspace = true } +dpts-migration = { workspace = true } + [workspace] -members = ["dpts-*"] +members = [".", "dpts-*"] [workspace.dependencies] -dpts-core = {path = "dpts-core"} +dpts = { path = "." } +dpts-csv = { path = "dpts-csv" } +dpts-entity = { path = "dpts-entity" } +dpts-error = { path = "dpts-error" } dpts-migration = {path = "dpts-migration"} chrono = {version = "0.4", features = ["serde"]} clap = "4.5" dotenv = "0.15.0" +serde = "1.0.219" [workspace.package] version = "0.1.0" diff --git a/dpts-cli/Cargo.toml b/dpts-cli/Cargo.toml index 241b4c6..4267515 100644 --- a/dpts-cli/Cargo.toml +++ b/dpts-cli/Cargo.toml @@ -6,6 +6,6 @@ edition.workspace = true repository.workspace = true [dependencies] -dpts-core = {workspace = true} +dpts = {workspace = true} chrono = {workspace = true} clap = {workspace = true, features = ["derive"]} diff --git a/dpts-cli/src/main.rs b/dpts-cli/src/main.rs index f1004cf..3776aaf 100644 --- a/dpts-cli/src/main.rs +++ b/dpts-cli/src/main.rs @@ -4,7 +4,7 @@ mod record; //use label::LabelArgs; use record::{RecordArgs,RecordAddArgs}; -use dpts_core::error::Error; +use dpts::error::Error; use clap::{Args, CommandFactory, Parser, Subcommand}; diff --git a/dpts-cli/src/record.rs b/dpts-cli/src/record.rs index 6a2d91f..3328e46 100644 --- a/dpts-cli/src/record.rs +++ b/dpts-cli/src/record.rs @@ -1,6 +1,6 @@ use chrono::prelude::*; use clap::{Args, Subcommand}; -use dpts_core::error::Error; +use dpts::error::Error; use std::str::FromStr; #[derive(Args, Clone, Debug)] diff --git a/dpts-core/src/data/achievement.rs b/dpts-core/src/data/achievement.rs deleted file mode 100644 index b2b399f..0000000 --- a/dpts-core/src/data/achievement.rs +++ /dev/null @@ -1,10 +0,0 @@ -use super::id::*; - -pub struct Achievement -where T: MayId, -U: MayId, -{ - id: T, - lavel: U, - count: i8, -} \ No newline at end of file diff --git a/dpts-core/src/data/id.rs b/dpts-core/src/data/id.rs deleted file mode 100644 index b64cd99..0000000 --- a/dpts-core/src/data/id.rs +++ /dev/null @@ -1,55 +0,0 @@ - -#[derive(Debug)] -pub struct IdNumber(usize); -#[derive(Debug)] -pub struct IdString(String); -#[derive(Debug)] -pub struct NoId(); - -#[derive(Debug, PartialEq)] -pub enum IdValue { - Number(usize), - String(String) -} - -pub trait MayId { - fn is_id() -> bool; - fn get_value(&self) -> Option; -} - -impl MayId for IdNumber { - fn is_id() -> bool { - true - } - fn get_value(&self) -> Option { - Some(IdValue::Number(self.0)) - } -} -impl MayId for IdString { - fn is_id() -> bool { - true - } - fn get_value(&self) -> Option { - Some(IdValue::String(self.0.clone())) - } -} -impl MayId for NoId { - fn is_id() -> bool { - false - } - fn get_value(&self) -> Option { - None - } -} - - -#[cfg(test)] -mod tests { - use super::*; - #[test] - fn parse_values() { - assert_eq!(Some(IdValue::Number(1)), IdNumber(1).get_value()); - assert_eq!(Some(IdValue::String("Test".to_string())), IdString("Test".to_string()).get_value()); - assert_eq!(None, NoId().get_value()); - } -} \ No newline at end of file diff --git a/dpts-core/src/data/label.rs b/dpts-core/src/data/label.rs deleted file mode 100644 index 9f9c1fb..0000000 --- a/dpts-core/src/data/label.rs +++ /dev/null @@ -1,9 +0,0 @@ -#[derive(Debug)] -pub struct Label { - pub name: String, - pub description: String, -} - - - - diff --git a/dpts-core/src/data/mod.rs b/dpts-core/src/data/mod.rs deleted file mode 100644 index 93b493f..0000000 --- a/dpts-core/src/data/mod.rs +++ /dev/null @@ -1,9 +0,0 @@ -mod id; -mod label; -mod record; -mod achievement; - -pub use id::*; -pub use label::*; -pub use record::*; -pub use achievement::*; \ No newline at end of file diff --git a/dpts-core/src/data/record.rs b/dpts-core/src/data/record.rs deleted file mode 100644 index 13beb87..0000000 --- a/dpts-core/src/data/record.rs +++ /dev/null @@ -1,9 +0,0 @@ -use chrono::prelude::*; -use std::collections::HashMap; - -#[derive(Clone, Debug)] -pub struct Record { - pub comment: String, - pub date: DateTime, - pub achievements: HashMap, -} diff --git a/dpts-core/src/lib.rs b/dpts-core/src/lib.rs deleted file mode 100644 index b1fb568..0000000 --- a/dpts-core/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -pub mod csv; -pub mod data; -pub mod entity; -pub mod error; -pub use self::data::Label; -pub use self::data::Record; - -pub fn add(left: u64, right: u64) -> u64 { - left + right -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } - -} \ No newline at end of file diff --git a/dpts-csv/Cargo.toml b/dpts-csv/Cargo.toml new file mode 100644 index 0000000..b21839b --- /dev/null +++ b/dpts-csv/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "dpts-csv" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true + +[dependencies] +dpts-entity = { workspace = true } +dpts-error = { workspace = true } +chrono = { workspace = true } +serde = { workspace = true } +csv = "1.3.1" diff --git a/dpts-core/src/csv/mod.rs b/dpts-csv/src/lib.rs similarity index 98% rename from dpts-core/src/csv/mod.rs rename to dpts-csv/src/lib.rs index 3a14503..30fa977 100644 --- a/dpts-core/src/csv/mod.rs +++ b/dpts-csv/src/lib.rs @@ -8,7 +8,7 @@ pub use record::CsvRecord; pub use table::CsvTable; pub use writer::CsvWriter; -use crate::error::Error; +use dpts_error::Error; use chrono::{DateTime, NaiveDateTime}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; diff --git a/dpts-core/src/csv/reader.rs b/dpts-csv/src/reader.rs similarity index 100% rename from dpts-core/src/csv/reader.rs rename to dpts-csv/src/reader.rs diff --git a/dpts-core/src/csv/record.rs b/dpts-csv/src/record.rs similarity index 59% rename from dpts-core/src/csv/record.rs rename to dpts-csv/src/record.rs index a182316..af472bb 100644 --- a/dpts-core/src/csv/record.rs +++ b/dpts-csv/src/record.rs @@ -1,7 +1,7 @@ use chrono::{DateTime, NaiveDateTime}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; - - +use dpts_entity::RecordDetailModel; +use dpts_error::Error; #[derive(Debug, Deserialize, PartialEq, Serialize)] pub struct CsvRecord{ @@ -11,9 +11,9 @@ pub struct CsvRecord{ pub count: i32, } -impl TryFrom for CsvRecord{ - type Error = crate::error::Error; - fn try_from(model: crate::entity::RecordDetailModel) -> Result { +impl TryFrom for CsvRecord{ + type Error = Error; + fn try_from(model: RecordDetailModel) -> Result { todo!() } } \ No newline at end of file diff --git a/dpts-core/src/csv/table.rs b/dpts-csv/src/table.rs similarity index 92% rename from dpts-core/src/csv/table.rs rename to dpts-csv/src/table.rs index 4f475c4..647c633 100644 --- a/dpts-core/src/csv/table.rs +++ b/dpts-csv/src/table.rs @@ -1,4 +1,4 @@ -use crate::error::Error; +use dpts_error::Error; use super::CsvRecord; pub struct CsvTable{ inner: Vec diff --git a/dpts-core/src/csv/writer.rs b/dpts-csv/src/writer.rs similarity index 100% rename from dpts-core/src/csv/writer.rs rename to dpts-csv/src/writer.rs diff --git a/dpts-core/Cargo.toml b/dpts-entity/Cargo.toml similarity index 85% rename from dpts-core/Cargo.toml rename to dpts-entity/Cargo.toml index b5db980..16ebcd7 100644 --- a/dpts-core/Cargo.toml +++ b/dpts-entity/Cargo.toml @@ -1,23 +1,19 @@ [package] -name = "dpts-core" +name = "dpts-entity" version.workspace = true -license.workspace = true edition.workspace = true +license.workspace = true repository.workspace = true [dependencies] dpts-migration = { workspace = true } -anyhow = "1.0" async-graphql = {version = "7.0", features = ["chrono"]} axum = "0.8" chrono = {workspace = true} -clap = {workspace = true} dotenv = {workspace = true} log = "0.4.27" serde = { version = "1.0", features = ["derive"] } -thiserror = "2.0" tokio = "1.44.2" -csv = "1.3.1" [dependencies.sea-orm] version = "1.1" diff --git a/dpts-core/src/entity/mod.rs b/dpts-entity/src/lib.rs similarity index 100% rename from dpts-core/src/entity/mod.rs rename to dpts-entity/src/lib.rs diff --git a/dpts-core/src/entity/record_detail.rs b/dpts-entity/src/record_detail.rs similarity index 100% rename from dpts-core/src/entity/record_detail.rs rename to dpts-entity/src/record_detail.rs diff --git a/dpts-core/src/entity/record_header.rs b/dpts-entity/src/record_header.rs similarity index 100% rename from dpts-core/src/entity/record_header.rs rename to dpts-entity/src/record_header.rs diff --git a/dpts-core/src/entity/record_tag.rs b/dpts-entity/src/record_tag.rs similarity index 100% rename from dpts-core/src/entity/record_tag.rs rename to dpts-entity/src/record_tag.rs diff --git a/dpts-core/src/entity/user.rs b/dpts-entity/src/user.rs similarity index 100% rename from dpts-core/src/entity/user.rs rename to dpts-entity/src/user.rs diff --git a/dpts-core/tests/db.rs b/dpts-entity/tests/db.rs similarity index 98% rename from dpts-core/tests/db.rs rename to dpts-entity/tests/db.rs index 5bc638f..9c0a0aa 100644 --- a/dpts-core/tests/db.rs +++ b/dpts-entity/tests/db.rs @@ -2,7 +2,7 @@ use std::time::Duration; use chrono::{offset, FixedOffset, Local, TimeZone}; use sea_orm::{entity::*, query::*, ConnectOptions, Database}; use dpts_migration::{Migrator, MigratorTrait}; -use dpts_core::entity::*; +use dpts_entity::*; #[tokio::test] async fn main() { diff --git a/dpts-error/Cargo.toml b/dpts-error/Cargo.toml new file mode 100644 index 0000000..ca16ab2 --- /dev/null +++ b/dpts-error/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "dpts-error" +version.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true + +[dependencies] +anyhow = "1.0.98" +thiserror = "2.0.12" +clap = { workspace = true } diff --git a/dpts-core/src/error.rs b/dpts-error/src/lib.rs similarity index 100% rename from dpts-core/src/error.rs rename to dpts-error/src/lib.rs diff --git a/dpts-error/src/main.rs b/dpts-error/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/dpts-error/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/dpts-server/Cargo.toml b/dpts-server/Cargo.toml index afed50b..e725d3d 100644 --- a/dpts-server/Cargo.toml +++ b/dpts-server/Cargo.toml @@ -6,6 +6,6 @@ edition.workspace = true repository.workspace = true [dependencies] -dpts-core = {workspace = true} +dpts = {workspace = true} chrono = {workspace = true} clap = {workspace = true, features = ["derive"]} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..57315ac --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,4 @@ +pub use dpts_csv as csv; +pub use dpts_entity as entity; +pub use dpts_error as error; +pub use dpts_migration as migration; \ No newline at end of file