refactor: update surrealdb client usage to support 'any' engine type
This commit is contained in:
@@ -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)]
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user