Skip to content

Commit

Permalink
Add cake_expanded entity file for docs demo
Browse files Browse the repository at this point in the history
  • Loading branch information
billy1624 committed Sep 17, 2021
1 parent 38a4d3a commit f4c618e
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 0 deletions.
94 changes: 94 additions & 0 deletions src/tests_cfg/cake_expanded.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
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) -> &str {
"cake"
}
}

#[derive(Clone, Debug, PartialEq, 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(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())
}
}

#[derive(Debug)]
pub struct CakeToFilling;

impl Linked for CakeToFilling {
type FromEntity = Entity;

type ToEntity = super::filling::Entity;

fn link(&self) -> Vec<RelationDef> {
vec![
super::cake_filling::Relation::Cake.def().rev(),
super::cake_filling::Relation::Filling.def(),
]
}
}

impl ActiveModelBehavior for ActiveModel {}
12 changes: 12 additions & 0 deletions src/tests_cfg/fruit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ pub enum Relation {
to = "super::cake::Column::Id"
)]
Cake,
#[sea_orm(
belongs_to = "super::cake_expanded::Entity",
from = "Column::CakeId",
to = "super::cake_expanded::Column::Id"
)]
CakeExpanded,
}

impl Related<super::cake::Entity> for Entity {
Expand All @@ -26,4 +32,10 @@ impl Related<super::cake::Entity> for Entity {
}
}

impl Related<super::cake_expanded::Entity> for Entity {
fn to() -> RelationDef {
Relation::CakeExpanded.def()
}
}

impl ActiveModelBehavior for ActiveModel {}
2 changes: 2 additions & 0 deletions src/tests_cfg/mod.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
//! Configurations for test cases and examples. Not intended for actual use.

pub mod cake;
pub mod cake_expanded;
pub mod cake_filling;
pub mod cake_filling_price;
pub mod filling;
pub mod fruit;

pub use cake::Entity as Cake;
pub use cake_expanded::Entity as CakeExpanded;
pub use cake_filling::Entity as CakeFilling;
pub use cake_filling_price::Entity as CakeFillingPrice;
pub use filling::Entity as Filling;
Expand Down

0 comments on commit f4c618e

Please sign in to comment.