datasynth_server/lib.rs
1//! # synth-server
2//!
3//! gRPC and REST server for synthetic data generation.
4//!
5//! This crate provides a server that exposes the synthetic data generation
6//! capabilities via gRPC and REST APIs for integration with other systems.
7//!
8//! ## Features
9//!
10//! - **Bulk Generation**: Generate large batches of data synchronously
11//! - **Streaming**: Continuous real-time data generation with configurable throughput
12//! - **Control**: Pause, resume, and stop generation streams
13//! - **Configuration**: Dynamic configuration updates via API
14//! - **Metrics**: Real-time generation statistics and health monitoring
15//! - **WebSocket**: Real-time metrics and event streaming
16//!
17//! ## gRPC Usage
18//!
19//! ```rust,ignore
20//! use datasynth_server::{SynthService, SyntheticDataServiceServer};
21//! use tonic::transport::Server;
22//!
23//! #[tokio::main]
24//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
25//! let addr = "[::1]:50051".parse()?;
26//! let service = SynthService::new(default_generator_config());
27//!
28//! Server::builder()
29//! .add_service(SyntheticDataServiceServer::new(service))
30//! .serve(addr)
31//! .await?;
32//!
33//! Ok(())
34//! }
35//! ```
36//!
37//! ## REST Usage
38//!
39//! ```rust,ignore
40//! use datasynth_server::{rest, SynthService, grpc::service::default_generator_config};
41//! use axum::Router;
42//!
43//! #[tokio::main]
44//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
45//! let service = SynthService::new(default_generator_config());
46//! let router = rest::create_router(service);
47//!
48//! let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?;
49//! axum::serve(listener, router).await?;
50//!
51//! Ok(())
52//! }
53//! ```
54
55pub mod config_loader;
56pub mod grpc;
57pub mod jobs;
58pub mod observability;
59pub mod rest;
60pub mod tls;
61
62pub use grpc::{SynthService, SyntheticDataServiceServer};