From 02be09506afdbac1de1d97eb67a07798148e98f5 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Sun, 29 Jun 2025 23:23:18 +0700 Subject: [PATCH] refactor: update surrealdb client usage to support 'any' engine type --- imphnen-entities/src/common_dto.rs | 5 +++-- imphnen-libs/src/axum/mod.rs | 4 +++- imphnen-libs/src/surrealdb/mod.rs | 13 ++++++++----- imphnen-utils/src/bind_filter.rs | 7 ++++--- imphnen-utils/src/mock_test.rs | 13 +++++++------ imphnen-utils/src/query_builder.rs | 4 ++-- imphnen-utils/src/query_list.rs | 7 ++++--- 7 files changed, 31 insertions(+), 22 deletions(-) diff --git a/imphnen-entities/src/common_dto.rs b/imphnen-entities/src/common_dto.rs index 407131b..7a52604 100644 --- a/imphnen-entities/src/common_dto.rs +++ b/imphnen-entities/src/common_dto.rs @@ -1,6 +1,7 @@ use serde::{Deserialize, Serialize}; use surrealdb::{ - engine::{local::Db, remote::ws::Client}, + engine::local::Db, + engine::any::Any, Surreal, }; use utoipa::{IntoParams, ToSchema}; @@ -54,7 +55,7 @@ pub struct ResponseListSuccessDto { pub meta: Option, } -pub type SurrealWsClient = Surreal; +pub type SurrealWsClient = Surreal; pub type SurrealMemClient = Surreal; #[derive(Clone)] diff --git a/imphnen-libs/src/axum/mod.rs b/imphnen-libs/src/axum/mod.rs index ec683cc..cecaeae 100644 --- a/imphnen-libs/src/axum/mod.rs +++ b/imphnen-libs/src/axum/mod.rs @@ -1,15 +1,17 @@ -use crate::{Env, surrealdb_init_mem, surrealdb_init_ws}; +use crate::{load_env, surrealdb_init_mem, surrealdb_init_ws, Env}; use axum::{Router, serve}; use imphnen_entities::{SurrealMemClient, SurrealWsClient}; use log::{debug, error, info}; use std::{future::Future, net::SocketAddr}; use tokio::net::TcpListener; + pub async fn axum_init(router_fn: F) where F: FnOnce(SurrealWsClient, SurrealMemClient) -> Fut, Fut: Future, { + load_env(); let env = Env::new(); info!("Environment loaded with port: {}", env.port); diff --git a/imphnen-libs/src/surrealdb/mod.rs b/imphnen-libs/src/surrealdb/mod.rs index ad22f79..86b95f6 100644 --- a/imphnen-libs/src/surrealdb/mod.rs +++ b/imphnen-libs/src/surrealdb/mod.rs @@ -1,17 +1,20 @@ use super::Env; -use crate::{SurrealMemClient, SurrealWsClient}; +use crate::SurrealMemClient; use surrealdb::engine::local::Mem; -use surrealdb::engine::remote::ws::{Client, Ws}; +use surrealdb::engine::any; use surrealdb::opt::auth::Root; use surrealdb::{Result, Surreal}; +use crate::enviroment::load_env; pub mod resource; pub use resource::*; -pub async fn surrealdb_init_ws() -> Result { +pub async fn surrealdb_init_ws() -> Result> { + load_env(); let env = Env::new(); - let db = Surreal::::init(); - db.connect::(env.surrealdb_url.clone()).await?; + let db = any::connect(&env.surrealdb_url).await?; + + db.signin(Root { username: &env.surrealdb_username, password: &env.surrealdb_password, diff --git a/imphnen-utils/src/bind_filter.rs b/imphnen-utils/src/bind_filter.rs index 0c3de18..70ee400 100644 --- a/imphnen-utils/src/bind_filter.rs +++ b/imphnen-utils/src/bind_filter.rs @@ -1,8 +1,9 @@ -use surrealdb::{engine::remote::ws::Client, method::Query}; +use surrealdb::method::Query; +use surrealdb::engine::any; pub fn bind_filter_value( - query: Query<'_, Client>, + query: Query<'_, any::Any>, val: String, -) -> Query<'_, Client> { +) -> Query<'_, any::Any> { query.bind(("filter", val)) // langsung string aja, udah cukup } diff --git a/imphnen-utils/src/mock_test.rs b/imphnen-utils/src/mock_test.rs index 5cef85d..e6beece 100644 --- a/imphnen-utils/src/mock_test.rs +++ b/imphnen-utils/src/mock_test.rs @@ -1,13 +1,14 @@ use crate::AppState; -use surrealdb::{ - Surreal, - engine::{local::Mem, remote::ws::Ws}, - opt::auth::Root, -}; +use imphnen_libs::enviroment::load_env; +use surrealdb::engine::any; +use surrealdb::{Surreal, engine::local::Mem, opt::auth::Root}; +use super::Env; pub async fn create_mock_app_state() -> AppState { + load_env(); + let env = Env::new(); let db_mem = Surreal::new::(()).await.unwrap(); - let db_ws = Surreal::new::("localhost:8000").await.unwrap(); + let db_ws = any::connect(&env.surrealdb_url).await.unwrap(); db_mem.use_ns("test").use_db("test").await.unwrap(); db_ws .signin(Root { diff --git a/imphnen-utils/src/query_builder.rs b/imphnen-utils/src/query_builder.rs index 65e1d77..ac996f2 100644 --- a/imphnen-utils/src/query_builder.rs +++ b/imphnen-utils/src/query_builder.rs @@ -1,7 +1,7 @@ use imphnen_libs::MetaRequestDto; -use surrealdb::engine::remote::ws::Client; use surrealdb::method::Query; use surrealdb::sql::Thing; +use surrealdb::engine::any; pub struct ListQueryBuilder { resource: String, @@ -241,7 +241,7 @@ impl DetailQueryBuilder { ) } - pub fn apply_bindings<'q>(&self, query: Query<'q, Client>) -> Query<'q, Client> { + pub fn apply_bindings<'q>(&self, query: Query<'q, any::Any>) -> Query<'q, any::Any> { if let (Some(_), Some(value)) = (&self.where_field, &self.where_value) { query.bind(("value", value.clone())) } else { diff --git a/imphnen-utils/src/query_list.rs b/imphnen-utils/src/query_list.rs index 39c60a0..94b616b 100644 --- a/imphnen-utils/src/query_list.rs +++ b/imphnen-utils/src/query_list.rs @@ -1,10 +1,11 @@ use crate::{CountResult, MetaRequestDto, MetaResponseDto, ResponseListSuccessDto}; use anyhow::Result; use serde::{Serialize, de::DeserializeOwned}; -use surrealdb::{Surreal, engine::remote::ws::Client}; +use surrealdb::Surreal; +use surrealdb::engine::any; pub struct QueryListBuilder<'a> { - db: &'a Surreal, + db: &'a Surreal, table: &'a str, meta: &'a MetaRequestDto, conditions: Vec, @@ -15,7 +16,7 @@ pub struct QueryListBuilder<'a> { impl<'a> QueryListBuilder<'a> { pub fn new( - db: &'a Surreal, + db: &'a Surreal, table: &'a str, meta: &'a MetaRequestDto, ) -> Self {