Add SeaORM Entities
This commit is contained in:
parent
0ed1fa97ee
commit
699a36d7ff
14 changed files with 2244 additions and 24 deletions
2056
Cargo.lock
generated
2056
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -3,10 +3,9 @@ members = ["dpts-*"]
|
|||
|
||||
[workspace.dependencies]
|
||||
dpts-core = {path = "dpts-core"}
|
||||
anyhow = "1.0"
|
||||
chrono = "0.4"
|
||||
thiserror = "2.0"
|
||||
clap = "4.5"
|
||||
dotenv = "0.15.0"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.1.0"
|
||||
|
|
|
@ -6,8 +6,6 @@ edition.workspace = true
|
|||
repository.workspace = true
|
||||
|
||||
[dependencies]
|
||||
dpts-core = { path = "../dpts-core" }
|
||||
anyhow = {workspace = true}
|
||||
dpts-core = {workspace = true}
|
||||
chrono = {workspace = true}
|
||||
clap = {version = "4.5.37", features=["derive"]}
|
||||
thiserror = {workspace = true}
|
||||
clap = {workspace = true, features = ["derive"]}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
pub mod error;
|
||||
//mod label;
|
||||
mod record;
|
||||
|
||||
//use label::LabelArgs;
|
||||
use error::Error;
|
||||
use record::{RecordArgs,RecordAddArgs};
|
||||
|
||||
use dpts_core::error::Error;
|
||||
|
||||
use clap::{Args, CommandFactory, Parser, Subcommand};
|
||||
|
||||
use std::ffi::OsString;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use chrono::prelude::*;
|
||||
use clap::{Args, Subcommand};
|
||||
use crate::Error;
|
||||
use dpts_core::error::Error;
|
||||
use std::str::FromStr;
|
||||
|
||||
#[derive(Args, Clone, Debug)]
|
||||
|
|
|
@ -6,7 +6,21 @@ edition.workspace = true
|
|||
repository.workspace = true
|
||||
|
||||
[dependencies]
|
||||
anyhow = {workspace = true}
|
||||
anyhow = "1.0"
|
||||
async-graphql = "7.0"
|
||||
axum = "0.8"
|
||||
chrono = {workspace = true}
|
||||
clap = {workspace = true, features = ["derive"]}
|
||||
thiserror = {workspace = true}
|
||||
clap = {workspace = true}
|
||||
dotenv = {workspace = true}
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
thiserror = "2.0"
|
||||
|
||||
[dependencies.sea-orm]
|
||||
version = "1.1"
|
||||
features = [
|
||||
"macros",
|
||||
"debug-print",
|
||||
"runtime-tokio-native-tls",
|
||||
"sqlx-sqlite",
|
||||
]
|
||||
default-features = false
|
||||
|
|
4
dpts-core/src/entity/mod.rs
Normal file
4
dpts-core/src/entity/mod.rs
Normal file
|
@ -0,0 +1,4 @@
|
|||
mod record_detail;
|
||||
mod record_header;
|
||||
mod record_tag;
|
||||
mod user;
|
46
dpts-core/src/entity/record_detail.rs
Normal file
46
dpts-core/src/entity/record_detail.rs
Normal file
|
@ -0,0 +1,46 @@
|
|||
use async_graphql::*;
|
||||
use sea_orm::entity::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize, SimpleObject)]
|
||||
#[sea_orm(table_name = "record_detail")]
|
||||
#[graphql(concrete(name = "RecordDetail", params()))]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub record_header_id: i32,
|
||||
#[sea_orm(primary_key)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub record_tag_id: i32,
|
||||
pub count: i32,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(
|
||||
belongs_to = "super::record_header::Entity",
|
||||
from = "Column::RecordHeaderId",
|
||||
to = "super::record_header::Column::Id"
|
||||
)]
|
||||
RecordHeader,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::record_tag::Entity",
|
||||
from = "Column::RecordTagId",
|
||||
to = "super::record_tag::Column::Id"
|
||||
)]
|
||||
RecordTag,
|
||||
}
|
||||
|
||||
impl Related<super::record_header::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::RecordHeader.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::record_tag::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::RecordTag.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
42
dpts-core/src/entity/record_header.rs
Normal file
42
dpts-core/src/entity/record_header.rs
Normal file
|
@ -0,0 +1,42 @@
|
|||
use async_graphql::*;
|
||||
use sea_orm::entity::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize, SimpleObject)]
|
||||
#[sea_orm(table_name = "record_header")]
|
||||
#[graphql(concrete(name = "RecordHeader", params()))]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub id: i32,
|
||||
#[sea_orm(indexed)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub user_id: i32,
|
||||
pub comment: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::record_detail::Entity")]
|
||||
RecordDetail,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::record_detail::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::RecordDetail.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
43
dpts-core/src/entity/record_tag.rs
Normal file
43
dpts-core/src/entity/record_tag.rs
Normal file
|
@ -0,0 +1,43 @@
|
|||
use async_graphql::*;
|
||||
use sea_orm::entity::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize, SimpleObject)]
|
||||
#[sea_orm(table_name = "record_tag")]
|
||||
#[graphql(concrete(name = "RecordTag", params()))]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub id: i32,
|
||||
#[sea_orm(indexed)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub user_id: i32,
|
||||
#[sea_orm(indexed)]
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::record_detail::Entity")]
|
||||
RecordDetail,
|
||||
#[sea_orm(
|
||||
belongs_to = "super::user::Entity",
|
||||
from = "Column::UserId",
|
||||
to = "super::user::Column::Id"
|
||||
)]
|
||||
User,
|
||||
}
|
||||
|
||||
impl Related<super::record_detail::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::RecordDetail.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::user::Entity> for Entity {
|
||||
fn to() -> RelationDef {
|
||||
Relation::User.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
36
dpts-core/src/entity/user.rs
Normal file
36
dpts-core/src/entity/user.rs
Normal file
|
@ -0,0 +1,36 @@
|
|||
use async_graphql::*;
|
||||
use sea_orm::entity::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize, SimpleObject)]
|
||||
#[sea_orm(table_name = "user")]
|
||||
#[graphql(concrete(name = "User", params()))]
|
||||
pub struct Model {
|
||||
#[sea_orm(primary_key)]
|
||||
#[serde(skip_deserializing)]
|
||||
pub id: i32,
|
||||
#[sea_orm(unique, indexed)]
|
||||
pub login_name: String,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)]
|
||||
pub enum Relation {
|
||||
#[sea_orm(has_many = "super::record_header::Entity")]
|
||||
RecordHeader,
|
||||
#[sea_orm(has_many = "super::record_tag::Entity")]
|
||||
RecordTag,
|
||||
}
|
||||
|
||||
impl Related<super::record_header::Entity> for Model {
|
||||
fn to() -> RelationDef {
|
||||
Relation::RecordHeader.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl Related<super::record_tag::Entity> for Model {
|
||||
fn to() -> RelationDef {
|
||||
Relation::RecordTag.def()
|
||||
}
|
||||
}
|
||||
|
||||
impl ActiveModelBehavior for ActiveModel {}
|
|
@ -1,4 +1,6 @@
|
|||
pub mod data;
|
||||
pub mod entity;
|
||||
pub mod error;
|
||||
pub use self::data::Label;
|
||||
pub use self::data::Record;
|
||||
|
||||
|
|
|
@ -7,7 +7,5 @@ repository.workspace = true
|
|||
|
||||
[dependencies]
|
||||
dpts-core = {workspace = true}
|
||||
anyhow = {workspace = true}
|
||||
chrono = {workspace = true}
|
||||
clap = {version = "4.5.37", features=["derive"]}
|
||||
thiserror = {workspace = true}
|
||||
clap = {workspace = true, features = ["derive"]}
|
||||
|
|
Loading…
Add table
Reference in a new issue