Crates.io | tardis |
lib.rs | tardis |
version | 0.1.0-rc.17 |
source | src |
created_at | 2022-01-31 01:46:03.982921 |
updated_at | 2024-10-18 09:27:17.285723 |
description | Elegant, clean Rust development framework |
homepage | https://github.com/ideal-world/tardis |
repository | https://github.com/ideal-world/tardis |
max_upload_size | |
id | 524295 |
size | 629,389 |
Elegant, Clean Rust development framework🛸
TARDIS([tɑːrdɪs] "Time And Relative Dimension In Space") From "Doctor Who".
conf-remote
enable the unified configuration centercrypto
encryption, decryption and digest operationscrypto-with-sm
encryption, decryption and digest with SM.x operationsfuture
asynchronous operationsreldb-core
relational database core operations(based on SeaORM)reldb-postgres
relational database with postgres driverreldb-mysql
relational database with mysql driverreldb-sqlite
relational database with sqlite driverreldb
relational database with postgres/mysql/sqlite driversweb-server
web service operations(based on Poem)web-server-grpc
grpc web service based on Poemweb-client
web client operationsws-client
websocket client operationscache
cache operationsmq
message queue operationsmail
mail send operationsos
object Storage operationstest
unit test operationstracing
open telemetry supporttokio-console
console subscriber layer supported by tokio-consoletracing-appender
write log into file periodically.build-info
get build info like package version or git versionThe 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
Dependency Configuration
[dependencies]
tardis = { version = "^0", features = ["web-server"] }
Processor Configuration
use tardis::basic::error::TardisError;
use tardis::web::poem_openapi;
use tardis::web::poem_openapi::param::Query;
use tardis::web::web_resp::{TardisApiResult, TardisResp};
pub struct Api;
#[poem_openapi::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
use tardis::basic::result::TardisResult;
use tardis::tokio;
use tardis::TardisFuns;
use crate::processor::Api;
mod processor;
#[tokio::main]
async fn main() -> TardisResult<()> {
// Initial configuration
TardisFuns::init("config").await?;
// Register the processor and start the web service
TardisFuns::web_server().add_module("", Api).start().await;
TardisFuns::web_server().web_server.await;
Ok(())
}
In order to use gRPC features, you need the protoc
Protocol Buffers compiler, along with Protocol Buffers resource files.
sudo apt update && sudo apt upgrade -y
sudo apt install -y protobuf-compiler libprotobuf-dev
sudo apk add protoc protobuf-dev
Assuming Homebrew is already installed. (If not, see instructions for installing Homebrew on the Homebrew website.)
brew install protobuf
protoc-xx.y-win64.zip
from HEREbin\protoc.exe
and put it somewhere in the PATH
protoc --version
|-- examples
|-- reldb Relational database usage example
|-- web-basic Web service Usage Example
|-- web-client Web client Usage Example
|-- websocket WebSocket Usage Example
|-- cache Cache Usage Example
|-- mq Message Queue Usage Example
|-- todos A complete project usage example
|-- multi-apps Multi-application aggregation example
|-- pg-graph-search Graph search by Postgresql example
|-- perf-test Performance test case
|-- tracing-otlp Trace and send data by otlp prococol example
An failed to run custom build command for openssl-sys
error occurs when running under Windows.The solution is as follows( @see https://github.com/sfackler/rust-openssl/issues/1062 ):
git clone https://github.com/Microsoft/vcpkg --depth=1
cd vcpkg
bootstrap-vcpkg.bat
vcpkg.exe integrate install
vcpkg.exe install openssl:x64-windows-static
set OPENSSL_NO_VENDOR=1
set OPENSSL_DIR=<Current Dir>\packages\openssl_x64-windows-static
An failed to run custom build command for openssl-sys
error occurs when running under Ubuntu(similar to other distributions):
apt install build-essential perl pkg-config libssl-dev
FreeBSD deployment for openssl-sys
sudo pkg install cmake ninja zip pkgconf gmake
git clone https://github.com/Microsoft/vcpkg --depth=1
cd vcpkg
sh bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install openssl
An failed to run custom build command for opentelemetry-proto
error occurs when running under Linux:
apt install protobuf-compiler
An failed to run custom build command for opentelemetry-proto
error occurs when running under MacOS:
brew install protobuf
Thanks to Jetbrains
for the Open Source License