Module Microservice
The Module microservice manages modules within applications. It provides CRUD operations, activation/deactivation, and filtering of modules by application and name. Each module typically represents a functional unit in a larger system.
Model (models.go)
Module
Represents a distinct module that is part of an application.
| Field | Type | Description |
|---|---|---|
ID | uint32 | Auto-increment primary key |
AppID | uint32 | ID of the application this module belongs to |
Name | string | Name of the module |
Url | string | URL path or endpoint for the module |
Version | string | Version identifier (e.g., "v1.0.0") |
IsActive | bool | Indicates if the module is active |
Actions | []string | List of allowed actions in the module |
CreatedAt | time.Time | Module creation timestamp |
UpdatedAt | time.Time | Last update timestamp |
CreatedBy | uint32 | ID of the user who created the record |
UpdatedBy | uint32 | ID of the user who last updated the record |
Note: The
Actionsfield usespq.StringArrayto store a string array in PostgreSQL.
gRPC API (module.proto)
Messages
Module
Represents the structure of a module used throughout requests and responses.
Requests
- CreateModuleRequest – Adds a new module.
- UpdateModuleRequest – Modifies an existing module.
- ActivateModuleRequest – Marks a module as active.
- DeactivateModuleRequest – Marks a module as inactive.
- GetModuleByIDRequest – Fetches a module by its unique ID.
- GetModuleByNameRequest – Retrieves a module by name.
- ListModulesByAppIDRequest – Lists all modules under a specific application ID.
- ListAllModulesRequest – Lists all modules in the system with pagination and search.
Responses
- ModuleResponse – Standard response with a list of modules and metadata.
- CheckResponse – A boolean confirmation response (e.g., for activation/deactivation).
Services
service ModuleService {
rpc CreateModule(CreateModuleRequest) returns (ModuleResponse);
rpc UpdateModule(UpdateModuleRequest) returns (ModuleResponse);
rpc ActivateModule(ActivateModuleRequest) returns (CheckResponse);
rpc DeactivateModule(DeactivateModuleRequest) returns (CheckResponse);
rpc GetModuleByID(GetModuleByIDRequest) returns (ModuleResponse);
rpc GetModuleByName(GetModuleByNameRequest) returns (ModuleResponse);
rpc ListModulesByAppID(ListModulesByAppIDRequest) returns (ModuleResponse);
rpc ListAllModules(ListAllModulesRequest) returns (ModuleResponse);
}
Pagination & Filtering
- All list RPCs accept
page_numberandpage_sizefor pagination. - Search filtering is supported via the
searchfield in list requests.