diff --git a/crates/entity/src/license.rs b/crates/entity/src/license.rs index d25ecbf..da9a77c 100644 --- a/crates/entity/src/license.rs +++ b/crates/entity/src/license.rs @@ -3,17 +3,10 @@ use sea_orm::entity::prelude::*; use serde::{Deserialize, Serialize}; -#[derive(Copy, Clone, Default, Debug, DeriveEntity)] -pub struct Entity; - -impl EntityName for Entity { - fn table_name(&self) -> &str { - "license" - } -} - -#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq, Serialize, Deserialize)] +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)] +#[sea_orm(table_name = "license")] pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] #[serde(skip_deserializing)] pub id: Uuid, pub name: String, @@ -21,66 +14,21 @@ pub struct Model { pub end: Option, pub amount: Option, pub key: String, - pub note: Option, pub group_id: Uuid, } -#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] -pub enum Column { - Id, - Name, - Start, - End, - Amount, - Key, - Note, - GroupId, -} - -#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] -pub enum PrimaryKey { - Id, -} - -impl PrimaryKeyTrait for PrimaryKey { - type ValueType = Uuid; - fn auto_increment() -> bool { - false - } -} - -#[derive(Copy, Clone, Debug, EnumIter)] +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { + #[sea_orm( + belongs_to = "super::license_group::Entity", + from = "Column::GroupId", + to = "super::license_group::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] LicenseGroup, } -impl ColumnTrait for Column { - type EntityName = Entity; - fn def(&self) -> ColumnDef { - match self { - Self::Id => ColumnType::Uuid.def(), - Self::Name => ColumnType::String(None).def(), - Self::Start => ColumnType::TimestampWithTimeZone.def().null(), - Self::End => ColumnType::TimestampWithTimeZone.def().null(), - Self::Amount => ColumnType::Integer.def().null(), - Self::Key => ColumnType::String(None).def(), - Self::Note => ColumnType::String(None).def().null(), - Self::GroupId => ColumnType::Uuid.def(), - } - } -} - -impl RelationTrait for Relation { - fn def(&self) -> RelationDef { - match self { - Self::LicenseGroup => Entity::belongs_to(super::license_group::Entity) - .from(Column::GroupId) - .to(super::license_group::Column::Id) - .into(), - } - } -} - impl Related for Entity { fn to() -> RelationDef { Relation::LicenseGroup.def() diff --git a/crates/entity/src/license_group.rs b/crates/entity/src/license_group.rs index 8c66757..2ab36c4 100644 --- a/crates/entity/src/license_group.rs +++ b/crates/entity/src/license_group.rs @@ -3,63 +3,21 @@ use sea_orm::entity::prelude::*; use serde::{Deserialize, Serialize}; -#[derive(Copy, Clone, Default, Debug, DeriveEntity)] -pub struct Entity; - -impl EntityName for Entity { - fn table_name(&self) -> &str { - "license_group" - } -} - -#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq, Serialize, Deserialize)] +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)] +#[sea_orm(table_name = "license_group")] pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] #[serde(skip_deserializing)] pub id: Uuid, pub name: String, } -#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] -pub enum Column { - Id, - Name, -} - -#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] -pub enum PrimaryKey { - Id, -} - -impl PrimaryKeyTrait for PrimaryKey { - type ValueType = Uuid; - fn auto_increment() -> bool { - false - } -} - -#[derive(Copy, Clone, Debug, EnumIter)] +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { + #[sea_orm(has_many = "super::license::Entity")] License, } -impl ColumnTrait for Column { - type EntityName = Entity; - fn def(&self) -> ColumnDef { - match self { - Self::Id => ColumnType::Uuid.def(), - Self::Name => ColumnType::String(None).def(), - } - } -} - -impl RelationTrait for Relation { - fn def(&self) -> RelationDef { - match self { - Self::License => Entity::has_many(super::license::Entity).into(), - } - } -} - impl Related for Entity { fn to() -> RelationDef { Relation::License.def() diff --git a/crates/entity/src/user.rs b/crates/entity/src/user.rs index c9836c0..984cd24 100644 --- a/crates/entity/src/user.rs +++ b/crates/entity/src/user.rs @@ -3,63 +3,19 @@ use sea_orm::entity::prelude::*; use serde::{Deserialize, Serialize}; -#[derive(Copy, Clone, Default, Debug, DeriveEntity)] -pub struct Entity; - -impl EntityName for Entity { - fn table_name(&self) -> &str { - "user" - } -} - -#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel, Eq, Serialize, Deserialize)] +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq, Serialize, Deserialize)] +#[sea_orm(table_name = "user")] pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] #[serde(skip_deserializing)] pub id: Uuid, pub name: String, + #[sea_orm(unique)] pub email: String, pub hash: String, } -#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] -pub enum Column { - Id, - Name, - Email, - Hash, -} - -#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] -pub enum PrimaryKey { - Id, -} - -impl PrimaryKeyTrait for PrimaryKey { - type ValueType = Uuid; - fn auto_increment() -> bool { - false - } -} - -#[derive(Copy, Clone, Debug, EnumIter)] +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation {} -impl ColumnTrait for Column { - type EntityName = Entity; - fn def(&self) -> ColumnDef { - match self { - Self::Id => ColumnType::Uuid.def(), - Self::Name => ColumnType::String(None).def(), - Self::Email => ColumnType::String(None).def().unique(), - Self::Hash => ColumnType::String(None).def(), - } - } -} - -impl RelationTrait for Relation { - fn def(&self) -> RelationDef { - panic!("No RelationDef") - } -} - impl ActiveModelBehavior for ActiveModel {} diff --git a/crates/migration/src/m20240709_095325_create_license.rs b/crates/migration/src/m20240709_095325_create_license.rs index e577312..df5f153 100644 --- a/crates/migration/src/m20240709_095325_create_license.rs +++ b/crates/migration/src/m20240709_095325_create_license.rs @@ -23,7 +23,6 @@ impl MigrationTrait for Migration { .col(ColumnDef::new(License::End).timestamp_with_time_zone()) .col(ColumnDef::new(License::Amount).integer()) .col(ColumnDef::new(License::Key).string().not_null()) - .col(ColumnDef::new(License::Note).string()) .col(ColumnDef::new(License::GroupId).uuid().not_null()) .foreign_key( ForeignKey::create() @@ -55,7 +54,6 @@ enum License { Amount, Key, GroupId, - Note, } #[derive(DeriveIden)]