Move dpts-core to dpts and split crates

This commit is contained in:
fluo10 2025-05-01 08:32:50 +09:00
parent 25e80f74a8
commit e91fd0f2bf
29 changed files with 97 additions and 141 deletions

40
Cargo.lock generated
View file

@ -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]]

View file

@ -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"

View file

@ -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"]}

View file

@ -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};

View file

@ -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)]

View file

@ -1,10 +0,0 @@
use super::id::*;
pub struct Achievement<T, U>
where T: MayId,
U: MayId,
{
id: T,
lavel: U,
count: i8,
}

View file

@ -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<IdValue>;
}
impl MayId for IdNumber {
fn is_id() -> bool {
true
}
fn get_value(&self) -> Option<IdValue> {
Some(IdValue::Number(self.0))
}
}
impl MayId for IdString {
fn is_id() -> bool {
true
}
fn get_value(&self) -> Option<IdValue> {
Some(IdValue::String(self.0.clone()))
}
}
impl MayId for NoId {
fn is_id() -> bool {
false
}
fn get_value(&self) -> Option<IdValue> {
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());
}
}

View file

@ -1,9 +0,0 @@
#[derive(Debug)]
pub struct Label {
pub name: String,
pub description: String,
}

View file

@ -1,9 +0,0 @@
mod id;
mod label;
mod record;
mod achievement;
pub use id::*;
pub use label::*;
pub use record::*;
pub use achievement::*;

View file

@ -1,9 +0,0 @@
use chrono::prelude::*;
use std::collections::HashMap;
#[derive(Clone, Debug)]
pub struct Record {
pub comment: String,
pub date: DateTime<Utc>,
pub achievements: HashMap<String, i8>,
}

View file

@ -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);
}
}

13
dpts-csv/Cargo.toml Normal file
View file

@ -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"

View file

@ -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};

View file

@ -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<crate::entity::RecordDetailModel> for CsvRecord{
type Error = crate::error::Error;
fn try_from(model: crate::entity::RecordDetailModel) -> Result<Self, Self::Error> {
impl TryFrom<RecordDetailModel> for CsvRecord{
type Error = Error;
fn try_from(model: RecordDetailModel) -> Result<Self, Self::Error> {
todo!()
}
}

View file

@ -1,4 +1,4 @@
use crate::error::Error;
use dpts_error::Error;
use super::CsvRecord;
pub struct CsvTable{
inner: Vec<CsvRecord>

View file

@ -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"

View file

@ -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() {

11
dpts-error/Cargo.toml Normal file
View file

@ -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 }

3
dpts-error/src/main.rs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

View file

@ -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"]}

4
src/lib.rs Normal file
View file

@ -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;