ncrudify
Version:
Configurable CRUD module for NestJS and Mongoose.
138 lines (105 loc) • 5.92 kB
Markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.4.0] - 2025-11-07
### Added
- **Dynamic route configuration system:**
Introduced a new `ConfigService` and `ConfigController` to dynamically enable or disable routes per model.
- Routes can be toggled at runtime without redeploying the application.
- Configuration is cached in memory for fast access and automatically loaded at startup.
- **Automatic route control:**
The `CrudifyController` now checks route availability using `ConfigService.isRouteEnabled(model, route)` before executing a CRUD operation.
- **Soft route blocking (no exception):**
Instead of throwing an exception, disabled endpoints now return a structured JSON message:
```json
{
"success": false,
"status": 403,
"message": "The route 'findAll' for model 'User' is currently disabled."
}
```
This improves frontend handling and avoids unnecessary server errors.
- **Interceptor support:**
Added an optional RouteAvailabilityInterceptor to centralize route availability checks for all controllers.
## [1.3.1] - 2025-10-30
### Fix
- **Fixed a bug that always disabled softDelete**
## [1.3.0] - 2025-10-28
### Added
- **New `/count` route:** Added an endpoint to count the number of records matching the query filters.
Example: `GET /your-model/count`
- **New `/:id/soft` route:** Added soft delete support for single records via `DELETE /your-model/:id/soft`.
### Updated
- **NestJS updated to the latest version** for improved stability and compatibility.
- **Dependencies updated** to their latest compatible versions, ensuring better performance and security.
---
## [1.2.6] - 2025-02-10
### Removed
- **CrudifyLoggerModule:** Insted use `CrudifyModule`
---
## [1.2.5] - 2025-01-30
### Fix
- **QueryParser:** Fixed an issue with `in` operator.
---
## [1.2.4] - 2025-01-30
### Added
- **CrudifyController & CrudifyService:** Added support for `CreateDto` and `UpdateDto` to handle creation and update operations more effectively.
- **Soft Delete:** Implemented soft delete functionality, with routes for both single and bulk deletion.
- **DisableBulk:** Added `disableBulk` in routes.disableBulk to control bulk operations more granularly.
### Fix
- **OpenApi:** Fixed an issue with `OpenApi` types generation, ensuring that each route now has a unique operationId to prevent route duplication and improve Swagger documentation clarity.
- **ErrsoleConf:** Resolved an issue with the default URI configuration, ensuring it now defaults correctly.
---
## [1.2.1] - 2025-01-28
### Added
- **Example filter:** Added example filters in swaggerUI
- **CrudifyLoggerModule:** Now supports all errsole options.
### Fix
- **Validation pipe:** `UsePipes(new ValidationPipe({ transform: true }))` as default.
### Removed
- **CrudifySwaggerModule:** Insted use classic configuration of swagger.
---
## [1.2.0] - 2025-01-22
### Added
- **Custom Decorators:** Introduced support for custom decorators:
- **Route-Specific Decorators:** Define custom decorators for specific routes to enhance flexibility and control.
- **Generic Decorators:** Apply generic decorators across all routes for consistent functionality.
### Fixed
- **Filters Bug:** Resolved issues with filters that caused unexpected behavior in certain scenarios.
- **Console Logging:** Logs are now properly printed to the console in addition to being stored in the database, improving debugging and monitoring capabilities.
---
## [1.1.1] - 2025-01-20
### Bug
- **MongoDB URI Configuration:** Resolved an issue where the MongoDB URI was not being recognized properly when configuring the `CrudifyLoggerModule`. The default URI `mongodb://127.0.0.1:27017` with `logs` as the database is now used correctly.
- You can now configure the module using `CrudifyLoggerModule.forRoot()` with a custom URI and database name:
```typescript
CrudifyLoggerModule.forRoot({
uri: 'mongodb://xxx.xxx.xxx.xxx:yyyyy/',
dbName: 'mydblogger',
});
```
---
## [1.1.0] - 2025-01-17
### Added
- **Route Exclusion:** Added the ability to exclude specific routes from CRUD generation via the `routes.exclude` option in the `@Crudify` decorator.
- **Bulk Operations:** Introduced new bulk routes for batch processing:
- `POST /your-model/bulk`: Create multiple records in a single request.
- `PATCH /your-model/bulk`: Update multiple records based on specified filters or IDs.
- `DELETE /your-model/bulk`: Delete multiple records at once using filters or a list of IDs.
---
## [1.0.0] - 2025-01-10
### Added
- **Core Functionality:** Initial release of the library with automatic CRUD generation for Mongoose models in NestJS.
- `POST /your-model`: Create a new record.
- `GET /your-model`: Retrieve all records.
- `GET /your-model/:id`: Retrieve a record by ID.
- `PATCH /your-model/:id`: Update specific fields of a record by ID.
- `PUT /your-model/:id`: Replace an entire record by ID.
- `DELETE /your-model/:id`: Delete a record by ID.
- **Swagger Integration:** Automatically generate Swagger documentation for all CRUD routes.
- **Filter Support:** Enable filtering of query results using operators like `$eq`, `$gt`, `$cont`, and more.
- **Customizable Services:** Allow developers to extend and override CRUD service methods for custom logic.
- **Built-in Error Handling:** Integrated a logger to handle uncaught errors and log them for debugging.
---
> **Note:** For any issues or feature requests, please open a ticket in the [GitHub repository](https://github.com/mitinoh/crudify).