우리가하는 일이 마음에 들면 주연, 공유 및 기여를 고려하십시오!
Seaql Community Survey 2024를 완료하여 Seaorm 유지를 도와주세요!
Discord 서버에 가입하여 Seaql 커뮤니티의 다른 구성원과 채팅하십시오!
통합 예 :
비동기
SQLX에 의존하는 Seaorm은 1 일째부터 비동기 지원을받는 새로운 라이브러리입니다.
동적
Seaorm을 구축 한 Seaorm을 사용하면 복잡한 동적 쿼리를 구축 할 수 있습니다.
테스트 가능
모의 연결 및/또는 SQLITE를 사용하여 응용 프로그램 논리에 대한 테스트를 작성하십시오.
서비스 지향
REST, GraphQL 및 GRPC API에 데이터가 결합, 필터, 정렬 및 페이지를 빠르게 구축하는 서비스를 신속하게 구축하십시오.
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는 Seaorm 위에 내장 된 GraphQL 프레임 워크입니다. Seaography를 사용하면 GraphQL Resolvers를 빠르게 구축 할 수 있습니다. 몇 가지 명령만으로 Seaorm Entities에서 GraphQl Server를 시작할 수 있습니다!
더 많은 것을 배우려면 Seaography 예제를보십시오.
Seaography를 사용하면 좋아하는 프론트 엔드 프레임 워크가있는 관리자 대시 보드를 만드는 것은 바람이 불 것입니다. 예제 및 튜토리얼을 확인하십시오.
Seaorm과 함께 건축 된 것을보십시오. 자유롭게 제출하십시오!
어느 쪽에도 라이센스가 부여되었습니다
귀하의 선택에.
귀하가 명시 적으로 명시 적으로 명시하지 않는 한, APACHE-2.0 라이센스에 정의 된대로 귀하가 작업에 포함시키기 위해 의도적으로 제출 된 모든 기부금은 추가 이용 약관이나 조건없이 위와 같이 이중 라이센스를받습니다.
Rust의 미래를 구축하는 데 참여하고 기여하며 함께 초대합니다.
우리 기고자들에게 큰 소리를 지르세요!
Seaql.org는 열정적 인 개발자들이 운영하는 독립 오픈 소스 조직입니다. 도서관을 사용하는 것을 좋아한다면 저장소를 별표로 공유하십시오. 당신이 관대하다고 느끼면, Github 스폰서를 통한 작은 기부금은 대단히 감사하고 조직을 유지하는 데 먼 길을 갈 것입니다.
우리는 스폰서 인 Osmos, 금 계층 후원과 우리가 개발 한 도구에 대한 신뢰에 대해 대단히 감사합니다. 서버를 후원하기위한 Digital Ocean. 그리고 우리의 IDE를 후원하기위한 JetBrains.
Ferris의 친구 인 Hermit Crab Ter는 Seaorm의 공식 마스코트입니다. 그의 취미는 껍질을 모으는 것입니다.