Refactor Link
This commit is contained in:
parent
fbd390662b
commit
8a4996300f
20
src/entity/link.rs
Normal file
20
src/entity/link.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use crate::{EntityTrait, RelationDef, QuerySelect, Select};
|
||||||
|
use sea_query::{JoinType};
|
||||||
|
|
||||||
|
pub type LinkDef = RelationDef;
|
||||||
|
|
||||||
|
pub trait Linked {
|
||||||
|
type FromEntity: EntityTrait;
|
||||||
|
|
||||||
|
type ToEntity: EntityTrait;
|
||||||
|
|
||||||
|
fn link(&self) -> Vec<LinkDef>;
|
||||||
|
|
||||||
|
fn find_linked(&self) -> Select<Self::ToEntity> {
|
||||||
|
let mut select = Select::new();
|
||||||
|
for rel in self.link().into_iter().rev() {
|
||||||
|
select = select.join_rev(JoinType::InnerJoin, rel);
|
||||||
|
}
|
||||||
|
select
|
||||||
|
}
|
||||||
|
}
|
@ -2,6 +2,7 @@ mod active_model;
|
|||||||
mod base_entity;
|
mod base_entity;
|
||||||
mod column;
|
mod column;
|
||||||
mod identity;
|
mod identity;
|
||||||
|
mod link;
|
||||||
mod model;
|
mod model;
|
||||||
pub mod prelude;
|
pub mod prelude;
|
||||||
mod primary_key;
|
mod primary_key;
|
||||||
@ -11,6 +12,7 @@ pub use active_model::*;
|
|||||||
pub use base_entity::*;
|
pub use base_entity::*;
|
||||||
pub use column::*;
|
pub use column::*;
|
||||||
pub use identity::*;
|
pub use identity::*;
|
||||||
|
pub use link::*;
|
||||||
pub use model::*;
|
pub use model::*;
|
||||||
// pub use prelude::*;
|
// pub use prelude::*;
|
||||||
pub use primary_key::*;
|
pub use primary_key::*;
|
||||||
|
@ -30,22 +30,6 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Linked {
|
|
||||||
type FromEntity: EntityTrait;
|
|
||||||
|
|
||||||
type ToEntity: EntityTrait;
|
|
||||||
|
|
||||||
fn link(&self) -> Vec<RelationDef>;
|
|
||||||
|
|
||||||
fn find_linked(&self) -> Select<Self::ToEntity> {
|
|
||||||
let mut select = Select::new();
|
|
||||||
for rel in self.link().into_iter().rev() {
|
|
||||||
select = select.join_rev(JoinType::InnerJoin, rel);
|
|
||||||
}
|
|
||||||
select
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct RelationDef {
|
pub struct RelationDef {
|
||||||
pub rel_type: RelationType,
|
pub rel_type: RelationType,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user