From 3f5b0080daae6bc80373f171c1e3f6350244c1b4 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Sat, 8 May 2021 14:40:05 +0800 Subject: [PATCH] Rename traits --- examples/sqlx-mysql/src/main.rs | 4 +-- src/connector/select.rs | 8 +++--- src/entity/base.rs | 10 +++---- src/entity/column.rs | 2 +- src/entity/model.rs | 2 +- src/entity/relation.rs | 12 ++++----- src/lib.rs | 3 +++ src/query/select.rs | 10 +++---- src/tests_cfg/cake.rs | 47 ++++++++++++++++----------------- 9 files changed, 50 insertions(+), 48 deletions(-) diff --git a/examples/sqlx-mysql/src/main.rs b/examples/sqlx-mysql/src/main.rs index 9be91c41..055c3b29 100644 --- a/examples/sqlx-mysql/src/main.rs +++ b/examples/sqlx-mysql/src/main.rs @@ -1,4 +1,4 @@ -use sea_orm::{tests_cfg::*, Database, Entity}; +use sea_orm::{tests_cfg::*, Database, EntityTrait}; #[async_std::main] async fn main() { @@ -9,7 +9,7 @@ async fn main() { println!("{:?}", db); println!(); - let cakes = cake::Cake::find().all(&db).await.unwrap(); + let cakes = cake::Entity::find().all(&db).await.unwrap(); for cc in cakes.iter() { println!("{:?}", cc); diff --git a/src/connector/select.rs b/src/connector/select.rs index 79ec0da5..0799c518 100644 --- a/src/connector/select.rs +++ b/src/connector/select.rs @@ -1,13 +1,13 @@ -use crate::{Connection, Database, Entity, Model, QueryErr, Select}; +use crate::{Connection, Database, EntityTrait, ModelTrait, QueryErr, Select}; impl Select<'_, E> where - E: Entity, + E: EntityTrait, { pub async fn one(self, db: &Database) -> Result { let builder = db.get_query_builder_backend(); let row = db.get_connection().query_one(self.build(builder)).await?; - Ok(::Model::from_query_result(row)?) + Ok(::Model::from_query_result(row)?) } pub async fn all(self, db: &Database) -> Result, QueryErr> { @@ -15,7 +15,7 @@ where let rows = db.get_connection().query_all(self.build(builder)).await?; let mut models = Vec::new(); for row in rows.into_iter() { - models.push(::Model::from_query_result(row)?); + models.push(::Model::from_query_result(row)?); } Ok(models) } diff --git a/src/entity/base.rs b/src/entity/base.rs index d8f55af7..05863723 100644 --- a/src/entity/base.rs +++ b/src/entity/base.rs @@ -1,15 +1,15 @@ -use super::{Column, Identity, Model, Relation}; +use super::{ColumnTrait, Identity, ModelTrait, RelationTrait}; use crate::Select; use sea_query::Iden; use std::fmt::Debug; pub use strum::IntoEnumIterator as Iterable; -pub trait Entity: Iden + Default + Debug { - type Model: Model; +pub trait EntityTrait: Iden + Default + Debug { + type Model: ModelTrait; - type Column: Column + Iterable; + type Column: ColumnTrait + Iterable; - type Relation: Relation + Iterable; + type Relation: RelationTrait + Iterable; fn primary_key() -> Identity; diff --git a/src/entity/column.rs b/src/entity/column.rs index 54ad6f29..71f2b701 100644 --- a/src/entity/column.rs +++ b/src/entity/column.rs @@ -1,6 +1,6 @@ pub use sea_query::ColumnType; use sea_query::Iden; -pub trait Column: Iden { +pub trait ColumnTrait: Iden { fn col_type(&self) -> ColumnType; } diff --git a/src/entity/model.rs b/src/entity/model.rs index fa29df96..98e2d6ac 100644 --- a/src/entity/model.rs +++ b/src/entity/model.rs @@ -1,6 +1,6 @@ use crate::{QueryResult, TypeErr}; -pub trait Model { +pub trait ModelTrait { fn from_query_result(row: QueryResult) -> Result where Self: std::marker::Sized; diff --git a/src/entity/relation.rs b/src/entity/relation.rs index a97972fb..b3dd8658 100644 --- a/src/entity/relation.rs +++ b/src/entity/relation.rs @@ -1,5 +1,5 @@ use super::{Identity, IntoIdentity}; -use crate::Entity; +use crate::EntityTrait; use sea_query::{Iden, IntoIden}; use std::rc::Rc; @@ -10,7 +10,7 @@ pub enum RelationType { BelongsTo, } -pub trait Relation { +pub trait RelationTrait { fn rel_def(&self) -> RelationDef; } @@ -31,28 +31,28 @@ pub struct RelationBuilder { impl RelationBuilder { pub fn has_one(entity: E) -> Self where - E: Entity, + E: EntityTrait, { Self::new(RelationType::HasOne, entity) } pub fn has_many(entity: E) -> Self where - E: Entity, + E: EntityTrait, { Self::new(RelationType::HasMany, entity) } pub fn belongs_to(entity: E) -> Self where - E: Entity, + E: EntityTrait, { Self::new(RelationType::BelongsTo, entity) } fn new(rel_type: RelationType, entity: E) -> Self where - E: Entity, + E: EntityTrait, { Self { rel_type, diff --git a/src/lib.rs b/src/lib.rs index 8bd611da..88d3999c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,3 +11,6 @@ pub use database::*; pub use driver::*; pub use entity::*; pub use query::*; + +pub use sea_query::Iden; +pub use strum::EnumIter; \ No newline at end of file diff --git a/src/query/select.rs b/src/query/select.rs index b04bd6f7..9c71a734 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -1,4 +1,4 @@ -use crate::{entity::*, Iterable, RelationDef, Statement}; +use crate::{EntityTrait, Identity, Iterable, RelationDef, Statement}; use core::fmt::Debug; use core::marker::PhantomData; pub use sea_query::JoinType; @@ -8,7 +8,7 @@ use std::rc::Rc; #[derive(Debug)] pub struct Select<'s, E: 'static> where - E: Entity, + E: EntityTrait, { select: SelectStatement, entity: PhantomData<&'s E>, @@ -16,7 +16,7 @@ where impl Select<'_, E> where - E: Entity, + E: EntityTrait, { pub(crate) fn new(_: E) -> Self { Self { @@ -89,13 +89,13 @@ where #[cfg(test)] mod tests { use crate::tests_cfg::cake; - use crate::Entity; + use crate::EntityTrait; use sea_query::MySqlQueryBuilder; #[test] fn test_1() { assert_eq!( - cake::Cake::find() + cake::Entity::find() .build(MySqlQueryBuilder::default()) .to_string(), "SELECT `cake`.`id`, `cake`.`name` FROM `cake`" diff --git a/src/tests_cfg/cake.rs b/src/tests_cfg/cake.rs index 9b12a39b..74d1a6b2 100644 --- a/src/tests_cfg/cake.rs +++ b/src/tests_cfg/cake.rs @@ -1,41 +1,49 @@ use crate::{ - Column, ColumnType, Entity, Identity, IntoIdentity, Model, QueryResult, Relation, RelationDef, - TypeErr, + ColumnTrait, ColumnType, EntityTrait, Identity, IntoIdentity, ModelTrait, QueryResult, RelationDef, + RelationTrait, TypeErr, EnumIter, Iden }; -use sea_query::Iden; -use strum::EnumIter; #[derive(Iden, Default, Debug)] -pub struct Cake; +#[iden = "cake"] +pub struct Entity; #[derive(Debug, Default, PartialEq)] -pub struct CakeModel { +pub struct Model { pub id: i32, pub name: String, } #[derive(Iden, EnumIter)] -pub enum CakeColumn { +pub enum Column { Id, Name, } #[derive(EnumIter)] -pub enum CakeRelation {} +pub enum Relation {} -impl Entity for Cake { - type Model = CakeModel; +impl EntityTrait for Entity { + type Model = Model; - type Column = CakeColumn; + type Column = Column; - type Relation = CakeRelation; + type Relation = Relation; fn primary_key() -> Identity { - CakeColumn::Id.into_identity() + Column::Id.into_identity() } } -impl Column for CakeColumn { +impl ModelTrait for Model { + fn from_query_result(row: QueryResult) -> Result { + Ok(Self { + id: row.try_get("id")?, + name: row.try_get("name")?, + }) + } +} + +impl ColumnTrait for Column { fn col_type(&self) -> ColumnType { match self { Self::Id => ColumnType::Integer(None), @@ -44,17 +52,8 @@ impl Column for CakeColumn { } } -impl Relation for CakeRelation { +impl RelationTrait for Relation { fn rel_def(&self) -> RelationDef { panic!() } } - -impl Model for CakeModel { - fn from_query_result(row: QueryResult) -> Result { - Ok(Self { - id: row.try_get("id")?, - name: row.try_get("name")?, - }) - } -}