gitextract_8fwk1emt/ ├── .dependency-cruiser.js ├── .eslintrc.js ├── .gitignore ├── .jestrc.json ├── .prettierrc ├── .vscode/ │ ├── ltex.dictionary.en-US.txt │ └── settings.json ├── LICENSE ├── README.md ├── database/ │ ├── getMigrator.ts │ ├── migrate.ts │ ├── migrations/ │ │ ├── 2022.10.07T13.49.19.users.sql │ │ ├── 2022.10.07T13.49.54.wallets.sql │ │ └── down/ │ │ ├── 2022.10.07T13.49.19.users.sql │ │ └── 2022.10.07T13.49.54.wallets.sql │ ├── seed.ts │ └── seeds/ │ ├── users.seed.sql │ └── wallets.seed.sql ├── docker/ │ └── docker-compose.yml ├── jest-e2e.json ├── nest-cli.json ├── package.json ├── src/ │ ├── app.module.ts │ ├── configs/ │ │ ├── app.routes.ts │ │ └── database.config.ts │ ├── libs/ │ │ ├── api/ │ │ │ ├── api-error.response.ts │ │ │ ├── graphql/ │ │ │ │ └── paginated.graphql-response.base.ts │ │ │ ├── id.response.dto.ts │ │ │ ├── paginated-query.request.dto.ts │ │ │ ├── paginated.response.base.ts │ │ │ └── response.base.ts │ │ ├── application/ │ │ │ ├── context/ │ │ │ │ ├── AppRequestContext.ts │ │ │ │ └── ContextInterceptor.ts │ │ │ └── interceptors/ │ │ │ └── exception.interceptor.ts │ │ ├── db/ │ │ │ └── sql-repository.base.ts │ │ ├── ddd/ │ │ │ ├── aggregate-root.base.ts │ │ │ ├── command.base.ts │ │ │ ├── domain-event.base.ts │ │ │ ├── entity.base.ts │ │ │ ├── index.ts │ │ │ ├── mapper.interface.ts │ │ │ ├── query.base.ts │ │ │ ├── repository.port.ts │ │ │ └── value-object.base.ts │ │ ├── decorators/ │ │ │ ├── final.decorator.ts │ │ │ ├── frozen.decorator.ts │ │ │ └── index.ts │ │ ├── exceptions/ │ │ │ ├── exception.base.ts │ │ │ ├── exception.codes.ts │ │ │ ├── exceptions.ts │ │ │ └── index.ts │ │ ├── guard.ts │ │ ├── ports/ │ │ │ └── logger.port.ts │ │ ├── types/ │ │ │ ├── deep-partial.type.ts │ │ │ ├── index.ts │ │ │ ├── mutable.type.ts │ │ │ ├── non-function-properties.type.ts │ │ │ ├── object-literal.type.ts │ │ │ └── require-one.type.ts │ │ └── utils/ │ │ ├── convert-props-to-object.util.ts │ │ ├── dotenv.ts │ │ └── index.ts │ ├── main.ts │ └── modules/ │ ├── user/ │ │ ├── commands/ │ │ │ ├── create-user/ │ │ │ │ ├── create-user.cli.controller.ts │ │ │ │ ├── create-user.command.ts │ │ │ │ ├── create-user.http.controller.ts │ │ │ │ ├── create-user.message.controller.ts │ │ │ │ ├── create-user.request.dto.ts │ │ │ │ ├── create-user.service.ts │ │ │ │ └── graphql-example/ │ │ │ │ ├── create-user.graphql-resolver.ts │ │ │ │ └── dtos/ │ │ │ │ ├── create-user.gql-request.dto.ts │ │ │ │ └── id.gql-response.dto.ts │ │ │ └── delete-user/ │ │ │ ├── delete-user.http-controller.ts │ │ │ └── delete-user.service.ts │ │ ├── database/ │ │ │ ├── user.repository.port.ts │ │ │ └── user.repository.ts │ │ ├── domain/ │ │ │ ├── events/ │ │ │ │ ├── user-address-updated.domain-event.ts │ │ │ │ ├── user-created.domain-event.ts │ │ │ │ ├── user-deleted.domain-event.ts │ │ │ │ └── user-role-changed.domain-event.ts │ │ │ ├── user.entity.ts │ │ │ ├── user.errors.ts │ │ │ ├── user.types.ts │ │ │ └── value-objects/ │ │ │ └── address.value-object.ts │ │ ├── dtos/ │ │ │ ├── graphql/ │ │ │ │ ├── user.graphql-response.dto.ts │ │ │ │ └── user.paginated-gql-response.dto.ts │ │ │ ├── user.paginated.response.dto.ts │ │ │ └── user.response.dto.ts │ │ ├── queries/ │ │ │ └── find-users/ │ │ │ ├── find-users.graphql-resolver.ts │ │ │ ├── find-users.http.controller.ts │ │ │ ├── find-users.query-handler.ts │ │ │ └── find-users.request.dto.ts │ │ ├── user.di-tokens.ts │ │ ├── user.mapper.ts │ │ └── user.module.ts │ └── wallet/ │ ├── application/ │ │ └── event-handlers/ │ │ └── create-wallet-when-user-is-created.domain-event-handler.ts │ ├── database/ │ │ ├── wallet.repository.port.ts │ │ └── wallet.repository.ts │ ├── domain/ │ │ ├── events/ │ │ │ └── wallet-created.domain-event.ts │ │ ├── wallet.entity.ts │ │ └── wallet.errors.ts │ ├── wallet.di-tokens.ts │ ├── wallet.mapper.ts │ └── wallet.module.ts ├── tests/ │ ├── setup/ │ │ ├── jestGlobalSetup.ts │ │ └── jestSetupAfterEnv.ts │ ├── shared/ │ │ └── shared-steps.ts │ ├── test-utils/ │ │ ├── ApiClient.ts │ │ ├── TestContext.ts │ │ ├── mocks/ │ │ │ └── generic-model-props.mock.ts │ │ └── snapshot-base-props.ts │ └── user/ │ ├── create-user/ │ │ ├── create-user.artillery.yaml │ │ ├── create-user.e2e-spec.ts │ │ └── create-user.feature │ ├── delete-user/ │ │ ├── delete-user.e2e-spec.ts │ │ └── delete-user.feature │ └── user-shared-steps.ts ├── tsconfig.build.json └── tsconfig.json