Skip to content

Commit

Permalink
Add test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
billy1624 committed May 3, 2022
1 parent c837d12 commit d8a459e
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
path: [86, 249, 262, 319, 324, 352, 356, 471]
path: [86, 249, 262, 319, 324, 352, 356, 471, 693]
steps:
- uses: actions/checkout@v2

Expand Down
22 changes: 22 additions & 0 deletions issues/693/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[workspace]
# A separate workspace

[package]
name = "sea-orm-issues-693"
version = "0.1.0"
authors = ["Sebastian Pütz <[email protected]>"]
edition = "2021"
publish = false

[dependencies]
tokio = { version = "1.14", features = ["full"] }
anyhow = "1"
dotenv = "0.15"
futures-util = "0.3"
serde = "1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

[dependencies.sea-orm]
path = "../../" # remove this line in your own project
features = ["runtime-tokio-rustls", "sqlx-mysql", "macros"]
default-features = false
31 changes: 31 additions & 0 deletions issues/693/src/container.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
pub mod prelude {
pub use super::model::{
ActiveModel as ContainerActiveModel, Column as ContainerColumn, Entity as Container,
Model as ContainerModel, PrimaryKey as ContainerPrimaryKey, Relation as ContainerRelation,
};
}

pub mod model {
use sea_orm::entity::prelude::*;

#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
#[sea_orm(table_name = "container")]
pub struct Model {
#[sea_orm(primary_key, column_name = "db_id")]
pub rust_id: i32,
}

#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {
#[sea_orm(has_many = "crate::Content")]
Content, // 1(Container) ⇆ n(Content)
}

impl Related<crate::Content> for Entity {
fn to() -> RelationDef {
Relation::Content.def()
}
}

impl ActiveModelBehavior for ActiveModel {}
}
36 changes: 36 additions & 0 deletions issues/693/src/content.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
pub mod prelude {
pub use super::model::{
ActiveModel as ContentActiveModel, Column as ContentColumn, Entity as Content,
Model as ContentModel, PrimaryKey as ContentPrimaryKey, Relation as ContentRelation,
};
}

pub mod model {
use sea_orm::entity::prelude::*;

#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
#[sea_orm(table_name = "content")]
pub struct Model {
#[sea_orm(primary_key)]
pub id: i32,
pub container_id: i32,
}

#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {
#[sea_orm(
belongs_to = "crate::Container",
from = "crate::ContentColumn::ContainerId",
to = "crate::ContainerColumn::RustId"
)]
Container, // 1(Container) ⇆ n(Content)
}

impl Related<crate::Container> for Entity {
fn to() -> RelationDef {
Relation::Container.def()
}
}

impl ActiveModelBehavior for ActiveModel {}
}
18 changes: 18 additions & 0 deletions issues/693/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
mod container;
mod content;

use container::prelude::*;
use content::prelude::*;
use sea_orm::{DbBackend, EntityTrait, QueryTrait};

fn main() {
assert_eq!(
Container::find().find_with_related(Content).build(DbBackend::MySql).to_string(),
[
"SELECT `container`.`db_id` AS `A_db_id`, `content`.`id` AS `B_id`, `content`.`container_id` AS `B_container_id`",
"FROM `container`",
"LEFT JOIN `content` ON `container`.`db_id` = `content`.`container_id`",
"ORDER BY `container`.`db_id` ASC",
].join(" ")
);
}

0 comments on commit d8a459e

Please sign in to comment.