qm 0.0.72

Utilities for quick microservices in Rust
Documentation

Quick Microservices - qm

utilities to create quick microservices in Rust


GitHub repositoryCargo packageDocs

github.com - quick-microservice-rs crates.io - qm
github.com - workflow - build


Requirements

  • Rust 1.90.0+

Feature flags

default

There are no default features. Every feature provided must be enabled explicitly.

entity

Implements the opinionated concept of an Entity. A way to handle database models with predefined constrains to describe permissions and ownership. Uses the crates sea-orm and sqlx.

Integrates with the features keycloak, mongodb, redis, role and nats.

kafka

Provides an easy way to configure and set up a connection to a Kafka server. Configuration can be done with environment variables. The default prefix is KAFKA_. Uses the crate rdkafka.

Also provides opinionated topics and producers for Kafka events.

keycloak

Provides an easy way to configure and set up a connection to a Keycloak server. Configuration can be done with environment variables. The default prefix is KEYCLOAK_. Uses the crate keycloak.

Also provides an opinionated configuration template and some helper functions.

mongodb

Provides an easy way to configure and set up a database connection for a MongoDB database. Configuration can be done with environment variables. The default prefix is MONGODB_. Uses the crate mongodb.

nats

Provides an easy way to configure and set up a connection to a NATS server with JetStream support. Configuration can be done with environment variables. The default prefix is NATS_. Uses the crate async-nats.

Also provides opinionated utilities for distributed locking, sequence generation, and event publishing.

pg

Provides an easy way to configure and set up a database connection for a PostgreSQL database. Configuration can be done with environment variables. The default prefix is PG_. Uses the crate sqlx.

redis

Provides an easy way to configure and set up a database connection for a Redis database. Configuration can be done with environment variables. The default prefix is REDIS_. Uses the crates redis and deadpool-redis.

Also provides helper to handle worker queues and locking with Redis mechanisms.

role

Provides an opinionated way to handle role-based access control (RBAC) in microservices. Defines roles, permissions, and access control structures with support for authentication containers.

role-build

Provides utilities to generate Rust code for role-based access control from markdown tables. Parses markdown files containing user groups and role mappings to generate type-safe role code.

s3

Provides utilities for interacting with Amazon S3-compatible object storage services. Configuration can be done with environment variables. The default prefix is S3_. Uses the crate aws-sdk-s3.

server

Provides an easy way to get a server configuration. Configuration can be done with environment variables. The default prefix is SERVER_.

Also provides a graphql_handler.

The handler requires a qm_role::AuthContainer, so the feature role must be activated. Because the use of the handler is optional, the dependency is not automatically included.

utils

Provides common utility functions and macros used across the quick-microservice ecosystem. Currently re-exports the qm_utils_derive crate's CheapClone derive macro.