From 3fb3d0214a69017d49c91aa180fb565533edcc54 Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Sun, 29 Mar 2026 16:51:09 +0200 Subject: refactor: use api-config to create schema --- lib/api-config/src/schema/create.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'lib/api-config/src/schema/create.rs') diff --git a/lib/api-config/src/schema/create.rs b/lib/api-config/src/schema/create.rs index 5c91f64..de2d214 100644 --- a/lib/api-config/src/schema/create.rs +++ b/lib/api-config/src/schema/create.rs @@ -1,4 +1,8 @@ +use async_trait::async_trait; use serde::{Deserialize, Serialize}; +use warden_core::state::AppState; + +use crate::schema::{SchemaDriver, TransactionSchema}; #[derive(Deserialize, Serialize)] #[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))] @@ -13,3 +17,31 @@ pub struct CreateSchema { #[serde(rename = "json_schema")] pub schema: serde_json::Value, } + +#[async_trait] +impl SchemaDriver for AppState { + async fn create_schema( + &self, + name: impl AsRef + Send + Sync, + version: impl AsRef + Send + Sync, + schema: &serde_json::Value, + ) -> Result { + sqlx::query_as!( + TransactionSchema, + "insert into transaction_schema (type, version, json_schema) values ($1, $2, $3) + returning + type as kind, + version, + json_schema as schema, + created_at, + updated_at + ", + name.as_ref(), + version.as_ref(), + sqlx::types::Json(&schema) as _ + ) + .fetch_one(&self.database) + .await + .map_err(|e| e.into()) + } +} -- cgit v1.2.3