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> {
|
async fn find_together(db: &DbConn) -> Result<(), QueryErr> {
|
||||||
print!("find cakes and fruits: ");
|
print!("find cakes and fruits: ");
|
||||||
|
|
||||||
let both = Cake::find()
|
let both = Cake::find().find_also_related(Fruit).all(db).await?;
|
||||||
.find_also_related(Fruit)
|
|
||||||
.all(db)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!();
|
println!();
|
||||||
for bb in both.iter() {
|
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> {
|
async fn find_many_to_many(db: &DbConn) -> Result<(), QueryErr> {
|
||||||
print!("find cakes and fillings: ");
|
print!("find cakes and fillings: ");
|
||||||
|
|
||||||
let both: Vec<(cake::Model, Vec<filling::Model>)> = Cake::find()
|
let both: Vec<(cake::Model, Vec<filling::Model>)> =
|
||||||
.find_with_related(Filling)
|
Cake::find().find_with_related(Filling).all(db).await?;
|
||||||
.all(db)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
println!();
|
println!();
|
||||||
for bb in both.iter() {
|
for bb in both.iter() {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use crate::{ExecErr, ExecResult, QueryErr, QueryResult, Statement, Transaction};
|
use crate::{ExecErr, ExecResult, QueryErr, QueryResult, Statement, Transaction};
|
||||||
use sea_query::{
|
use sea_query::{
|
||||||
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SqliteQueryBuilder,
|
MysqlQueryBuilder, PostgresQueryBuilder, QueryStatementBuilder, SchemaStatementBuilder,
|
||||||
|
SqliteQueryBuilder,
|
||||||
};
|
};
|
||||||
use std::{error::Error, fmt};
|
use std::{error::Error, fmt};
|
||||||
|
|
||||||
@ -22,6 +23,12 @@ pub enum QueryBuilderBackend {
|
|||||||
Sqlite,
|
Sqlite,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum SchemaBuilderBackend {
|
||||||
|
MySql,
|
||||||
|
Postgres,
|
||||||
|
Sqlite,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ConnectionErr;
|
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> {
|
pub async fn execute(&self, stmt: Statement) -> Result<ExecResult, ExecErr> {
|
||||||
match self {
|
match self {
|
||||||
#[cfg(feature = "sqlx-mysql")]
|
#[cfg(feature = "sqlx-mysql")]
|
||||||
@ -139,3 +158,17 @@ impl QueryBuilderBackend {
|
|||||||
.into()
|
.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::*};
|
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||||
//! # async fn function(db: &DbConn) -> Result<(), QueryErr> {
|
//! # async fn function(db: &DbConn) -> Result<(), QueryErr> {
|
||||||
@ -28,7 +71,7 @@
|
|||||||
//! # Ok(())
|
//! # Ok(())
|
||||||
//! # }
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
//! # Insert
|
//! ## Insert
|
||||||
//! ```
|
//! ```
|
||||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||||
//! # async fn function(db: &DbConn) -> Result<(), ExecErr> {
|
//! # async fn function(db: &DbConn) -> Result<(), ExecErr> {
|
||||||
@ -68,7 +111,7 @@
|
|||||||
//! # Ok(())
|
//! # Ok(())
|
||||||
//! # }
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
//! # Update
|
//! ## Update
|
||||||
//! ```
|
//! ```
|
||||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||||
//! #
|
//! #
|
||||||
@ -98,7 +141,7 @@
|
|||||||
//! # Ok(())
|
//! # Ok(())
|
||||||
//! # }
|
//! # }
|
||||||
//! ```
|
//! ```
|
||||||
//! # Delete
|
//! ## Delete
|
||||||
//! ```
|
//! ```
|
||||||
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
//! # use sea_orm::{DbConn, entity::*, query::*, tests_cfg::*};
|
||||||
//! #
|
//! #
|
||||||
|
Loading…
x
Reference in New Issue
Block a user