refactor: update surrealdb client usage to support 'any' engine type

This commit is contained in:
MythEclipse
2025-06-29 23:23:18 +07:00
parent b88ecd1361
commit 02be09506a
7 changed files with 31 additions and 22 deletions
+3 -2
View File
@@ -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<T: Serialize> {
pub meta: Option<MetaResponseDto>,
}
pub type SurrealWsClient = Surreal<Client>;
pub type SurrealWsClient = Surreal<Any>;
pub type SurrealMemClient = Surreal<Db>;
#[derive(Clone)]
+3 -1
View File
@@ -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<F, Fut>(router_fn: F)
where
F: FnOnce(SurrealWsClient, SurrealMemClient) -> Fut,
Fut: Future<Output = Router>,
{
load_env();
let env = Env::new();
info!("Environment loaded with port: {}", env.port);
+8 -5
View File
@@ -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<SurrealWsClient> {
pub async fn surrealdb_init_ws() -> Result<Surreal<any::Any>> {
load_env();
let env = Env::new();
let db = Surreal::<Client>::init();
db.connect::<Ws>(env.surrealdb_url.clone()).await?;
let db = any::connect(&env.surrealdb_url).await?;
db.signin(Root {
username: &env.surrealdb_username,
password: &env.surrealdb_password,
+4 -3
View File
@@ -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
}
+7 -6
View File
@@ -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::<Mem>(()).await.unwrap();
let db_ws = Surreal::new::<Ws>("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 {
+2 -2
View File
@@ -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 {
+4 -3
View File
@@ -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<Client>,
db: &'a Surreal<any::Any>,
table: &'a str,
meta: &'a MetaRequestDto,
conditions: Vec<String>,
@@ -15,7 +16,7 @@ pub struct QueryListBuilder<'a> {
impl<'a> QueryListBuilder<'a> {
pub fn new(
db: &'a Surreal<Client>,
db: &'a Surreal<any::Any>,
table: &'a str,
meta: &'a MetaRequestDto,
) -> Self {