gitextract_v0ktoj1e/ ├── .gitignore ├── .npmrc ├── LICENSE ├── README.md ├── apps/ │ └── api/ │ ├── DATABASE.md │ ├── REDIS_USAGE.md │ ├── migrations/ │ │ └── 001_create_orders_tables.sql │ ├── nest-cli.json │ ├── package.json │ ├── src/ │ │ ├── app.module.ts │ │ ├── main.ts │ │ ├── modules/ │ │ │ └── order/ │ │ │ ├── application/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── cancel-order/ │ │ │ │ │ │ ├── cancel-order.command.ts │ │ │ │ │ │ ├── cancel-order.dto.ts │ │ │ │ │ │ ├── cancel-order.handler.spec.ts │ │ │ │ │ │ └── cancel-order.handler.ts │ │ │ │ │ ├── confirm-order/ │ │ │ │ │ │ ├── confirm-order.command.ts │ │ │ │ │ │ ├── confirm-order.dto.ts │ │ │ │ │ │ ├── confirm-order.handler.spec.ts │ │ │ │ │ │ └── confirm-order.handler.ts │ │ │ │ │ └── create-order/ │ │ │ │ │ ├── create-order.command.ts │ │ │ │ │ ├── create-order.dto.ts │ │ │ │ │ ├── create-order.handler.spec.ts │ │ │ │ │ └── create-order.handler.ts │ │ │ │ ├── event-handlers/ │ │ │ │ │ ├── order-confirmed.handler.ts │ │ │ │ │ └── order-created.handler.ts │ │ │ │ └── queries/ │ │ │ │ ├── get-order/ │ │ │ │ │ ├── get-order.handler.spec.ts │ │ │ │ │ ├── get-order.handler.ts │ │ │ │ │ ├── get-order.query.ts │ │ │ │ │ └── order.response.dto.ts │ │ │ │ └── list-orders/ │ │ │ │ ├── list-orders.handler.spec.ts │ │ │ │ ├── list-orders.handler.ts │ │ │ │ ├── list-orders.query.ts │ │ │ │ └── order-list.response.dto.ts │ │ │ ├── domain/ │ │ │ │ ├── entities/ │ │ │ │ │ ├── order-item.entity.spec.ts │ │ │ │ │ ├── order-item.entity.ts │ │ │ │ │ ├── order.entity.spec.ts │ │ │ │ │ └── order.entity.ts │ │ │ │ ├── events/ │ │ │ │ │ ├── order-cancelled.event.ts │ │ │ │ │ ├── order-confirmed.event.ts │ │ │ │ │ └── order-created.event.ts │ │ │ │ ├── exceptions/ │ │ │ │ │ ├── invalid-order-state.exception.ts │ │ │ │ │ └── order-not-found.exception.ts │ │ │ │ ├── repositories/ │ │ │ │ │ └── order.repository.interface.ts │ │ │ │ ├── services/ │ │ │ │ │ ├── order-pricing.service.spec.ts │ │ │ │ │ └── order-pricing.service.ts │ │ │ │ └── value-objects/ │ │ │ │ ├── money.vo.spec.ts │ │ │ │ ├── money.vo.ts │ │ │ │ ├── order-id.vo.spec.ts │ │ │ │ ├── order-id.vo.ts │ │ │ │ ├── order-status.vo.spec.ts │ │ │ │ ├── order-status.vo.ts │ │ │ │ ├── quantity.vo.spec.ts │ │ │ │ └── quantity.vo.ts │ │ │ ├── infrastructure/ │ │ │ │ ├── cache/ │ │ │ │ │ └── order-cache.service.ts │ │ │ │ └── persistence/ │ │ │ │ └── kysely-order.repository.ts │ │ │ ├── order.module.ts │ │ │ └── presentation/ │ │ │ └── order.controller.ts │ │ └── shared/ │ │ ├── api-response/ │ │ │ ├── api-response.dto.ts │ │ │ ├── api-response.interceptor.ts │ │ │ ├── api-response.service.ts │ │ │ └── index.ts │ │ ├── api-versioning/ │ │ │ ├── api-versioning.decorator.ts │ │ │ ├── api-versioning.interceptor.ts │ │ │ └── index.ts │ │ ├── application/ │ │ │ ├── dto.base.ts │ │ │ ├── query.interface.ts │ │ │ └── use-case.interface.ts │ │ ├── audit/ │ │ │ ├── audit.decorator.ts │ │ │ ├── audit.interceptor.ts │ │ │ ├── audit.service.ts │ │ │ └── index.ts │ │ ├── auth/ │ │ │ ├── auth.module.ts │ │ │ ├── decorators/ │ │ │ │ ├── current-user.decorator.ts │ │ │ │ └── index.ts │ │ │ ├── dto/ │ │ │ │ ├── auth.dto.ts │ │ │ │ └── index.ts │ │ │ ├── guards/ │ │ │ │ ├── index.ts │ │ │ │ ├── jwt-auth.guard.ts │ │ │ │ ├── permissions.guard.ts │ │ │ │ └── roles.guard.ts │ │ │ ├── index.ts │ │ │ ├── jwt/ │ │ │ │ ├── index.ts │ │ │ │ ├── jwt.service.ts │ │ │ │ └── jwt.types.ts │ │ │ └── rbac/ │ │ │ ├── index.ts │ │ │ └── rbac.service.ts │ │ ├── base/ │ │ │ ├── base.entity.ts │ │ │ ├── base.service.ts │ │ │ ├── index.ts │ │ │ └── pagination.dto.ts │ │ ├── cache/ │ │ │ ├── cache.decorator.ts │ │ │ ├── cache.interceptor.ts │ │ │ ├── cache.service.ts │ │ │ └── index.ts │ │ ├── circuit-breaker/ │ │ │ ├── circuit-breaker.decorator.ts │ │ │ ├── circuit-breaker.module.ts │ │ │ ├── circuit-breaker.service.ts │ │ │ └── index.ts │ │ ├── database/ │ │ │ ├── database.module.ts │ │ │ ├── database.types.ts │ │ │ └── index.ts │ │ ├── domain/ │ │ │ ├── aggregate-root.ts │ │ │ ├── domain-event-publisher.ts │ │ │ ├── domain-event.ts │ │ │ ├── entity.ts │ │ │ ├── index.ts │ │ │ └── value-object.ts │ │ ├── errors/ │ │ │ ├── business.exception.ts │ │ │ ├── error-codes.ts │ │ │ ├── error.filter.ts │ │ │ └── index.ts │ │ ├── feature-flags/ │ │ │ ├── feature-flags.decorator.ts │ │ │ ├── feature-flags.guard.ts │ │ │ ├── feature-flags.service.ts │ │ │ └── index.ts │ │ ├── file-upload/ │ │ │ ├── file-upload.decorator.ts │ │ │ ├── file-upload.interceptor.ts │ │ │ ├── file-upload.service.ts │ │ │ └── index.ts │ │ ├── health/ │ │ │ ├── health.controller.ts │ │ │ ├── health.module.ts │ │ │ ├── index.ts │ │ │ └── indicators/ │ │ │ ├── database.indicator.ts │ │ │ ├── nats.indicator.ts │ │ │ ├── redis.indicator.ts │ │ │ └── rustfs.indicator.ts │ │ ├── infrastructure/ │ │ │ ├── messaging/ │ │ │ │ ├── event-bus.interface.ts │ │ │ │ ├── event-bus.service.ts │ │ │ │ └── messaging.interface.ts │ │ │ ├── persistence/ │ │ │ │ ├── repository.interface.ts │ │ │ │ └── unit-of-work.interface.ts │ │ │ └── storage/ │ │ │ └── storage.interface.ts │ │ ├── metrics/ │ │ │ ├── index.ts │ │ │ ├── metrics.controller.ts │ │ │ ├── metrics.interceptor.ts │ │ │ └── metrics.service.ts │ │ ├── openapi/ │ │ │ ├── index.ts │ │ │ ├── openapi-common.dto.ts │ │ │ └── openapi-decorators.ts │ │ ├── presentation/ │ │ │ ├── filters/ │ │ │ │ ├── domain-exception.filter.ts │ │ │ │ └── http-exception.filter.ts │ │ │ └── interceptors/ │ │ │ └── logging.interceptor.ts │ │ ├── rate-limiting/ │ │ │ ├── index.ts │ │ │ ├── rate-limiting.decorator.ts │ │ │ ├── rate-limiting.guard.ts │ │ │ └── rate-limiting.service.ts │ │ ├── redis/ │ │ │ ├── index.ts │ │ │ └── redis.module.ts │ │ ├── retry/ │ │ │ ├── index.ts │ │ │ ├── retry.module.ts │ │ │ └── retry.service.ts │ │ ├── serialization/ │ │ │ ├── example.ts │ │ │ ├── index.ts │ │ │ └── serializer.ts │ │ ├── tenant/ │ │ │ ├── index.ts │ │ │ ├── tenant.decorator.ts │ │ │ ├── tenant.guard.ts │ │ │ ├── tenant.interceptor.ts │ │ │ └── tenant.service.ts │ │ ├── testing/ │ │ │ ├── index.ts │ │ │ └── testing.utils.ts │ │ ├── tracking/ │ │ │ ├── index.ts │ │ │ └── tracking.interceptor.ts │ │ ├── transform/ │ │ │ ├── index.ts │ │ │ └── transform.interceptor.ts │ │ ├── utils/ │ │ │ ├── guard.ts │ │ │ └── result.ts │ │ └── validation/ │ │ ├── index.ts │ │ ├── validation-options.ts │ │ └── validation.pipe.ts │ ├── test/ │ │ └── jest-e2e.json │ ├── tsconfig.build.json │ └── tsconfig.json ├── biome.json ├── docker/ │ ├── Dockerfile │ ├── Dockerfile.dev │ ├── docker-compose.prod.yml │ └── docker-compose.yml ├── docs/ │ ├── architecture.md │ └── ddd-patterns.md ├── nest-cli.json ├── package.json ├── packages/ │ ├── bullmq/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── bullmq.module-definition.ts │ │ │ ├── bullmq.module.ts │ │ │ ├── bullmq.service.ts │ │ │ ├── bullmq.types.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── etcd/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── config.service.ts │ │ │ ├── etcd.module.ts │ │ │ ├── etcd.service.ts │ │ │ ├── etcd.types.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── kysely/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── kysely.logger.spec.ts │ │ │ │ └── kysely.module.spec.ts │ │ │ ├── index.ts │ │ │ ├── kysely-module-options.interface.ts │ │ │ ├── kysely.logger.ts │ │ │ ├── kysely.module-definition.ts │ │ │ ├── kysely.module.ts │ │ │ └── kysely.service.ts │ │ └── tsconfig.json │ ├── logger/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── logger.module-definition.ts │ │ │ ├── logger.module.ts │ │ │ ├── logger.service.ts │ │ │ ├── logger.types.ts │ │ │ └── logging.interceptor.ts │ │ └── tsconfig.json │ ├── nats/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── nats.module-definition.ts │ │ │ ├── nats.module.ts │ │ │ ├── nats.service.ts │ │ │ └── nats.types.ts │ │ └── tsconfig.json │ ├── redisson/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── __tests__/ │ │ │ │ ├── redisson.module.spec.ts │ │ │ │ └── types.spec.ts │ │ │ ├── index.ts │ │ │ ├── redisson-module-options.interface.ts │ │ │ ├── redisson.module-definition.ts │ │ │ ├── redisson.module.ts │ │ │ ├── redisson.service.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ └── rustfs/ │ ├── package.json │ ├── src/ │ │ ├── index.ts │ │ ├── rustfs.module-definition.ts │ │ ├── rustfs.module.ts │ │ ├── rustfs.service.ts │ │ └── rustfs.types.ts │ └── tsconfig.json ├── pnpm-workspace.yaml ├── tsconfig.build.json └── tsconfig.json