tardis-0.1.0-alpha8 has been yanked.
Preview version, will not guarantee the stability of the API! Do NOT use in production environment!
Elegant, Clean Rust development framework🛸
TARDIS([tɑːrdɪs] "Time And Relative Dimension In Space") From "Doctor Who".
💖 Core functions
- Relational database client for MySQL, PostgresSQL
- Web service and web client for OpenAPI v3.x
- Distributed cache client for Redis protocol
- RabbitMQ client for AMQP protocol
- Search client for Elasticsearch
- Mail client for SMTP protocol
- Object Storage client for arbitrary S3 compatible APIs
- Mainstream encryption algorithms and SM2/3/4 algorithms
- Containerized unit testing of mainstream middleware
- Multi-environment configuration
- Commonly used operations (E.g. uniform error handling, encryption and decryption, regular checksums)
⚙️Feature description
tracetracing operationcryptoencryption, decryption and digest operationsfutureasynchronous operationsreldbrelational database operations(based on SeaORM)web-serverweb service operations(based on Poem)web-clientweb client operationscachecache operationsmqmessage queue operationsmailmail send operationsosobject Storage operationstestunit test operations
🚀 Quick start
The core operations of the framework all use TardisFuns as an entry point.
E.g.
TardisFuns::init(relative_path) // Initialize the configuration
TardisFuns::field.x // Some field operations
TardisFuns::reldb().x // Some relational database operations
TardisFuns::web_server().x // Some web service operations
Web service example
Dependency Configuration
[]
= { = "^0", = ["web-server"] }
= { = "^1"}
Processor Configuration
pub struct Api;
#[OpenApi]
impl Api {
#[oai(path = "/hello", method = "get")]
async fn index(&self, name: Query<Option<String>>) -> TardisResult<String> {
match name.0 {
Some(name) => TardisResp::ok(format!("hello, {}!", name)),
None => TardisResp::err(TardisError::NotFound("name does not exist".to_string())),
}
}
}
Startup class configuration
#[tokio::main]
async fn main() -> TardisResult<()> {
// Initial configuration
TardisFuns::init::<NoneConfig>("config").await?;
// Register the processor and start the web service
TardisFuns::web_server().add_module("", Api).start().await
}
More examples
|-- examples
|-- reldb Relational database usage example
|-- web-basic Web service Usage Example
|-- web-client Web client Usage Example
|-- webscoket WebSocket Usage Example
|-- cache Cache Usage Example
|-- mq Message Queue Usage Example
|-- todo A complete project usage example
|-- perf-test Performance test case
Thanks to Jetbrains for the Open Source License