use sea_orm::entity::prelude::*; #[derive(Copy, Clone, Default, Debug, DeriveEntity)] pub struct Entity; impl EntityName for Entity { fn table_name(&self) -> &str { "bakery" } } #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] pub struct Model { pub id: i32, pub name: String, pub profit_margin: f64, } #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] pub enum Column { Id, Name, ProfitMargin, } #[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] pub enum PrimaryKey { Id, } impl PrimaryKeyTrait for PrimaryKey { fn auto_increment() -> bool { true } } #[derive(Copy, Clone, Debug, EnumIter)] pub enum Relation { Baker, Order, } impl ColumnTrait for Column { type EntityName = Entity; fn def(&self) -> ColumnDef { match self { Self::Id => ColumnType::Integer.def(), Self::Name => ColumnType::String(None).def(), Self::ProfitMargin => ColumnType::Float.def(), } } } impl RelationTrait for Relation { fn def(&self) -> RelationDef { match self { Self::Baker => Entity::has_many(super::baker::Entity).into(), Self::Order => Entity::has_many(super::order::Entity).into(), } } } impl Related for Entity { fn to() -> RelationDef { Relation::Baker.def() } } impl Model { pub fn find_bakers(&self) -> Select { Entity::find_related().belongs_to::(self) } } impl ActiveModelBehavior for ActiveModel {}