using SurrealDb.Net;
using SurrealDb.Net.Models.Response;
namespace ZB.MOM.WW.CBDDC.Persistence.Surreal;
///
/// Abstraction over the embedded Surreal client used by CBDDC persistence stores.
///
public interface ICBDDCSurrealEmbeddedClient : IAsyncDisposable, IDisposable
{
///
/// Gets the underlying Surreal client.
///
ISurrealDbClient Client { get; }
///
/// Connects and selects namespace/database exactly once.
///
Task InitializeAsync(CancellationToken cancellationToken = default);
///
/// Executes a raw SurrealQL statement.
///
Task RawQueryAsync(string query,
IReadOnlyDictionary? parameters = null,
CancellationToken cancellationToken = default);
///
/// Checks whether the embedded client responds to health probes.
///
Task HealthAsync(CancellationToken cancellationToken = default);
}