Jika Anda menyukai apa yang kami lakukan, pertimbangkan membintangi, berbagi, dan berkontribusi!
Tolong bantu kami dengan mempertahankan Seaorm dengan menyelesaikan Survei Komunitas SEAQL 2024!
Bergabunglah dengan server Discord kami untuk mengobrol dengan anggota komunitas SEAQL lainnya!
Contoh integrasi:
Async
Mengandalkan SQLX, Seaorm adalah perpustakaan baru dengan dukungan async dari hari 1.
Dinamis
Dibangun di atas laut, Seaorm memungkinkan Anda untuk membangun pertanyaan dinamis yang kompleks.
Dapat diuji
Gunakan koneksi mock dan/atau sqlite untuk menulis tes untuk logika aplikasi Anda.
Berorientasi layanan
Bangun layanan dengan cepat yang bergabung, memfilter, mengurutkan, dan paginat data dalam API REST, GraphQL dan 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 ? ; Seaography adalah kerangka graphql yang dibangun di atas Seaorm. Seaography memungkinkan Anda untuk membangun graphql resolvers dengan cepat. Dengan hanya beberapa perintah, Anda dapat meluncurkan server graphql dari entitas SeaM!
Lihatlah contoh Seaography untuk mempelajari lebih lanjut.
Memanfaatkan Seaography, itu akan sangat mudah untuk membuat dasbor admin dengan kerangka kerja frontend favorit Anda. Lihat contoh dan tutorial kami:
Lihat dibangun dengan Seaorm. Jangan ragu untuk mengirimkan milik Anda!
Berlisensi di bawah salah satu dari
di pilihan Anda.
Kecuali jika Anda secara eksplisit menyatakan sebaliknya, kontribusi apa pun secara sengaja diserahkan untuk dimasukkan dalam pekerjaan oleh Anda, sebagaimana didefinisikan dalam lisensi APACHE-2.0, harus dilisensikan ganda seperti di atas, tanpa syarat atau ketentuan tambahan.
Kami mengundang Anda untuk berpartisipasi, berkontribusi, dan bersama -sama membantu membangun masa depan Rust.
Teriakan besar bagi kontributor kami!
Seaql.org adalah organisasi sumber terbuka independen yang dijalankan oleh pengembang yang bersemangat. Jika Anda menikmati menggunakan perpustakaan kami, silakan membintangi dan berbagi repositori kami. Jika Anda merasa murah hati, sumbangan kecil melalui sponsor GitHub akan sangat dihargai, dan sangat membantu untuk mempertahankan organisasi.
Kami sangat berterima kasih kepada sponsor kami: Osmos, atas sponsor tingkat emas dan kepercayaan pada alat yang kami kembangkan. Samudra digital, untuk mensponsori server kami. Dan jetbrains, untuk mensponsori IDE kita.
Seorang teman Ferris, mengarah pada kepiting pertapa adalah maskot resmi Seaorm. Hobinya mengumpulkan cangkang.