surrealcs 0.4.4

The SurrealCS client code for SurrealDB
Documentation
use surrealcs_kernel::messages::server::interface::ServerTransactionMessage;
use surrealcs_kernel::messages::server::kv_operations;
use transactions::interface::interface::Transaction;

use crate::router::create_connection_pool;
use crate::transactions::interface::bridge::BridgeHandle;

mod connection;
mod router;
mod transactions;
mod utils;

use tracing::Level;
use tracing_subscriber::FmtSubscriber;

fn init_logger() {
	let subscriber = FmtSubscriber::builder()
		.with_max_level(Level::TRACE)
		.with_ansi(true)
		.with_file(false)
		.with_target(true)
		.with_line_number(true)
		.with_thread_ids(true)
		.with_thread_names(false)
		.finish();

	tracing::subscriber::set_global_default(subscriber).expect("Failed to set up logger");
}

/// This is the main function for the client for end to end testing but will be removed in the future
#[tokio::main]
async fn main() {
	init_logger();
	// "127.0.0.1:8080".to_string()
	tracing::trace!("Hello, world!");
	let one = create_connection_pool("127.0.0.1:8080", Some(1)).await.unwrap();
	tracing::trace!("{:?}", one);

	let transaction = Transaction::new().await.unwrap();
	// let transaction = transaction.into_any();
	// let transaction = transaction.rollback().await.unwrap();
	tracing::trace!("transaction created");

	let message = ServerTransactionMessage::Put(kv_operations::MessagePut {
		key: b"keys".to_vec(),
		value: b"value".to_vec(),
		version: None,
	});
	let (message, mut transaction) = transaction.begin::<BridgeHandle>(message).await.unwrap();
	tracing::trace!("transaction sent: {:?}", message);

	// sleep for 10 seconds to allow the server to start
	// std::thread::sleep(std::time::Duration::from_secs(10));

	let message = ServerTransactionMessage::Get(kv_operations::MessageGet {
		key: b"keys".to_vec(),
		version: None,
	});
	let _ = transaction.send::<BridgeHandle>(message).await.unwrap();

	let message = ServerTransactionMessage::Del(kv_operations::MessageDel {
		key: b"keys".to_vec(),
	});
	let _ = transaction.send::<BridgeHandle>(message).await.unwrap();

	let (_, _transaction) = transaction.commit::<BridgeHandle>().await.unwrap();

	router::close_connection_pool().await.unwrap();
	std::thread::sleep(std::time::Duration::from_secs(5));
}