@elsikora/nestjs-crud-automator 1.6.4 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +381 -266
- package/dist/cjs/class/metadata-storage.class.js +2 -3
- package/dist/cjs/class/metadata-storage.class.js.map +1 -1
- package/dist/cjs/decorator/api/method.decorator.js +56 -56
- package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/date.decorator.js +2 -2
- package/dist/cjs/decorator/api/property/date.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/property/string.decorator.js +2 -2
- package/dist/cjs/decorator/api/property/string.decorator.js.map +1 -1
- package/dist/cjs/factory/api/controller.factory.js +3 -0
- package/dist/cjs/factory/api/controller.factory.js.map +1 -1
- package/dist/cjs/package.json +8 -0
- package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js +3 -1
- package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js +1 -1
- package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/write-method.utility.js +6 -1
- package/dist/cjs/utility/api/controller/write-method.utility.js.map +1 -1
- package/dist/cjs/utility/camel-case-string.utility.js +1 -1
- package/dist/cjs/utility/camel-case-string.utility.js.map +1 -1
- package/dist/cjs/utility/dto/generate-exception.utility.js +5 -5
- package/dist/cjs/utility/dto/generate-exception.utility.js.map +1 -1
- package/dist/cjs/utility/dto/generate-get-list-response.utility.js +5 -0
- package/dist/cjs/utility/dto/generate-get-list-response.utility.js.map +1 -1
- package/dist/cjs/utility/dto/generate-relation-response.utility.js +1 -0
- package/dist/cjs/utility/dto/generate-relation-response.utility.js.map +1 -1
- package/dist/cjs/utility/dto/get-get-list-query-base-class.utility.js +4 -0
- package/dist/cjs/utility/dto/get-get-list-query-base-class.utility.js.map +1 -1
- package/dist/cjs/validator/has-paired-custom-suffixes-fields.validator.js.map +1 -1
- package/dist/esm/class/api/index.d.ts +1 -0
- package/dist/esm/class/api/service-base.class.d.ts +11 -0
- package/dist/esm/class/index.d.ts +3 -0
- package/dist/esm/class/metadata-storage.class.d.ts +12 -0
- package/dist/esm/class/utility/dto/index.d.ts +2 -0
- package/dist/esm/class/utility/dto/property/factory/boolean.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/factory/date.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/factory/enum.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/factory/index.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/factory/number.class.d.ts +7 -0
- package/dist/esm/class/utility/dto/property/factory/object.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/factory/relation.class.d.ts +7 -0
- package/dist/esm/class/utility/dto/property/factory/string.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/factory/uuid.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/property/index.d.ts +1 -0
- package/dist/esm/class/utility/dto/strategy/body.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/strategy/index.d.ts +4 -0
- package/dist/esm/class/utility/dto/strategy/query.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/strategy/request.class.d.ts +6 -0
- package/dist/esm/class/utility/dto/strategy/response.class.d.ts +6 -0
- package/dist/esm/class/utility/index.d.ts +1 -0
- package/dist/esm/constant/date.constant.d.ts +4 -0
- package/dist/esm/constant/decorator/api/controller.constant.d.ts +3 -0
- package/dist/esm/constant/decorator/api/function.constant.d.ts +4 -0
- package/dist/esm/constant/decorator/api/index.d.ts +3 -0
- package/dist/esm/constant/decorator/api/property-describe.constant.d.ts +3 -0
- package/dist/esm/constant/decorator/index.d.ts +1 -0
- package/dist/esm/constant/dto/exception.constant.d.ts +6 -0
- package/dist/esm/constant/dto/index.d.ts +3 -0
- package/dist/esm/constant/dto/list.constant.d.ts +7 -0
- package/dist/esm/constant/dto/transformer-value.constant.d.ts +7 -0
- package/dist/esm/constant/factory/dto/get-list-query.constant.d.ts +6 -0
- package/dist/esm/constant/factory/dto/index.d.ts +1 -0
- package/dist/esm/constant/factory/index.d.ts +1 -0
- package/dist/esm/constant/index.d.ts +6 -0
- package/dist/esm/constant/interface/api/filter.constant.d.ts +3 -0
- package/dist/esm/constant/interface/api/index.d.ts +2 -0
- package/dist/esm/constant/interface/api/property/index.d.ts +2 -0
- package/dist/esm/constant/interface/api/property/string.constant.d.ts +6 -0
- package/dist/esm/constant/interface/api/property/wallet.constant.d.ts +5 -0
- package/dist/esm/constant/interface/index.d.ts +1 -0
- package/dist/esm/constant/number.constant.d.ts +18 -0
- package/dist/esm/constant/utility/dto/constant.d.ts +6 -0
- package/dist/esm/constant/utility/dto/generate.constant.d.ts +4 -0
- package/dist/esm/decorator/api/controller.decorator.d.ts +3 -0
- package/dist/esm/decorator/api/function/create.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/function/decorator.d.ts +3 -0
- package/dist/esm/decorator/api/function/delete.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/function/get-list.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/function/get-many.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/function/get.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/function/index.d.ts +7 -0
- package/dist/esm/decorator/api/function/update.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/index.d.ts +5 -0
- package/dist/esm/decorator/api/method.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/boolean.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/date.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/describe.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/enum.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/index.d.ts +7 -0
- package/dist/esm/decorator/api/property/number.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/object.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/string.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/property/uuid.decorator.d.ts +2 -0
- package/dist/esm/decorator/api/service.decorator.d.ts +3 -0
- package/dist/esm/decorator/index.d.ts +1 -0
- package/dist/esm/enum/decorator/api/action.enum.d.ts +30 -0
- package/dist/esm/enum/decorator/api/authentication-type.enum.d.ts +6 -0
- package/dist/esm/enum/decorator/api/controller/index.d.ts +2 -0
- package/dist/esm/enum/decorator/api/controller/load-relations-strategy.enum.d.ts +4 -0
- package/dist/esm/enum/decorator/api/controller/request-transformer-type.enum.d.ts +4 -0
- package/dist/esm/enum/decorator/api/dto-type.enum.d.ts +6 -0
- package/dist/esm/enum/decorator/api/function/index.d.ts +1 -0
- package/dist/esm/enum/decorator/api/function/type.enum.d.ts +8 -0
- package/dist/esm/enum/decorator/api/index.d.ts +7 -0
- package/dist/esm/enum/decorator/api/property/data-type.enum.d.ts +18 -0
- package/dist/esm/enum/decorator/api/property/date/identifier.enum.d.ts +14 -0
- package/dist/esm/enum/decorator/api/property/date/index.d.ts +2 -0
- package/dist/esm/enum/decorator/api/property/date/type.enum.d.ts +5 -0
- package/dist/esm/enum/decorator/api/property/desribe-type.enum.d.ts +10 -0
- package/dist/esm/enum/decorator/api/property/index.d.ts +5 -0
- package/dist/esm/enum/decorator/api/property/number-type.enum.d.ts +4 -0
- package/dist/esm/enum/decorator/api/property/string-type.enum.d.ts +11 -0
- package/dist/esm/enum/decorator/api/route-type.enum.d.ts +8 -0
- package/dist/esm/enum/decorator/index.d.ts +1 -0
- package/dist/esm/enum/exception.enum.d.ts +30 -0
- package/dist/esm/enum/filter-operation.enum.d.ts +110 -0
- package/dist/esm/enum/filter-order-direction.enum.d.ts +4 -0
- package/dist/esm/enum/index.d.ts +4 -0
- package/dist/esm/enum/utility/error-string-action.enum.d.ts +102 -0
- package/dist/esm/enum/utility/index.d.ts +1 -0
- package/dist/esm/external/tslib/tslib.es6.js +35 -0
- package/dist/esm/external/tslib/tslib.es6.js.map +1 -0
- package/dist/esm/factory/api/controller.factory.d.ts +18 -0
- package/dist/esm/factory/api/index.d.ts +1 -0
- package/dist/esm/factory/index.d.ts +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/interceptor/correlation-id-response-body.interceptor.d.ts +5 -0
- package/dist/esm/interceptor/index.d.ts +1 -0
- package/dist/esm/interface/api-authentication-request.interface.d.ts +4 -0
- package/dist/esm/interface/api-base-entity.interface.d.ts +4 -0
- package/dist/esm/interface/api-dto-validator.interface.d.ts +4 -0
- package/dist/esm/interface/api-request-validator.interface.d.ts +7 -0
- package/dist/esm/interface/class/dto/index.d.ts +1 -0
- package/dist/esm/interface/class/dto/strategy.interface.d.ts +5 -0
- package/dist/esm/interface/class/index.d.ts +2 -0
- package/dist/esm/interface/class/metadata-entry.interface.d.ts +2 -0
- package/dist/esm/interface/decorator/api/controller/base.interface.d.ts +4 -0
- package/dist/esm/interface/decorator/api/controller/index.d.ts +3 -0
- package/dist/esm/interface/decorator/api/controller/properties/index.d.ts +1 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/authentication.interface.d.ts +9 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/auto-dto-config.interface.d.ts +4 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/base-request.interface.d.ts +8 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/base-response.interface.d.ts +7 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/base.interface.d.ts +11 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/index.d.ts +7 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/with-auto-dto.interface.d.ts +7 -0
- package/dist/esm/interface/decorator/api/controller/properties/route/with-dto.interface.d.ts +7 -0
- package/dist/esm/interface/decorator/api/controller/properties.interface.d.ts +11 -0
- package/dist/esm/interface/decorator/api/function/create-executor-properties.interface.d.ts +8 -0
- package/dist/esm/interface/decorator/api/function/delete-executor-properties.interface.d.ts +9 -0
- package/dist/esm/interface/decorator/api/function/get-executor-properties.interface.d.ts +8 -0
- package/dist/esm/interface/decorator/api/function/get-list-executor-properties.interface.d.ts +8 -0
- package/dist/esm/interface/decorator/api/function/get-many-executor-properties.interface.d.ts +8 -0
- package/dist/esm/interface/decorator/api/function/index.d.ts +7 -0
- package/dist/esm/interface/decorator/api/function/properties.interface.d.ts +4 -0
- package/dist/esm/interface/decorator/api/function/update-executor-properties.interface.d.ts +10 -0
- package/dist/esm/interface/decorator/api/get-list-response-result.interface.d.ts +7 -0
- package/dist/esm/interface/decorator/api/index.d.ts +5 -0
- package/dist/esm/interface/decorator/api/method/index.d.ts +2 -0
- package/dist/esm/interface/decorator/api/method/properties.interface.d.ts +17 -0
- package/dist/esm/interface/decorator/api/method/throttler-properties.interface.d.ts +4 -0
- package/dist/esm/interface/decorator/api/response-type.interface.d.ts +9 -0
- package/dist/esm/interface/decorator/index.d.ts +1 -0
- package/dist/esm/interface/dto-generate-factory.interface.d.ts +6 -0
- package/dist/esm/interface/entity/column.interface.d.ts +7 -0
- package/dist/esm/interface/entity/index.d.ts +2 -0
- package/dist/esm/interface/entity/interface.d.ts +7 -0
- package/dist/esm/interface/index.d.ts +8 -0
- package/dist/esm/interface/utility/api/controller/index.d.ts +1 -0
- package/dist/esm/interface/utility/api/controller/primary-column.interface.d.ts +4 -0
- package/dist/esm/interface/utility/api/index.d.ts +1 -0
- package/dist/esm/interface/utility/error-string-properties.interface.d.ts +5 -0
- package/dist/esm/interface/utility/get-entity-columns-properties.interface.d.ts +6 -0
- package/dist/esm/interface/utility/index.d.ts +2 -0
- package/dist/esm/package.json +8 -0
- package/dist/esm/src/class/api/service-base.class.js +23 -0
- package/dist/esm/src/class/api/service-base.class.js.map +1 -0
- package/dist/esm/src/class/metadata-storage.class.js +47 -0
- package/dist/esm/src/class/metadata-storage.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/boolean.class.js +15 -0
- package/dist/esm/src/class/utility/dto/property/factory/boolean.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/date.class.js +15 -0
- package/dist/esm/src/class/utility/dto/property/factory/date.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/enum.class.js +15 -0
- package/dist/esm/src/class/utility/dto/property/factory/enum.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/number.class.js +32 -0
- package/dist/esm/src/class/utility/dto/property/factory/number.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/object.class.js +16 -0
- package/dist/esm/src/class/utility/dto/property/factory/object.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/relation.class.js +29 -0
- package/dist/esm/src/class/utility/dto/property/factory/relation.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/string.class.js +15 -0
- package/dist/esm/src/class/utility/dto/property/factory/string.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/property/factory/uuid.class.js +11 -0
- package/dist/esm/src/class/utility/dto/property/factory/uuid.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/strategy/body.class.js +47 -0
- package/dist/esm/src/class/utility/dto/strategy/body.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/strategy/query.class.js +44 -0
- package/dist/esm/src/class/utility/dto/strategy/query.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/strategy/request.class.js +47 -0
- package/dist/esm/src/class/utility/dto/strategy/request.class.js.map +1 -0
- package/dist/esm/src/class/utility/dto/strategy/response.class.js +47 -0
- package/dist/esm/src/class/utility/dto/strategy/response.class.js.map +1 -0
- package/dist/esm/src/constant/date.constant.js +9 -0
- package/dist/esm/src/constant/date.constant.js.map +1 -0
- package/dist/esm/src/constant/decorator/api/controller.constant.js +7 -0
- package/dist/esm/src/constant/decorator/api/controller.constant.js.map +1 -0
- package/dist/esm/src/constant/decorator/api/function.constant.js +24 -0
- package/dist/esm/src/constant/decorator/api/function.constant.js.map +1 -0
- package/dist/esm/src/constant/decorator/api/property-describe.constant.js +7 -0
- package/dist/esm/src/constant/decorator/api/property-describe.constant.js.map +1 -0
- package/dist/esm/src/constant/dto/exception.constant.js +13 -0
- package/dist/esm/src/constant/dto/exception.constant.js.map +1 -0
- package/dist/esm/src/constant/dto/list.constant.js +13 -0
- package/dist/esm/src/constant/dto/list.constant.js.map +1 -0
- package/dist/esm/src/constant/dto/transformer-value.constant.js +15 -0
- package/dist/esm/src/constant/dto/transformer-value.constant.js.map +1 -0
- package/dist/esm/src/constant/factory/dto/get-list-query.constant.js +13 -0
- package/dist/esm/src/constant/factory/dto/get-list-query.constant.js.map +1 -0
- package/dist/esm/src/constant/interface/api/filter.constant.js +7 -0
- package/dist/esm/src/constant/interface/api/filter.constant.js.map +1 -0
- package/dist/esm/src/constant/interface/api/property/string.constant.js +11 -0
- package/dist/esm/src/constant/interface/api/property/string.constant.js.map +1 -0
- package/dist/esm/src/constant/interface/api/property/wallet.constant.js +11 -0
- package/dist/esm/src/constant/interface/api/property/wallet.constant.js.map +1 -0
- package/dist/esm/src/constant/number.constant.js +37 -0
- package/dist/esm/src/constant/number.constant.js.map +1 -0
- package/dist/esm/src/constant/utility/dto/constant.js +53 -0
- package/dist/esm/src/constant/utility/dto/constant.js.map +1 -0
- package/dist/esm/src/constant/utility/dto/generate.constant.js +9 -0
- package/dist/esm/src/constant/utility/dto/generate.constant.js.map +1 -0
- package/dist/esm/src/decorator/api/controller.decorator.js +16 -0
- package/dist/esm/src/decorator/api/controller.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/create.decorator.js +51 -0
- package/dist/esm/src/decorator/api/function/create.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/decorator.js +69 -0
- package/dist/esm/src/decorator/api/function/decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/delete.decorator.js +69 -0
- package/dist/esm/src/decorator/api/function/delete.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/get-list.decorator.js +58 -0
- package/dist/esm/src/decorator/api/function/get-list.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/get-many.decorator.js +55 -0
- package/dist/esm/src/decorator/api/function/get-many.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/get.decorator.js +55 -0
- package/dist/esm/src/decorator/api/function/get.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/function/update.decorator.js +80 -0
- package/dist/esm/src/decorator/api/function/update.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/method.decorator.js +349 -0
- package/dist/esm/src/decorator/api/method.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/boolean.decorator.js +177 -0
- package/dist/esm/src/decorator/api/property/boolean.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/date.decorator.js +204 -0
- package/dist/esm/src/decorator/api/property/date.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/describe.decorator.js +29 -0
- package/dist/esm/src/decorator/api/property/describe.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/enum.decorator.js +103 -0
- package/dist/esm/src/decorator/api/property/enum.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/number.decorator.js +213 -0
- package/dist/esm/src/decorator/api/property/number.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/object.decorator.js +102 -0
- package/dist/esm/src/decorator/api/property/object.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/string.decorator.js +232 -0
- package/dist/esm/src/decorator/api/property/string.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/property/uuid.decorator.js +118 -0
- package/dist/esm/src/decorator/api/property/uuid.decorator.js.map +1 -0
- package/dist/esm/src/decorator/api/service.decorator.js +161 -0
- package/dist/esm/src/decorator/api/service.decorator.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/action.enum.js +34 -0
- package/dist/esm/src/enum/decorator/api/action.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/authentication-type.enum.js +10 -0
- package/dist/esm/src/enum/decorator/api/authentication-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/controller/load-relations-strategy.enum.js +8 -0
- package/dist/esm/src/enum/decorator/api/controller/load-relations-strategy.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/controller/request-transformer-type.enum.js +8 -0
- package/dist/esm/src/enum/decorator/api/controller/request-transformer-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/dto-type.enum.js +10 -0
- package/dist/esm/src/enum/decorator/api/dto-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/function/type.enum.js +12 -0
- package/dist/esm/src/enum/decorator/api/function/type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/property/data-type.enum.js +22 -0
- package/dist/esm/src/enum/decorator/api/property/data-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/property/date/identifier.enum.js +18 -0
- package/dist/esm/src/enum/decorator/api/property/date/identifier.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/property/date/type.enum.js +11 -0
- package/dist/esm/src/enum/decorator/api/property/date/type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/property/desribe-type.enum.js +14 -0
- package/dist/esm/src/enum/decorator/api/property/desribe-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/property/number-type.enum.js +10 -0
- package/dist/esm/src/enum/decorator/api/property/number-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/property/string-type.enum.js +17 -0
- package/dist/esm/src/enum/decorator/api/property/string-type.enum.js.map +1 -0
- package/dist/esm/src/enum/decorator/api/route-type.enum.js +12 -0
- package/dist/esm/src/enum/decorator/api/route-type.enum.js.map +1 -0
- package/dist/esm/src/enum/exception.enum.js +34 -0
- package/dist/esm/src/enum/exception.enum.js.map +1 -0
- package/dist/esm/src/enum/filter-operation.enum.js +123 -0
- package/dist/esm/src/enum/filter-operation.enum.js.map +1 -0
- package/dist/esm/src/enum/filter-order-direction.enum.js +8 -0
- package/dist/esm/src/enum/filter-order-direction.enum.js.map +1 -0
- package/dist/esm/src/enum/utility/error-string-action.enum.js +106 -0
- package/dist/esm/src/enum/utility/error-string-action.enum.js.map +1 -0
- package/dist/esm/src/factory/api/controller.factory.js +216 -0
- package/dist/esm/src/factory/api/controller.factory.js.map +1 -0
- package/dist/esm/src/index.js +82 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interceptor/correlation-id-response-body.interceptor.js +76 -0
- package/dist/esm/src/interceptor/correlation-id-response-body.interceptor.js.map +1 -0
- package/dist/esm/src/utility/api/controller/apply-decorators.utility.js +81 -0
- package/dist/esm/src/utility/api/controller/apply-decorators.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/apply-metadata.utility.js +76 -0
- package/dist/esm/src/utility/api/controller/apply-metadata.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/get-list/transform-filter.utility.js +48 -0
- package/dist/esm/src/utility/api/controller/get-list/transform-filter.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/get-list/transform-operation.utility.js +80 -0
- package/dist/esm/src/utility/api/controller/get-list/transform-operation.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/get-method-name.utility.js +9 -0
- package/dist/esm/src/utility/api/controller/get-method-name.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/get-primary-column.utility.js +13 -0
- package/dist/esm/src/utility/api/controller/get-primary-column.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/handle-request-relations.utility.js +70 -0
- package/dist/esm/src/utility/api/controller/handle-request-relations.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/transform-data.utility.js +147 -0
- package/dist/esm/src/utility/api/controller/transform-data.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/validate-request.utility.js +16 -0
- package/dist/esm/src/utility/api/controller/validate-request.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/write-dto-swagger.utility.js +77 -0
- package/dist/esm/src/utility/api/controller/write-dto-swagger.utility.js.map +1 -0
- package/dist/esm/src/utility/api/controller/write-method.utility.js +18 -0
- package/dist/esm/src/utility/api/controller/write-method.utility.js.map +1 -0
- package/dist/esm/src/utility/api/filter-order-by-from-entity.utility.js +46 -0
- package/dist/esm/src/utility/api/filter-order-by-from-entity.utility.js.map +1 -0
- package/dist/esm/src/utility/camel-case-string.utility.js +29 -0
- package/dist/esm/src/utility/camel-case-string.utility.js.map +1 -0
- package/dist/esm/src/utility/capitalize-string.utility.js +6 -0
- package/dist/esm/src/utility/capitalize-string.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/analize.utility.js +25 -0
- package/dist/esm/src/utility/dto/analize.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/build-decorator.utility.js +49 -0
- package/dist/esm/src/utility/dto/build-decorator.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/generate-decorator.utility.js +13 -0
- package/dist/esm/src/utility/dto/generate-decorator.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/generate-exception.utility.js +96 -0
- package/dist/esm/src/utility/dto/generate-exception.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/generate-filter-decorator.utility.js +50 -0
- package/dist/esm/src/utility/dto/generate-filter-decorator.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/generate-get-list-response.utility.js +102 -0
- package/dist/esm/src/utility/dto/generate-get-list-response.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/generate-relation-response.utility.js +19 -0
- package/dist/esm/src/utility/dto/generate-relation-response.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/generate.utility.js +131 -0
- package/dist/esm/src/utility/dto/generate.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/get-decorator-config.utility.js +18 -0
- package/dist/esm/src/utility/dto/get-decorator-config.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/get-get-list-query-base-class.utility.js +95 -0
- package/dist/esm/src/utility/dto/get-get-list-query-base-class.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/handle-date-property.utility.js +33 -0
- package/dist/esm/src/utility/dto/handle-date-property.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/is-property-exposed-for-guard.utility.js +13 -0
- package/dist/esm/src/utility/dto/is-property-exposed-for-guard.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/is-property-should-be-marked.utility.js +44 -0
- package/dist/esm/src/utility/dto/is-property-should-be-marked.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/is-should-be-generated.utility.js +39 -0
- package/dist/esm/src/utility/dto/is-should-be-generated.utility.js.map +1 -0
- package/dist/esm/src/utility/dto/validate-property-config.utility.js +4 -0
- package/dist/esm/src/utility/dto/validate-property-config.utility.js.map +1 -0
- package/dist/esm/src/utility/error-exception.utility.js +6 -0
- package/dist/esm/src/utility/error-exception.utility.js.map +1 -0
- package/dist/esm/src/utility/error-string.utility.js +6 -0
- package/dist/esm/src/utility/error-string.utility.js.map +1 -0
- package/dist/esm/src/utility/generate-entity-information.utility.js +76 -0
- package/dist/esm/src/utility/generate-entity-information.utility.js.map +1 -0
- package/dist/esm/src/utility/get-entity-columns.utility.js +20 -0
- package/dist/esm/src/utility/get-entity-columns.utility.js.map +1 -0
- package/dist/esm/src/utility/is-error-of-type.utility.js +66 -0
- package/dist/esm/src/utility/is-error-of-type.utility.js.map +1 -0
- package/dist/esm/src/validator/all-or-none-of-listed-properties.validator.js +23 -0
- package/dist/esm/src/validator/all-or-none-of-listed-properties.validator.js.map +1 -0
- package/dist/esm/src/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js +33 -0
- package/dist/esm/src/validator/has-at-least-one-and-only-one-of-listed-properties.validator.js.map +1 -0
- package/dist/esm/src/validator/has-at-least-one-of-listed-properties.validator.js +29 -0
- package/dist/esm/src/validator/has-at-least-one-of-listed-properties.validator.js.map +1 -0
- package/dist/esm/src/validator/has-at-least-one-property.validator.js +17 -0
- package/dist/esm/src/validator/has-at-least-one-property.validator.js.map +1 -0
- package/dist/esm/src/validator/has-paired-custom-suffixes-fields.validator.js +214 -0
- package/dist/esm/src/validator/has-paired-custom-suffixes-fields.validator.js.map +1 -0
- package/dist/esm/src/validator/is-regular-expression.validator.js +25 -0
- package/dist/esm/src/validator/is-regular-expression.validator.js.map +1 -0
- package/dist/esm/src/validator/only-one-of-listed-properties.validator.js +28 -0
- package/dist/esm/src/validator/only-one-of-listed-properties.validator.js.map +1 -0
- package/dist/esm/type/api-request-transformer.type.d.ts +15 -0
- package/dist/esm/type/class/api-exception.type.d.ts +2 -0
- package/dist/esm/type/class/controller/index.d.ts +1 -0
- package/dist/esm/type/class/controller/method.type.d.ts +5 -0
- package/dist/esm/type/class/index.d.ts +3 -0
- package/dist/esm/type/class/metadata.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/controller/constructor.type.d.ts +4 -0
- package/dist/esm/type/decorator/api/controller/get-list-query.type.d.ts +8 -0
- package/dist/esm/type/decorator/api/controller/index.d.ts +5 -0
- package/dist/esm/type/decorator/api/controller/properties/index.d.ts +1 -0
- package/dist/esm/type/decorator/api/controller/properties/route/base-request-relations.type.d.ts +18 -0
- package/dist/esm/type/decorator/api/controller/properties/route/base-request-transformers.type.d.ts +10 -0
- package/dist/esm/type/decorator/api/controller/properties/route/base-response-transformers.type.d.ts +10 -0
- package/dist/esm/type/decorator/api/controller/properties/route/index.d.ts +3 -0
- package/dist/esm/type/decorator/api/controller/properties-route.type.d.ts +3 -0
- package/dist/esm/type/decorator/api/controller/transformer-config.type.d.ts +8 -0
- package/dist/esm/type/decorator/api/filter/allowed-types.type.d.ts +1 -0
- package/dist/esm/type/decorator/api/filter/extracted-allowed-types.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/filter/field-selector.type.d.ts +3 -0
- package/dist/esm/type/decorator/api/filter/index.d.ts +4 -0
- package/dist/esm/type/decorator/api/filter/order-by.type.d.ts +4 -0
- package/dist/esm/type/decorator/api/function/create-properties.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/function/delete-criteria.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/function/get-list-properties-where.type.d.ts +7 -0
- package/dist/esm/type/decorator/api/function/get-list-properties.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/function/get-many.properties.d.ts +2 -0
- package/dist/esm/type/decorator/api/function/get-properties.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/function/index.d.ts +9 -0
- package/dist/esm/type/decorator/api/function/properties.type.d.ts +7 -0
- package/dist/esm/type/decorator/api/function/update-criteria.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/function/update-properties.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/index.d.ts +5 -0
- package/dist/esm/type/decorator/api/property/base/array/index.d.ts +2 -0
- package/dist/esm/type/decorator/api/property/base/array/optional-properties.type.d.ts +3 -0
- package/dist/esm/type/decorator/api/property/base/array/required-properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/base/index.d.ts +4 -0
- package/dist/esm/type/decorator/api/property/base/properties.type.d.ts +9 -0
- package/dist/esm/type/decorator/api/property/base/request-properties.type.d.ts +4 -0
- package/dist/esm/type/decorator/api/property/base/response-properties.type.d.ts +4 -0
- package/dist/esm/type/decorator/api/property/date-properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/describe/array/index.d.ts +2 -0
- package/dist/esm/type/decorator/api/property/describe/array/optional-properties.type.d.ts +3 -0
- package/dist/esm/type/decorator/api/property/describe/array/required-properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/describe/base-properties.type.d.ts +5 -0
- package/dist/esm/type/decorator/api/property/describe/boolean-properties.type.d.ts +7 -0
- package/dist/esm/type/decorator/api/property/describe/date-properties.type.d.ts +8 -0
- package/dist/esm/type/decorator/api/property/describe/dto/body-properties.type.d.ts +5 -0
- package/dist/esm/type/decorator/api/property/describe/dto/guard-properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/describe/dto/index.d.ts +5 -0
- package/dist/esm/type/decorator/api/property/describe/dto/properties.type.d.ts +11 -0
- package/dist/esm/type/decorator/api/property/describe/dto/query/get-list-properties.type.d.ts +3 -0
- package/dist/esm/type/decorator/api/property/describe/dto/query/index.d.ts +2 -0
- package/dist/esm/type/decorator/api/property/describe/dto/query/properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/describe/dto/request-properties.type.d.ts +5 -0
- package/dist/esm/type/decorator/api/property/describe/dto/response-properties.type.d.ts +5 -0
- package/dist/esm/type/decorator/api/property/describe/enum-properties.type.d.ts +9 -0
- package/dist/esm/type/decorator/api/property/describe/example-properties.type.d.ts +7 -0
- package/dist/esm/type/decorator/api/property/describe/index.d.ts +13 -0
- package/dist/esm/type/decorator/api/property/describe/number-properties.type.d.ts +12 -0
- package/dist/esm/type/decorator/api/property/describe/object-properties.type.d.ts +12 -0
- package/dist/esm/type/decorator/api/property/describe/properties/base-dto-properties.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/property/describe/properties/base-properties.type.d.ts +10 -0
- package/dist/esm/type/decorator/api/property/describe/properties/index.d.ts +2 -0
- package/dist/esm/type/decorator/api/property/describe/properties.type.d.ts +9 -0
- package/dist/esm/type/decorator/api/property/describe/relation-properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/describe/string-properties.type.d.ts +12 -0
- package/dist/esm/type/decorator/api/property/describe/uuid-properties.type.d.ts +7 -0
- package/dist/esm/type/decorator/api/property/enum-properties.type.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/index.d.ts +6 -0
- package/dist/esm/type/decorator/api/property/number-properties.type.d.ts +9 -0
- package/dist/esm/type/decorator/api/property/object-properties.type.d.ts +8 -0
- package/dist/esm/type/decorator/api/property/string-properties.type.d.ts +9 -0
- package/dist/esm/type/decorator/api/property/uuid-properties.type.d.ts +2 -0
- package/dist/esm/type/decorator/api/service/index.d.ts +2 -0
- package/dist/esm/type/decorator/api/service/keys.type.d.ts +4 -0
- package/dist/esm/type/decorator/api/service/properties.type.d.ts +3 -0
- package/dist/esm/type/decorator/index.d.ts +1 -0
- package/dist/esm/type/factory/api/controller/index.d.ts +4 -0
- package/dist/esm/type/factory/api/controller/method-map.type.d.ts +12 -0
- package/dist/esm/type/factory/api/controller/method-name-map.type.d.ts +5 -0
- package/dist/esm/type/factory/api/controller/method-name.type.d.ts +4 -0
- package/dist/esm/type/factory/api/controller/target-methods.type.d.ts +9 -0
- package/dist/esm/type/factory/api/index.d.ts +1 -0
- package/dist/esm/type/factory/index.d.ts +1 -0
- package/dist/esm/type/index.d.ts +5 -0
- package/dist/esm/type/utility/api/controller/index.d.ts +1 -0
- package/dist/esm/type/utility/api/controller/transform-data/data.type.d.ts +6 -0
- package/dist/esm/type/utility/api/controller/transform-data/index.d.ts +3 -0
- package/dist/esm/type/utility/api/controller/transform-data/is-validation-properties.type.d.ts +3 -0
- package/dist/esm/type/utility/api/controller/transform-data/object-to-transform.type.d.ts +9 -0
- package/dist/esm/type/utility/api/index.d.ts +1 -0
- package/dist/esm/type/utility/capitalize-string.type.d.ts +1 -0
- package/dist/esm/type/utility/date-keys.type.d.ts +2 -0
- package/dist/esm/type/utility/date-range-keys.type.d.ts +4 -0
- package/dist/esm/type/utility/dto/generate-allowed-combination.type.d.ts +9 -0
- package/dist/esm/type/utility/dto/generate-is-allowed-combination.type.d.ts +3 -0
- package/dist/esm/type/utility/dto/index.d.ts +2 -0
- package/dist/esm/type/utility/filter-keys.type.d.ts +7 -0
- package/dist/esm/type/utility/index.d.ts +7 -0
- package/dist/esm/type/utility/non-date-keys.type.d.ts +2 -0
- package/dist/esm/utility/api/controller/apply-decorators.utility.d.ts +4 -0
- package/dist/esm/utility/api/controller/apply-metadata.utility.d.ts +4 -0
- package/dist/esm/utility/api/controller/get-list/index.d.ts +2 -0
- package/dist/esm/utility/api/controller/get-list/transform-filter.utility.d.ts +3 -0
- package/dist/esm/utility/api/controller/get-list/transform-operation.utility.d.ts +3 -0
- package/dist/esm/utility/api/controller/get-method-name.utility.d.ts +2 -0
- package/dist/esm/utility/api/controller/get-primary-column.utility.d.ts +3 -0
- package/dist/esm/utility/api/controller/handle-request-relations.utility.d.ts +4 -0
- package/dist/esm/utility/api/controller/index.d.ts +9 -0
- package/dist/esm/utility/api/controller/transform-data.utility.d.ts +4 -0
- package/dist/esm/utility/api/controller/validate-request.utility.d.ts +3 -0
- package/dist/esm/utility/api/controller/write-dto-swagger.utility.d.ts +4 -0
- package/dist/esm/utility/api/controller/write-method.utility.d.ts +3 -0
- package/dist/esm/utility/api/filter-order-by-from-entity.utility.d.ts +6 -0
- package/dist/esm/utility/api/index.d.ts +2 -0
- package/dist/esm/utility/camel-case-string.utility.d.ts +1 -0
- package/dist/esm/utility/capitalize-string.utility.d.ts +1 -0
- package/dist/esm/utility/dto/analize.utility.d.ts +2 -0
- package/dist/esm/utility/dto/build-decorator.utility.d.ts +6 -0
- package/dist/esm/utility/dto/generate-decorator.utility.d.ts +4 -0
- package/dist/esm/utility/dto/generate-exception.utility.d.ts +2 -0
- package/dist/esm/utility/dto/generate-filter-decorator.utility.d.ts +3 -0
- package/dist/esm/utility/dto/generate-get-list-response.utility.d.ts +4 -0
- package/dist/esm/utility/dto/generate-relation-response.utility.d.ts +4 -0
- package/dist/esm/utility/dto/generate.utility.d.ts +6 -0
- package/dist/esm/utility/dto/get-decorator-config.utility.d.ts +3 -0
- package/dist/esm/utility/dto/get-get-list-query-base-class.utility.d.ts +5 -0
- package/dist/esm/utility/dto/handle-date-property.utility.d.ts +5 -0
- package/dist/esm/utility/dto/index.d.ts +12 -0
- package/dist/esm/utility/dto/is-property-exposed-for-guard.utility.d.ts +5 -0
- package/dist/esm/utility/dto/is-property-should-be-marked.utility.d.ts +5 -0
- package/dist/esm/utility/dto/is-should-be-generated.utility.d.ts +2 -0
- package/dist/esm/utility/dto/validate-property-config.utility.d.ts +2 -0
- package/dist/esm/utility/error-exception.utility.d.ts +1 -0
- package/dist/esm/utility/error-string.utility.d.ts +2 -0
- package/dist/esm/utility/generate-entity-information.utility.d.ts +2 -0
- package/dist/esm/utility/get-entity-columns.utility.d.ts +2 -0
- package/dist/esm/utility/index.d.ts +9 -0
- package/dist/esm/utility/is-error-of-type.utility.d.ts +2 -0
- package/dist/esm/validator/all-or-none-of-listed-properties.validator.d.ts +5 -0
- package/dist/esm/validator/has-at-least-one-and-only-one-of-listed-properties.validator.d.ts +5 -0
- package/dist/esm/validator/has-at-least-one-of-listed-properties.validator.d.ts +5 -0
- package/dist/esm/validator/has-at-least-one-property.validator.d.ts +5 -0
- package/dist/esm/validator/has-paired-custom-suffixes-fields.validator.d.ts +7 -0
- package/dist/esm/validator/index.d.ts +6 -0
- package/dist/esm/validator/is-regular-expression.validator.d.ts +4 -0
- package/dist/esm/validator/only-one-of-listed-properties.validator.d.ts +5 -0
- package/package.json +22 -14
- package/dist/package.json +0 -97
package/README.md
CHANGED
|
@@ -1,341 +1,456 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://6jft62zmy9nx2oea.public.blob.vercel-storage.com/nestjs-crud-automator-HhXThTDhKyqznMLCgdmWhsPa287fIi.png" width="500" alt="project-logo">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
<h1 align="center">🚀 NestJS-Crud-Automator</h1>
|
|
6
|
+
<p align="center"><em>A powerful library for automating CRUD operations in NestJS applications</em></p>
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a aria-label="ElsiKora logo" href="https://elsikora.com">
|
|
10
|
+
<img src="https://img.shields.io/badge/MADE%20BY%20ElsiKora-333333.svg?style=for-the-badge" alt="ElsiKora">
|
|
11
|
+
</a> <img src="https://img.shields.io/badge/version-blue.svg?style=for-the-badge&logo=npm&logoColor=white" alt="version"> <img src="https://img.shields.io/badge/typescript-blue.svg?style=for-the-badge&logo=typescript&logoColor=white" alt="typescript"> <img src="https://img.shields.io/badge/nestjs-red.svg?style=for-the-badge&logo=nestjs&logoColor=white" alt="nestjs"> <img src="https://img.shields.io/badge/typeorm-orange.svg?style=for-the-badge&logo=database&logoColor=white" alt="typeorm"> <img src="https://img.shields.io/badge/license-green.svg?style=for-the-badge&logo=license&logoColor=white" alt="license">
|
|
12
|
+
</p>
|
|
6
13
|
|
|
7
|
-
## Table of Contents
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
- [
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
13
|
-
- [
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
- [Auto DTO Configuration](#auto-dto-configuration)
|
|
15
|
+
## 📚 Table of Contents
|
|
16
|
+
- [Description](#-description)
|
|
17
|
+
- [Features](#-features)
|
|
18
|
+
- [Installation](#-installation)
|
|
19
|
+
- [Usage](#-usage)
|
|
20
|
+
- [Roadmap](#-roadmap)
|
|
21
|
+
- [FAQ](#-faq)
|
|
22
|
+
- [License](#-license)
|
|
18
23
|
|
|
19
|
-
## Basic Configuration Structure
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
## 📖 Description
|
|
26
|
+
NestJS-Crud-Automator is a comprehensive library designed to reduce boilerplate code and accelerate development by automatically generating fully-featured CRUD operations for NestJS applications. By leveraging TypeORM entities and built-in decorators, developers can quickly scaffold controllers and services with standardized endpoints for creating, reading, updating, and deleting resources. The library provides rich validation, sophisticated request/response transformation, automatic Swagger documentation, and supports complex filtering operations for list endpoints. NestJS-Crud-Automator is ideal for enterprise applications, microservices architectures, and any project where consistent API design and reduced development time are priorities.
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
## 🚀 Features
|
|
29
|
+
- ✨ **Zero-configuration CRUD controllers with automatic Swagger documentation**
|
|
30
|
+
- ✨ **Smart DTO generation for requests, responses, and query parameters**
|
|
31
|
+
- ✨ **Advanced filtering system with support for complex query operations**
|
|
32
|
+
- ✨ **Request transformation and validation pipeline**
|
|
33
|
+
- ✨ **Authentication and authorization integration**
|
|
34
|
+
- ✨ **Automatic relations handling with configurable loading strategies**
|
|
35
|
+
- ✨ **Comprehensive TypeScript support with full type safety**
|
|
36
|
+
- ✨ **Customizable error handling with correlation IDs for tracing**
|
|
37
|
+
- ✨ **Efficient throttling support to prevent API abuse**
|
|
38
|
+
- ✨ **ESM and CommonJS module support**
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
## 🛠 Installation
|
|
41
|
+
```bash
|
|
42
|
+
# Using npm
|
|
43
|
+
npm install @elsikora/nestjs-crud-automator
|
|
35
44
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- `path`: Optional URL path for the controller
|
|
39
|
-
- `routes`: Object containing route configurations
|
|
45
|
+
# Using yarn
|
|
46
|
+
yarn add @elsikora/nestjs-crud-automator
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
# Using pnpm
|
|
49
|
+
pnpm add @elsikora/nestjs-crud-automator
|
|
42
50
|
|
|
43
|
-
|
|
51
|
+
# Using bun
|
|
52
|
+
bun add @elsikora/nestjs-crud-automator
|
|
44
53
|
|
|
45
|
-
- CREATE
|
|
46
|
-
- GET
|
|
47
|
-
- GET_LIST
|
|
48
|
-
- UPDATE
|
|
49
|
-
- PARTIAL_UPDATE
|
|
50
|
-
- DELETE
|
|
51
54
|
|
|
52
|
-
|
|
55
|
+
Ensure you have the required peer dependencies installed:
|
|
53
56
|
|
|
54
|
-
- Authentication settings
|
|
55
|
-
- Request handling
|
|
56
|
-
- Response handling
|
|
57
|
-
- Data transformations
|
|
58
|
-
- Validation rules
|
|
59
57
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
{
|
|
64
|
-
[EApiRouteType.CREATE]: {
|
|
65
|
-
authentication: {...},
|
|
66
|
-
request: {...},
|
|
67
|
-
response: {...}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
58
|
+
npm install @nestjs/common @nestjs/swagger typeorm class-transformer class-validator reflect-metadata
|
|
70
59
|
```
|
|
71
60
|
|
|
72
|
-
##
|
|
61
|
+
## 💡 Usage
|
|
62
|
+
## Basic Usage
|
|
63
|
+
|
|
64
|
+
NestJS-Crud-Automator provides a set of decorators that automate the creation of controllers and services for your entities.
|
|
73
65
|
|
|
74
|
-
|
|
66
|
+
### Entity Definition
|
|
75
67
|
|
|
76
|
-
|
|
77
|
-
- Security strategies
|
|
78
|
-
- Authentication guards
|
|
79
|
-
- Authentication type
|
|
68
|
+
First, define your TypeORM entity with the `ApiPropertyDescribe` decorators to provide metadata for Swagger and validation:
|
|
80
69
|
|
|
81
70
|
```typescript
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
71
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
72
|
+
import { ApiPropertyDescribe } from '@elsikora/nestjs-crud-automator';
|
|
73
|
+
import { EApiPropertyDescribeType, EApiPropertyStringType } from '@elsikora/nestjs-crud-automator';
|
|
74
|
+
|
|
75
|
+
@Entity('users')
|
|
76
|
+
export class User {
|
|
77
|
+
@PrimaryGeneratedColumn('uuid')
|
|
78
|
+
@ApiPropertyDescribe({
|
|
79
|
+
type: EApiPropertyDescribeType.UUID,
|
|
80
|
+
description: 'Unique identifier'
|
|
81
|
+
})
|
|
82
|
+
id: string;
|
|
83
|
+
|
|
84
|
+
@Column()
|
|
85
|
+
@ApiPropertyDescribe({
|
|
86
|
+
type: EApiPropertyDescribeType.STRING,
|
|
87
|
+
description: 'User name',
|
|
88
|
+
format: EApiPropertyStringType.STRING,
|
|
89
|
+
minLength: 3,
|
|
90
|
+
maxLength: 50,
|
|
91
|
+
pattern: '/^[a-zA-Z0-9_-]+$/',
|
|
92
|
+
exampleValue: 'john_doe'
|
|
93
|
+
})
|
|
94
|
+
username: string;
|
|
95
|
+
|
|
96
|
+
@Column()
|
|
97
|
+
@ApiPropertyDescribe({
|
|
98
|
+
type: EApiPropertyDescribeType.STRING,
|
|
99
|
+
description: 'User email',
|
|
100
|
+
format: EApiPropertyStringType.EMAIL,
|
|
101
|
+
minLength: 5,
|
|
102
|
+
maxLength: 100,
|
|
103
|
+
pattern: '/^[\w-\.]+@([\w-]+\.)+[\w-]{2,}$/',
|
|
104
|
+
exampleValue: 'john@example.com'
|
|
105
|
+
})
|
|
106
|
+
email: string;
|
|
87
107
|
}
|
|
88
108
|
```
|
|
89
109
|
|
|
90
|
-
|
|
110
|
+
### Service Implementation
|
|
111
|
+
|
|
112
|
+
Create a service that extends the base functionality:
|
|
91
113
|
|
|
92
114
|
```typescript
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
115
|
+
import { Injectable } from '@nestjs/common';
|
|
116
|
+
import { InjectRepository } from '@nestjs/typeorm';
|
|
117
|
+
import { Repository } from 'typeorm';
|
|
118
|
+
import { ApiServiceBase, ApiService } from '@elsikora/nestjs-crud-automator';
|
|
119
|
+
import { User } from './user.entity';
|
|
120
|
+
|
|
121
|
+
@Injectable()
|
|
122
|
+
@ApiService({
|
|
123
|
+
entity: User
|
|
124
|
+
})
|
|
125
|
+
export class UserService extends ApiServiceBase<User> {
|
|
126
|
+
constructor(
|
|
127
|
+
@InjectRepository(User)
|
|
128
|
+
public repository: Repository<User>
|
|
129
|
+
) {
|
|
130
|
+
super();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// You can override the default methods or add custom methods
|
|
134
|
+
async findByEmail(email: string): Promise<User | undefined> {
|
|
135
|
+
return this.repository.findOne({
|
|
136
|
+
where: { email }
|
|
137
|
+
});
|
|
138
|
+
}
|
|
98
139
|
}
|
|
99
140
|
```
|
|
100
141
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
Request configuration includes:
|
|
142
|
+
### Controller Implementation
|
|
104
143
|
|
|
105
|
-
|
|
106
|
-
- Data transformation
|
|
107
|
-
- Request validation
|
|
144
|
+
Implement a controller with automatic CRUD endpoints:
|
|
108
145
|
|
|
109
146
|
```typescript
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
147
|
+
import { Controller } from '@nestjs/common';
|
|
148
|
+
import { ApiController } from '@elsikora/nestjs-crud-automator';
|
|
149
|
+
import { User } from './user.entity';
|
|
150
|
+
import { UserService } from './user.service';
|
|
151
|
+
|
|
152
|
+
@ApiController({
|
|
153
|
+
entity: User,
|
|
154
|
+
name: 'Users',
|
|
155
|
+
path: 'users',
|
|
156
|
+
routes: {
|
|
157
|
+
// Configure routes (all enabled by default)
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
@Controller('users')
|
|
161
|
+
export class UserController {
|
|
162
|
+
constructor(public service: UserService) {}
|
|
114
163
|
}
|
|
115
164
|
```
|
|
116
165
|
|
|
117
|
-
|
|
166
|
+
## Advanced Configuration
|
|
118
167
|
|
|
119
|
-
|
|
168
|
+
### Custom Route Configuration
|
|
120
169
|
|
|
121
|
-
|
|
122
|
-
2. **MANUAL**: Manually specify relations to load
|
|
170
|
+
Customize each route with authentication, validation, and transformation:
|
|
123
171
|
|
|
124
172
|
```typescript
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
173
|
+
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
|
|
174
|
+
import { EApiControllerLoadRelationsStrategy, EApiAuthenticationType, EApiDtoType, EApiRouteType } from '@elsikora/nestjs-crud-automator';
|
|
175
|
+
|
|
176
|
+
@ApiController({
|
|
177
|
+
entity: User,
|
|
178
|
+
name: 'Users',
|
|
179
|
+
path: 'users',
|
|
180
|
+
routes: {
|
|
181
|
+
[EApiRouteType.CREATE]: {
|
|
182
|
+
authentication: {
|
|
183
|
+
guard: JwtAuthGuard,
|
|
184
|
+
type: EApiAuthenticationType.USER,
|
|
185
|
+
bearerStrategies: ['jwt']
|
|
186
|
+
},
|
|
187
|
+
request: {
|
|
188
|
+
validators: [
|
|
189
|
+
{
|
|
190
|
+
errorType: EErrorStringAction.VALIDATION_ERROR,
|
|
191
|
+
exception: BadRequestException,
|
|
192
|
+
validationFunction: (body: Partial<User>) => {
|
|
193
|
+
return body.username && body.username.length >= 3;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
],
|
|
197
|
+
transformers: {
|
|
198
|
+
[EApiDtoType.BODY]: [
|
|
199
|
+
{
|
|
200
|
+
key: 'createdAt',
|
|
201
|
+
type: EApiControllerRequestTransformerType.DYNAMIC,
|
|
202
|
+
value: TRANSFORMER_VALUE_DTO_CONSTANT.REQUEST_TIMESTAMP
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
[EApiRouteType.GET_LIST]: {
|
|
209
|
+
request: {
|
|
210
|
+
relations: {
|
|
211
|
+
shouldLoadRelations: true,
|
|
212
|
+
relationsLoadStrategy: EApiControllerLoadRelationsStrategy.AUTO,
|
|
213
|
+
servicesLoadStrategy: EApiControllerLoadRelationsStrategy.AUTO
|
|
214
|
+
}
|
|
215
|
+
}
|
|
132
216
|
}
|
|
133
|
-
}
|
|
217
|
+
}
|
|
218
|
+
})
|
|
134
219
|
```
|
|
135
220
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
Response configuration allows you to:
|
|
221
|
+
### Working with Relations
|
|
139
222
|
|
|
140
|
-
|
|
141
|
-
- Transform response data
|
|
223
|
+
Configure automatic loading of relations:
|
|
142
224
|
|
|
143
225
|
```typescript
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
226
|
+
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToMany } from 'typeorm';
|
|
227
|
+
import { ApiPropertyDescribe } from '@elsikora/nestjs-crud-automator';
|
|
228
|
+
import { EApiPropertyDescribeType } from '@elsikora/nestjs-crud-automator';
|
|
229
|
+
|
|
230
|
+
@Entity('posts')
|
|
231
|
+
export class Post {
|
|
232
|
+
@PrimaryGeneratedColumn('uuid')
|
|
233
|
+
@ApiPropertyDescribe({
|
|
234
|
+
type: EApiPropertyDescribeType.UUID,
|
|
235
|
+
description: 'Post ID'
|
|
236
|
+
})
|
|
237
|
+
id: string;
|
|
238
|
+
|
|
239
|
+
@Column()
|
|
240
|
+
@ApiPropertyDescribe({
|
|
241
|
+
type: EApiPropertyDescribeType.STRING,
|
|
242
|
+
// configuration...
|
|
243
|
+
})
|
|
244
|
+
title: string;
|
|
245
|
+
|
|
246
|
+
@ManyToOne(() => User)
|
|
247
|
+
@ApiPropertyDescribe({
|
|
248
|
+
type: EApiPropertyDescribeType.RELATION,
|
|
249
|
+
description: 'Post author'
|
|
250
|
+
})
|
|
251
|
+
author: User;
|
|
147
252
|
}
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
Example:
|
|
151
253
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
254
|
+
// In controller:
|
|
255
|
+
@ApiController({
|
|
256
|
+
entity: Post,
|
|
257
|
+
name: 'Posts',
|
|
258
|
+
path: 'posts',
|
|
259
|
+
routes: {
|
|
260
|
+
[EApiRouteType.GET]: {
|
|
261
|
+
request: {
|
|
262
|
+
relations: {
|
|
263
|
+
shouldLoadRelations: true,
|
|
264
|
+
relationsLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
|
|
265
|
+
relationsToLoad: ['author'],
|
|
266
|
+
servicesLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
|
|
267
|
+
relationsServices: {
|
|
268
|
+
author: 'userService'
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
166
272
|
}
|
|
273
|
+
}
|
|
274
|
+
})
|
|
275
|
+
export class PostController {
|
|
276
|
+
constructor(
|
|
277
|
+
public service: PostService,
|
|
278
|
+
public userService: UserService
|
|
279
|
+
) {}
|
|
167
280
|
}
|
|
168
281
|
```
|
|
169
282
|
|
|
170
|
-
##
|
|
283
|
+
## Advanced Filtering
|
|
171
284
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
- BODY
|
|
175
|
-
- QUERY
|
|
176
|
-
- REQUEST
|
|
177
|
-
- RESPONSE
|
|
178
|
-
|
|
179
|
-
Two types of transformers are available:
|
|
180
|
-
|
|
181
|
-
1. **DYNAMIC**: Uses predefined constants
|
|
182
|
-
2. **STATIC**: Uses static values
|
|
285
|
+
The GET_LIST endpoint supports sophisticated filtering operations:
|
|
183
286
|
|
|
184
287
|
```typescript
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
} & (
|
|
188
|
-
| {
|
|
189
|
-
type: EApiControllerRequestTransformerType.DYNAMIC;
|
|
190
|
-
value: (typeof TRANSFORMER_VALUE_DTO_CONSTANT)[keyof typeof TRANSFORMER_VALUE_DTO_CONSTANT];
|
|
191
|
-
}
|
|
192
|
-
| {
|
|
193
|
-
type: EApiControllerRequestTransformerType.STATIC;
|
|
194
|
-
value: string;
|
|
195
|
-
}
|
|
196
|
-
);
|
|
288
|
+
// Request example for filtering
|
|
289
|
+
// GET /users?page=1&limit=10&orderBy=createdAt&orderDirection=desc&username[operator]=cont&username[value]=john&createdAt[operator]=between&createdAt[values]=["2023-01-01","2023-12-31"]
|
|
197
290
|
```
|
|
198
291
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
292
|
+
Supported operations include:
|
|
293
|
+
- `eq` - Equal
|
|
294
|
+
- `ne` - Not equal
|
|
295
|
+
- `gt` - Greater than
|
|
296
|
+
- `gte` - Greater than or equal
|
|
297
|
+
- `lt` - Less than
|
|
298
|
+
- `lte` - Less than or equal
|
|
299
|
+
- `in` - In array
|
|
300
|
+
- `notin` - Not in array
|
|
301
|
+
- `cont` - Contains (for strings)
|
|
302
|
+
- `starts` - Starts with
|
|
303
|
+
- `ends` - Ends with
|
|
304
|
+
- `isnull` - Is null
|
|
305
|
+
- `notnull` - Is not null
|
|
306
|
+
- `between` - Between two values
|
|
307
|
+
|
|
308
|
+
## Custom DTOs and Validation
|
|
309
|
+
|
|
310
|
+
You can provide custom DTOs instead of auto-generated ones:
|
|
206
311
|
|
|
207
312
|
```typescript
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
313
|
+
import { IsEmail, IsString, MinLength } from 'class-validator';
|
|
314
|
+
import { ApiProperty } from '@nestjs/swagger';
|
|
315
|
+
|
|
316
|
+
export class CreateUserDto {
|
|
317
|
+
@ApiProperty()
|
|
318
|
+
@IsString()
|
|
319
|
+
@MinLength(3)
|
|
320
|
+
username: string;
|
|
321
|
+
|
|
322
|
+
@ApiProperty()
|
|
323
|
+
@IsEmail()
|
|
324
|
+
email: string;
|
|
212
325
|
}
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
Example:
|
|
216
326
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
327
|
+
// In controller:
|
|
328
|
+
@ApiController({
|
|
329
|
+
entity: User,
|
|
330
|
+
name: 'Users',
|
|
331
|
+
path: 'users',
|
|
332
|
+
routes: {
|
|
333
|
+
[EApiRouteType.CREATE]: {
|
|
334
|
+
dto: {
|
|
335
|
+
body: CreateUserDto,
|
|
336
|
+
response: UserResponseDto
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
})
|
|
225
341
|
```
|
|
226
342
|
|
|
227
|
-
##
|
|
343
|
+
## Throttling and Rate Limiting
|
|
228
344
|
|
|
229
|
-
|
|
345
|
+
Implement rate limiting on endpoints:
|
|
230
346
|
|
|
231
347
|
```typescript
|
|
232
|
-
|
|
233
|
-
[key in EApiDtoType]?: IApiControllerPropertiesRouteAutoDtoConfig;
|
|
234
|
-
};
|
|
235
|
-
```
|
|
348
|
+
import { EApiRouteType } from '@elsikora/nestjs-crud-automator';
|
|
236
349
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
350
|
+
@ApiController({
|
|
351
|
+
entity: User,
|
|
352
|
+
name: 'Users',
|
|
353
|
+
path: 'users',
|
|
354
|
+
routes: {
|
|
355
|
+
[EApiRouteType.CREATE]: {
|
|
356
|
+
// Apply method-level throttling
|
|
357
|
+
decorators: [
|
|
358
|
+
ApiMethod({
|
|
359
|
+
throttler: {
|
|
360
|
+
limit: 5,
|
|
361
|
+
ttl: 60000 // 1 minute
|
|
362
|
+
}
|
|
363
|
+
})
|
|
364
|
+
]
|
|
248
365
|
}
|
|
249
|
-
}
|
|
366
|
+
}
|
|
367
|
+
})
|
|
250
368
|
```
|
|
251
369
|
|
|
252
|
-
##
|
|
370
|
+
## Correlation ID for Request Tracing
|
|
253
371
|
|
|
254
|
-
|
|
372
|
+
Use the built-in correlation ID interceptor for request tracing:
|
|
255
373
|
|
|
256
374
|
```typescript
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
request: {
|
|
265
|
-
relations: {
|
|
266
|
-
loadRelations: true,
|
|
267
|
-
relationsLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL,
|
|
268
|
-
relationsServices: {
|
|
269
|
-
bank: "bankService"
|
|
270
|
-
},
|
|
271
|
-
relationsToLoad: ["bank"],
|
|
272
|
-
servicesLoadStrategy: EApiControllerLoadRelationsStrategy.MANUAL
|
|
273
|
-
},
|
|
274
|
-
transformers: {
|
|
275
|
-
[EApiDtoType.BODY]: [
|
|
276
|
-
{
|
|
277
|
-
key: "user",
|
|
278
|
-
type: EApiControllerRequestTransformerType.DYNAMIC,
|
|
279
|
-
value: TRANSFORMER_VALUE_DTO_CONSTANT.AUTHORIZED_ENTITY
|
|
280
|
-
}
|
|
281
|
-
]
|
|
282
|
-
},
|
|
283
|
-
validators: [
|
|
284
|
-
{
|
|
285
|
-
errorType: EErrorStringAction.ADDRESS_NOT_MATCH_PATTERN,
|
|
286
|
-
exception: BadRequestException,
|
|
287
|
-
validationFunction: (account: Partial<Account>): boolean =>
|
|
288
|
-
(account.id?.includes("7") ? account.id.includes("AAAA") : true)
|
|
289
|
-
}
|
|
290
|
-
]
|
|
375
|
+
import { CorrelationIDResponseBodyInterceptor } from '@elsikora/nestjs-crud-automator';
|
|
376
|
+
|
|
377
|
+
@Module({
|
|
378
|
+
providers: [
|
|
379
|
+
{
|
|
380
|
+
provide: APP_INTERCEPTOR,
|
|
381
|
+
useClass: CorrelationIDResponseBodyInterceptor,
|
|
291
382
|
},
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
currency: true
|
|
296
|
-
},
|
|
297
|
-
transformers: {
|
|
298
|
-
[EApiDtoType.RESPONSE]: [
|
|
299
|
-
{
|
|
300
|
-
key: "user",
|
|
301
|
-
type: EApiControllerRequestTransformerType.DYNAMIC,
|
|
302
|
-
value: TRANSFORMER_VALUE_DTO_CONSTANT.REQUEST_IP
|
|
303
|
-
}
|
|
304
|
-
]
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
}
|
|
383
|
+
],
|
|
384
|
+
})
|
|
385
|
+
export class AppModule {}
|
|
308
386
|
```
|
|
309
387
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
388
|
+
This will ensure all responses and errors include a correlation ID for tracing through logs.
|
|
389
|
+
|
|
390
|
+
## 🛣 Roadmap
|
|
391
|
+
| Task / Feature | Status |
|
|
392
|
+
|---------------|--------|
|
|
393
|
+
| ## Future Development | 🚧 In Progress |
|
|
394
|
+
| - GraphQL support with automatic query and mutation generation | 🚧 In Progress |
|
|
395
|
+
| - Integration with NestJS caching mechanisms | 🚧 In Progress |
|
|
396
|
+
| - Extension to support NoSQL databases beyond TypeORM | 🚧 In Progress |
|
|
397
|
+
| - Event sourcing support for audit logging | 🚧 In Progress |
|
|
398
|
+
| - Expanded filtering capabilities with full-text search | 🚧 In Progress |
|
|
399
|
+
| - Integration with file upload handling | 🚧 In Progress |
|
|
400
|
+
| - Custom response serialization strategies | 🚧 In Progress |
|
|
401
|
+
| - Enhanced performance optimization options | 🚧 In Progress |
|
|
402
|
+
| - More comprehensive test utilities | 🚧 In Progress |
|
|
403
|
+
| - Custom pagination strategies | 🚧 In Progress |
|
|
404
|
+
| (done) Zero-configuration CRUD controllers with automatic Swagger documentation | 🚧 In Progress |
|
|
405
|
+
| (done) Smart DTO generation for requests, responses, and query parameters | 🚧 In Progress |
|
|
406
|
+
| (done) Advanced filtering system with support for complex query operations | 🚧 In Progress |
|
|
407
|
+
|
|
408
|
+
## ❓ FAQ
|
|
409
|
+
## Frequently Asked Questions
|
|
410
|
+
|
|
411
|
+
### Does this library work with NestJS microservices?
|
|
412
|
+
Yes, NestJS-Crud-Automator is designed to work with both monolithic NestJS applications and microservices architectures.
|
|
413
|
+
|
|
414
|
+
### How does performance compare to manually written controllers?
|
|
415
|
+
The library is optimized for performance and should have minimal overhead compared to manually written controllers. In many cases, the standardized patterns may even lead to better performance through consistent implementations.
|
|
416
|
+
|
|
417
|
+
### Can I use this with custom database schemas?
|
|
418
|
+
Yes, as long as you use TypeORM, the library works with any valid entity configuration, including custom database schemas.
|
|
419
|
+
|
|
420
|
+
### How can I extend the automatically generated endpoints?
|
|
421
|
+
You can always add additional methods to your controller that handle special cases or extend the functionality of the auto-generated endpoints.
|
|
422
|
+
|
|
423
|
+
### Is there a way to disable certain CRUD operations?
|
|
424
|
+
Yes, you can disable any operation by setting `isEnabled: false` in the route configuration object.
|
|
425
|
+
|
|
426
|
+
### How does this library handle transactions?
|
|
427
|
+
The library uses TypeORM's underlying transaction mechanisms. You can implement transaction handling in your custom service methods.
|
|
428
|
+
|
|
429
|
+
### Does this work with MongoDB?
|
|
430
|
+
Yes, as long as you use TypeORM with MongoDB, the library should work properly with MongoDB entities.
|
|
431
|
+
|
|
432
|
+
### How can I migrate from the base NestJS CRUD module?
|
|
433
|
+
The library provides a significantly different API from NestJS's CRUD module, so migration will require changing your decorators and service implementations. However, the entity structure can remain largely the same.
|
|
434
|
+
|
|
435
|
+
## 🔒 License
|
|
436
|
+
This project is licensed under **MIT License
|
|
437
|
+
|
|
438
|
+
Copyright (c) 2025 ElsiKora
|
|
439
|
+
|
|
440
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
441
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
442
|
+
in the Software without restriction, including without limitation the rights
|
|
443
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
444
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
445
|
+
furnished to do so, subject to the following conditions:
|
|
446
|
+
|
|
447
|
+
The above copyright notice and this permission notice shall be included in all
|
|
448
|
+
copies or substantial portions of the Software.
|
|
449
|
+
|
|
450
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
451
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
452
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
453
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
454
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
455
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
456
|
+
SOFTWARE.**.
|