Skip to main content

Crate qm_entity

Crate qm_entity 

Source
Expand description

Entity abstraction layer for quick-microservice.

This crate provides common entity abstractions, utilities, and traits for building microservices with MongoDB and PostgreSQL.

§Features

  • Permission Traits: Define create/update/delete and list/view permissions
  • Collection Helpers: MongoDB collection wrappers with common operations
  • ID Types: Standardized ID types and conversions
  • Error Handling: Entity-specific error types and helpers
  • GraphQL Integration: Context extraction and error helpers
  • Macros: Error creation macros for entity operations

§Usage

Define permissions on your entity types:

```ignore use qm_entity::{MutatePermissions, QueryPermissions};

#[derive(Clone)] struct MyPermissions;

impl MutatePermissions for MyPermissions { fn create() -> Self { Self } fn update() -> Self { Self } fn delete() -> Self { Self } }

impl QueryPermissions for MyPermissions { fn list() -> Self { Self } fn view() -> Self { Self } } ```

Use Collection for MongoDB operations:

```ignore use qm_entity::Collection; use mongodb::bson::oid::ObjectId;

let collection = Collection(my_mongodb_collection); let item = collection.by_id(&ObjectId::new()).await?; ```

Modules§

error
Error types and helpers.
ids
ID type definitions and conversions.
list
List filter and pagination utilities.
model
Model types for entities.
owned
Owned resource types.

Macros§

err
Macro for creating entity errors.
exerr
Macro for creating extended entity errors.
impl_id_scalar
Macro to implement GraphQL scalar type for ID types.

Structs§

Collection
MongoDB collection wrapper with common CRUD operations.

Traits§

AsNumber
Trait for converting types to numeric codes.
Create
Trait for entity creation logic.
FromGraphQLContext
Trait for extracting types from GraphQL context.
HasAccess
Trait for access control.
HasRole
Trait for role-based access control.
IsAdmin
Trait for admin role detection.
IsSupport
Trait for support role detection.
MutatePermissions
Trait for defining mutation permissions.
QueryPermissions
Trait for defining query permissions.
SessionAccess
Trait for extracting session access permissions.
UserId
Trait for extracting user ID from session.

Functions§

conflict
Create a conflict error (HTTP 409).
conflicting_name
Creates a conflict error for duplicate names.
unauthorized
Create an unauthorized error (HTTP 401).
unauthorized_name
Creates an unauthorized error for a named entity.