Wenn Ihnen gefällt, was wir tun, sollten Sie die Hauptrolle, teilen und beitragen!
Bitte helfen Sie uns bei der Aufrechterhaltung von SeaOrM, indem Sie die SEAQL Community Survey 2024 abschließen!
Schließen Sie sich unserem Discord -Server an, um mit anderen Mitgliedern der SEAQL -Community zu chatten!
Integrationsbeispiele:
Asynchron
Seorm ist eine neue Bibliothek mit asynchronischer Unterstützung ab Tag 1.
Dynamisch
Mit SeaOrm erbaut auf SeaMor können Sie komplexe dynamische Abfragen aufbauen.
Testbar
Verwenden Sie Mockverbindungen und/oder SQLite, um Tests für Ihre Anwendungslogik zu schreiben.
Serviceorientiert
Erstellen Sie schnell Dienste, die Daten in Ruhe-, GraphQL- und GRPC -APIs beitreten, filtern, sortieren und paginieren.
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 ? ; Die Seaographie ist ein GraphQL -Gerüst, das auf Seaorm aufgebaut ist. Mit Seaography können Sie GraphQL -Resolver schnell erstellen. Mit nur wenigen Befehlen können Sie einen GraphQL -Server von SeaMorm Entities starten!
Schauen Sie sich das Beispiel der Seaographie an, um mehr zu erfahren.
Wenn Sie die Seaographie nutzen, ist es ein Kinderspiel, Admin -Dashboard mit Ihrem bevorzugten Frontend -Framework zu erstellen. Schauen Sie sich unsere Beispiele und Tutorials an:
Siehe gebaut mit Seerorm. Fühlen Sie sich frei, Ihre einzureichen!
Lizenziert unter einem von
nach Ihrer Option.
Sofern Sie nicht ausdrücklich anders angeben, ist ein Beitrag, der absichtlich zur Aufnahme in die Arbeit von Ihnen eingereicht wird, wie in der Lizenz Apache-2.0 definiert, ohne zusätzliche Bedingungen doppelt lizenziert wie oben.
Wir laden Sie ein, teilzunehmen, beizutragen und gemeinsam die Zukunft aufzubauen.
Ein großer Schrei an unsere Mitwirkenden!
Seeql.org ist eine unabhängige Open-Source-Organisation, die von leidenschaftlichen Entwicklern geleitet wird. Wenn Sie gerne unsere Bibliotheken verwenden, spielen Sie bitte mit und teilen Sie unsere Repositorys. Wenn Sie sich großzügig fühlen, wird eine kleine Spende über den Github -Sponsor sehr geschätzt und leistet einen großen Beitrag zur Aufrechterhaltung der Organisation.
Wir sind unseren Sponsoren unglaublich dankbar: Osmos, für ihr Gold-Tier-Sponsoring und das Vertrauen in die von uns entwickelten Tools. Digital Ozean, zum Sponsoring unserer Server. Und Jetbrains, um unsere IDE zu sponsern.
Eine Freundin von Ferris terrisch, die Einsiedlerkrabbe ist das offizielle Maskottchen von Seerorm. Sein Hobby sammelt Muscheln.