@@ -12,15 +12,15 @@ use axum::{
1212use chrono:: { DateTime , Utc } ;
1313use futures:: FutureExt ;
1414use schemars:: JsonSchema ;
15- use sea_orm:: { ActiveModelTrait , ActiveValue :: Set , TransactionTrait } ;
15+ use sea_orm:: { ActiveModelTrait , ActiveValue :: Set , DatabaseConnection , TransactionTrait } ;
1616use serde:: { Deserialize , Serialize } ;
1717use svix_server_derive:: { aide_annotate, ModelOut } ;
1818use validator:: { Validate , ValidationError } ;
1919
2020use crate :: {
2121 core:: {
2222 permissions,
23- types:: { metadata:: Metadata , ApplicationId , ApplicationUid } ,
23+ types:: { metadata:: Metadata , ApplicationId , ApplicationUid , OrganizationId } ,
2424 } ,
2525 db:: models:: { application, applicationmetadata} ,
2626 error:: { http_error_on_conflict, HttpError , Result , Traceable } ,
@@ -270,11 +270,21 @@ async fn create_application(
270270 } ;
271271 }
272272
273- let app = application:: ActiveModel :: new ( org_id. clone ( ) ) ;
273+ let ( app, metadata) = create_app_from_app_in ( db, data, org_id) . await ?;
274+
275+ Ok ( JsonStatusUpsert :: Created ( ( app, metadata) . into ( ) ) )
276+ }
277+
278+ pub async fn create_app_from_app_in (
279+ db : & DatabaseConnection ,
280+ app_in : ApplicationIn ,
281+ org_id : OrganizationId ,
282+ ) -> Result < ( application:: Model , applicationmetadata:: Model ) > {
283+ let app = application:: ActiveModel :: new ( org_id) ;
274284 let metadata = applicationmetadata:: ActiveModel :: new ( app. id . clone ( ) . unwrap ( ) , None ) ;
275285
276286 let mut model = ( app, metadata) ;
277- data . update_model ( & mut model) ;
287+ app_in . update_model ( & mut model) ;
278288 let ( app, metadata) = model;
279289
280290 let ( app, metadata) = db
@@ -288,7 +298,7 @@ async fn create_application(
288298 } )
289299 . await ?;
290300
291- Ok ( JsonStatusUpsert :: Created ( ( app, metadata) . into ( ) ) )
301+ Ok ( ( app, metadata) )
292302}
293303
294304/// Get an application.
0 commit comments