repo_description: 🐚 A powerful relational ORM for Rust
repo_topics: database hacktoberfest loco mariadb mysql orm postgres rust sql sqlite sqlx tokio
code: use crate as sea_orm;
  use crate::entity::prelude::*;
  
  #[derive(Copy, Clone, Default, Debug, DeriveEntity)]
  pub struct Entity;
  
  impl EntityName for Entity {
      fn table_name(&self) -> &'static str {
          "cake"
      }
  }
  
  #[derive(Clone, Debug, PartialEq, Eq, DeriveModel, DeriveActiveModel)]
  pub struct Model {
      pub id: i32,
      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 = i32;
  
      fn auto_increment() -> bool {
          true
      }
  }
  
  #[derive(Copy, Clone, Debug, EnumIter)]
  pub enum Relation {
      Fruit,
  }
  
  impl ColumnTrait for Column {
      type EntityName = Entity;
  
      fn def(&self) -> ColumnDef {
          match self {
              Self::Id => ColumnType::Integer.def(),
              Self::Name => ColumnType::String(StringLen::None).def(),
          }
      }
  }
  
  impl RelationTrait for Relation {
      fn def(&self) -> RelationDef {
          match self {
              Self::Fruit => Entity::has_many(super::fruit::Entity).into(),
          }
      }
  }
  
  impl Related<super::fruit::Entity> for Entity {
      fn to() -> RelationDef {
          Relation::Fruit.def()
      }
  }
  
  impl Related<super::filling::Entity> for Entity {
      fn to() -> RelationDef {
          super::cake_filling::Relation::Filling.def()
      }
  
      fn via() -> Option<RelationDef> {
          Some(super::cake_filling::Relation::Cake.def().rev())
      }
  }
  
  impl ActiveModelBehavior for ActiveModel {}
  