Si te gusta lo que hacemos, ¡considera protagonizar, compartir y contribuir!
¡Ayúdanos a mantener Seaorm completando la Encuesta de la Comunidad SEAQL 2024!
¡Únase a nuestro servidor Discord para chatear con otros miembros de la comunidad SEAQL!
Ejemplos de integración:
Asíncrata
Confiando en SQLX, SeAorm es una nueva biblioteca con soporte de asíncrono del día 1.
Dinámica
Construido sobre SeaQuery, Seasorm le permite construir consultas dinámicas complejas.
Probable
Use conexiones simuladas y/o SQLite para escribir pruebas para la lógica de su aplicación.
Orientado al servicio
Construya rápidamente los servicios que se unan, filtren, clasifiquen y paginen los datos en las API REST, GRAPHQL y GRPC.
use sea_orm :: entity :: prelude :: * ;
# [ derive ( Clone , Debug , PartialEq , DeriveEntityModel ) ]
# [ sea_orm ( table_name = "cake" ) ]
pub struct Model {
# [ sea_orm ( primary_key ) ]
pub id : i32 ,
pub name : String ,
}
# [ derive ( Copy , Clone , Debug , EnumIter , DeriveRelation ) ]
pub enum Relation {
# [ sea_orm ( has_many = "super::fruit::Entity" ) ]
Fruit ,
}
impl Related < super :: fruit :: Entity > for Entity {
fn to ( ) -> RelationDef {
Relation :: Fruit . def ( )
}
} // find all models
let cakes : Vec < cake :: Model > = Cake :: find ( ) . all ( db ) . await ? ;
// find and filter
let chocolate : Vec < cake :: Model > = Cake :: find ( )
. filter ( cake :: Column :: Name . contains ( "chocolate" ) )
. all ( db )
. await ? ;
// find one model
let cheese : Option < cake :: Model > = Cake :: find_by_id ( 1 ) . one ( db ) . await ? ;
let cheese : cake :: Model = cheese . unwrap ( ) ;
// find related models (lazy)
let fruits : Vec < fruit :: Model > = cheese . find_related ( Fruit ) . all ( db ) . await ? ;
// find related models (eager)
let cake_with_fruits : Vec < ( cake :: Model , Vec < fruit :: Model > ) > =
Cake :: find ( ) . find_with_related ( Fruit ) . all ( db ) . await ? ; let apple = fruit :: ActiveModel {
name : Set ( "Apple" . to_owned ( ) ) ,
.. Default :: default ( ) // no need to set primary key
} ;
let pear = fruit :: ActiveModel {
name : Set ( "Pear" . to_owned ( ) ) ,
.. Default :: default ( )
} ;
// insert one
let pear = pear . insert ( db ) . await ? ;
// insert many
Fruit :: insert_many ( [ apple , pear ] ) . exec ( db ) . await ? ; use sea_orm :: sea_query :: { Expr , Value } ;
let pear : Option < fruit :: Model > = Fruit :: find_by_id ( 1 ) . one ( db ) . await ? ;
let mut pear : fruit :: ActiveModel = pear . unwrap ( ) . into ( ) ;
pear . name = Set ( "Sweet pear" . to_owned ( ) ) ;
// update one
let pear : fruit :: Model = pear . update ( db ) . await ? ;
// update many: UPDATE "fruit" SET "cake_id" = NULL WHERE "fruit"."name" LIKE '%Apple%'
Fruit :: update_many ( )
. col_expr ( fruit :: Column :: CakeId , Expr :: value ( Value :: Int ( None ) ) )
. filter ( fruit :: Column :: Name . contains ( "Apple" ) )
. exec ( db )
. await ? ; let banana = fruit :: ActiveModel {
id : NotSet ,
name : Set ( "Banana" . to_owned ( ) ) ,
.. Default :: default ( )
} ;
// create, because primary key `id` is `NotSet`
let mut banana = banana . save ( db ) . await ? ;
banana . name = Set ( "Banana Mongo" . to_owned ( ) ) ;
// update, because primary key `id` is `Set`
let banana = banana . save ( db ) . await ? ; // delete one
let orange : Option < fruit :: Model > = Fruit :: find_by_id ( 1 ) . one ( db ) . await ? ;
let orange : fruit :: Model = orange . unwrap ( ) ;
fruit :: Entity :: delete ( orange . into_active_model ( ) )
. exec ( db )
. await ? ;
// or simply
let orange : Option < fruit :: Model > = Fruit :: find_by_id ( 1 ) . one ( db ) . await ? ;
let orange : fruit :: Model = orange . unwrap ( ) ;
orange . delete ( db ) . await ? ;
// delete many: DELETE FROM "fruit" WHERE "fruit"."name" LIKE 'Orange'
fruit :: Entity :: delete_many ( )
. filter ( fruit :: Column :: Name . contains ( "Orange" ) )
. exec ( db )
. await ? ; Seapografía es un marco GRAPHQL construido sobre SeMeorm. Seapografía le permite construir resueltos GraphQL rápidamente. ¡Con solo unos pocos comandos, puede iniciar un servidor GraphQL de las entidades Seasorm!
Mira el ejemplo de la Seapografía para aprender más.
Haciendo uso de segografía, será muy fácil crear el tablero de administración con su marco frontend favorito. Consulte nuestros ejemplos y tutoriales:
Ver construido con SeM. ¡Siéntete libre de enviar el tuyo!
Con licencia bajo cualquiera de
a tu opción.
A menos que declare explícitamente lo contrario, cualquier contribución presentada intencionalmente para su inclusión en el trabajo por usted, como se define en la licencia Apache-2.0, se debe tener doble licencia como se indicó anteriormente, sin ningún término o condiciones adicionales.
Lo invitamos a participar, contribuir y juntos ayudar a construir el futuro de Rust.
¡Un gran grito a nuestros contribuyentes!
Seaql.org es una organización independiente de código abierto dirigida por desarrolladores apasionados. Si le gusta usar nuestras bibliotecas, protagonice y comparta nuestros repositorios. Si se siente generoso, una pequeña donación a través del patrocinador de GitHub será muy apreciada y contribuye en gran medida a mantener la organización.
Estamos inmensamente agradecidos con nuestros patrocinadores: OSMOS, por su patrocinio de nivel de oro y confianza en las herramientas que desarrollamos. Océano digital, por patrocinar nuestros servidores. Y Jetbrains, por patrocinar nuestro ide.
Una amiga de Ferris, Terres el cangrejo ermitaño es la mascota oficial de Seam. Su pasatiempo es recolectar conchas.