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.
- From
GraphQL Context - 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.
- Mutate
Permissions - Trait for defining mutation permissions.
- Query
Permissions - Trait for defining query permissions.
- Session
Access - 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.