* Add DeriveRelatedEntity macro * Add generation for related enum and seaography * Add seaography cli param * update codegen tests * Fix DeriveRelatedEntity macro doc and includes * Fix all RelatedEntity variants for RelationBuilder * Add tests for code * Cargo format * Fix clippy code * Fix format * Fix unit tests * Fix unit tests * Provide default for seaography::RelationBuilder * Update changelog * Update tests * Modify code to match feedback * Bring old Related Impl trait generation * Modify DeriveRelatedEntity to gen impl seaography::RelationBuilder * Generate RelatedEntity enum when seaography flag is enabled * Update documentation * Update Changelog * Fix format errors * Fix code generation * relations with suffix are definition based * Rev => Reverse easier to read * snake_case to cameCase for name generation * Fix unit tests * Update lib.rs * derive `seaography::RelationBuilder` only when `seaography` feature is enabled * Try constructing async-graphql root for "related entity" and "entity" without relation * Update demo * CHANGELOG * Update Cargo.toml Co-authored-by: Chris Tsang <chris.2y3@outlook.com> * Revert "Update Cargo.toml" This reverts commit 6b1669836a4fb5040bfb08999f0cf640c74dc64d. --------- Co-authored-by: Billy Chan <ccw.billy.123@gmail.com> Co-authored-by: Chris Tsang <chris.2y3@outlook.com>
35 lines
1.1 KiB
Rust
35 lines
1.1 KiB
Rust
use crate::OrmDataloader;
|
|
use async_graphql::{dataloader::DataLoader, dynamic::*};
|
|
use entity::*;
|
|
use sea_orm::DatabaseConnection;
|
|
use seaography::{Builder, BuilderContext};
|
|
|
|
lazy_static::lazy_static! { static ref CONTEXT : BuilderContext = BuilderContext :: default () ; }
|
|
|
|
pub fn schema(
|
|
database: DatabaseConnection,
|
|
orm_dataloader: DataLoader<OrmDataloader>,
|
|
depth: Option<usize>,
|
|
complexity: Option<usize>,
|
|
) -> Result<Schema, SchemaError> {
|
|
let mut builder = Builder::new(&CONTEXT);
|
|
|
|
// Register entity including relations
|
|
seaography::register_entities!(builder, [cake]);
|
|
// Register entity only, no relations
|
|
seaography::register_entities_without_relation!(builder, [cake_filling, filling, fruit]);
|
|
|
|
let schema = builder.schema_builder();
|
|
let schema = if let Some(depth) = depth {
|
|
schema.limit_depth(depth)
|
|
} else {
|
|
schema
|
|
};
|
|
let schema = if let Some(complexity) = complexity {
|
|
schema.limit_complexity(complexity)
|
|
} else {
|
|
schema
|
|
};
|
|
schema.data(database).data(orm_dataloader).finish()
|
|
}
|