إذا كنت تحب ما نقوم به ، فكر في بطولة ومشاركة ومساهمة!
الرجاء مساعدتنا في الحفاظ على Seaform من خلال استكمال مسح مجتمع Seaql 2024!
انضم إلى خادم Discord للدردشة مع أعضاء آخرين في مجتمع Seaql!
أمثلة التكامل:
غير متزامن
الاعتماد على SQLX ، Seaorm هي مكتبة جديدة مع دعم Async من اليوم الأول.
متحرك
بنيت على Seaquery ، يسمح لك Seaorm ببناء استعلامات ديناميكية معقدة.
قابل للاختبار
استخدم الاتصالات الوهمية و/أو SQLite لكتابة اختبارات لمنطق التطبيق الخاص بك.
الخدمة الموجهة
قم ببناء البيانات بسرعة تنضم إلى واجهات برمجة تطبيقات وتصفية وفرز وتوصل إلى واجهة برمجة تطبيقات GRATEQL و 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 هو إطار GraphQL الذي تم بناؤه على رأس البحر. يتيح لك Searography إنشاء محددات GraphQL بسرعة. مع عدد قليل من الأوامر ، يمكنك تشغيل خادم GraphQL من كيانات Seaorm!
انظر إلى مثال تصوير السير في معرفة المزيد.
مع الاستفادة من التصوير البحري ، سيكون نسيمًا لإنشاء لوحة معلومات المسؤول مع إطار الواجهة الأمامية المفضلة لديك. تحقق من أمثلةنا والدروس التعليمية:
انظر بنيت مع Seaorm. لا تتردد في تقديم لك!
مرخصة تحت أي من
في خيارك.
ما لم تقل صراحةً خلاف ذلك ، فإن أي مساهمة تم تقديمها عن عمد لإدراجها في العمل بواسطتك ، كما هو محدد في ترخيص Apache-2.0 ، تكون مرخصة مزدوجة على النحو الوارد أعلاه ، دون أي شروط أو شروط إضافية.
ندعوك للمشاركة والمساهمة والمساعدة معًا في بناء مستقبل Rust.
صيحة كبيرة للمساهمين لدينا!
Seaql.org هي منظمة مستقلة مفتوحة المصدر يديرها مطورون عاطفي. إذا كنت تستمتع باستخدام مكتباتنا ، فالرجاء نجمة ومشاركة مستودعاتنا. إذا كنت تشعر بالسخاء ، فسيتم تقدير تبرع صغير عبر الراعي Github بشكل كبير ، ويقطع شوطًا طويلاً نحو الحفاظ على المنظمة.
نحن ممتنون للغاية لرعاةنا: OSMOS ، على رعايتهم للثقة والثقة في الأدوات التي نطورها. المحيط الرقمي ، لرعاية خوادمنا. و Jetbrains ، لرعاية IDE لدينا.
صديق لفيريس ، تريس سلطعون الناسك هو التميمة الرسمية لثروات البحر. هوايته تجمع القذائف.