Merge branch 'master' into ss/bakery
This commit is contained in:
commit
88bc1e1587
@ -66,10 +66,7 @@ async fn find_all(db: &DbConn) -> Result<(), QueryErr> {
|
||||
async fn find_together(db: &DbConn) -> Result<(), QueryErr> {
|
||||
print!("find cakes and fruits: ");
|
||||
|
||||
let both = Cake::find()
|
||||
.find_also_related(Fruit)
|
||||
.all(db)
|
||||
.await?;
|
||||
let both = Cake::find().find_also_related(Fruit).all(db).await?;
|
||||
|
||||
println!();
|
||||
for bb in both.iter() {
|
||||
@ -144,10 +141,8 @@ async fn count_fruits_by_cake(db: &DbConn) -> Result<(), QueryErr> {
|
||||
async fn find_many_to_many(db: &DbConn) -> Result<(), QueryErr> {
|
||||
print!("find cakes and fillings: ");
|
||||
|
||||
let both: Vec<(cake::Model, Vec<filling::Model>)> = Cake::find()
|
||||
.find_with_related(Filling)
|
||||
.all(db)
|
||||
.await?;
|
||||
let both: Vec<(cake::Model, Vec<filling::Model>)> =
|
||||
Cake::find().find_with_related(Filling).all(db).await?;
|
||||
|
||||
println!();
|
||||
for bb in both.iter() {
|
||||
|
@ -1,6 +1,7 @@
|
||||
use crate::{ExecErr, ExecResult, QueryErr, QueryResult, Statement, Transaction};
|
||||
use sea_query::{
|
||||
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SqliteQueryBuilder,
|
||||
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SchemaStatementBuilder,
|
||||
SqliteQueryBuilder,
|
||||
};
|
||||
use std::{error::Error, fmt};
|
||||
|
||||
@ -22,6 +23,12 @@ pub enum QueryBuilderBackend {
|
||||
Sqlite,
|
||||
}
|
||||
|
||||
pub enum SchemaBuilderBackend {
|
||||
MySql,
|
||||
Postgres,
|
||||
Sqlite,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ConnectionErr;
|
||||
|
||||
@ -70,6 +77,18 @@ impl DatabaseConnection {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_schema_builder_backend(&self) -> SchemaBuilderBackend {
|
||||
match self {
|
||||
#[cfg(feature = "sqlx-mysql")]
|
||||
DatabaseConnection::SqlxMySqlPoolConnection(_) => SchemaBuilderBackend::MySql,
|
||||
#[cfg(feature = "sqlx-sqlite")]
|
||||
DatabaseConnection::SqlxSqlitePoolConnection(_) => SchemaBuilderBackend::Sqlite,
|
||||
#[cfg(feature = "mock")]
|
||||
DatabaseConnection::MockDatabaseConnection(_) => SchemaBuilderBackend::Postgres,
|
||||
DatabaseConnection::Disconnected => panic!("Disconnected"),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn execute(&self, stmt: Statement) -> Result<ExecResult, ExecErr> {
|
||||
match self {
|
||||
#[cfg(feature = "sqlx-mysql")]
|
||||
@ -139,3 +158,17 @@ impl QueryBuilderBackend {
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
||||
impl SchemaBuilderBackend {
|
||||
pub fn build<S>(&self, statement: &S) -> Statement
|
||||
where
|
||||
S: SchemaStatementBuilder,
|
||||
{
|
||||
match self {
|
||||
Self::MySql => statement.build(MysqlQueryBuilder),
|
||||
Self::Postgres => statement.build(PostgresQueryBuilder),
|
||||
Self::Sqlite => statement.build(SqliteQueryBuilder),
|
||||
}
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
51
src/lib.rs
51
src/lib.rs
@ -1,4 +1,47 @@
|
||||
//! # Select
|
||||
//! <div align="center">
|
||||
//!
|
||||
//! <img src="docs/SeaORM banner.png"/>
|
||||
//!
|
||||
//! <h1>SeaORM</h1>
|
||||
//!
|
||||
//! <p>
|
||||
//! <strong>🐚 An async & dynamic ORM for Rust</strong>
|
||||
//! </p>
|
||||
//!
|
||||
//! <sub>Built with 🔥 by 🌊🦀🐚</sub>
|
||||
//!
|
||||
//! </div>
|
||||
//!
|
||||
//! # SeaORM
|
||||
//!
|
||||
//! Inspired by ActiveRecord, Eloquent and TypeORM, SeaORM aims to provide you an intuitive and ergonomic
|
||||
//! API to make working with databases in Rust a first-class experience.
|
||||
//!
|
||||
//! ```ignore
|
||||
//! This is an early WIP of SeaORM, and is not yet published. See [example](examples/sqlx-mysql/src) for demo usage.
|
||||
//! ```
|
||||
//!
|
||||
//! ## Features
|
||||
//!
|
||||
//! 1. Async
|
||||
//!
|
||||
//! Relying on SQLx, SeaORM is a new library with async support from day 1.
|
||||
//!
|
||||
//! 2. Dynamic
|
||||
//!
|
||||
//! Built upon SeaQuery, a dynamic query builder, SeaORM allows you to build complex queries without 'fighting the ORM'.
|
||||
//!
|
||||
//! 3. Testable
|
||||
//!
|
||||
//! Use mock connections to write unit tests for your logic.
|
||||
//!
|
||||
//! 4. API oriented
|
||||
//!
|
||||
//! Quickly build search models that help you join, filter, sort and paginate data in APIs.
|
||||
//!
|
||||
//! # A quick taste of SeaORM
|
||||
//!
|
||||
//! ## Select
|
||||
//! ```
|
||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||
//! # async fn function(db: &DbConn) -> Result<(), QueryErr> {
|
||||
@ -28,7 +71,7 @@
|
||||
//! # Ok(())
|
||||
//! # }
|
||||
//! ```
|
||||
//! # Insert
|
||||
//! ## Insert
|
||||
//! ```
|
||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||
//! # async fn function(db: &DbConn) -> Result<(), ExecErr> {
|
||||
@ -68,7 +111,7 @@
|
||||
//! # Ok(())
|
||||
//! # }
|
||||
//! ```
|
||||
//! # Update
|
||||
//! ## Update
|
||||
//! ```
|
||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||
//! #
|
||||
@ -98,7 +141,7 @@
|
||||
//! # Ok(())
|
||||
//! # }
|
||||
//! ```
|
||||
//! # Delete
|
||||
//! ## Delete
|
||||
//! ```
|
||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||
//! #
|
||||
|
Loading…
x
Reference in New Issue
Block a user