guide openapi generator - wwwsolutions/nestjs-starter-kit GitHub Wiki
Example from Rest-Mongoose integration
Auto-generate angular types
npm i -D @openapitools/openapi-generator-cli
npm i -D @nrwl/angular
-
libs/shared/api
DOMAIN-
src
-
lib
- (auto-generated content by openapi-generator)
- index.ts
-
-
// openapitools.json
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "5.2.0"
}
}
// openapiconfig.json
{
"serviceSuffix": "ApiService",
"ngVersion": "12.0.0"
}
Generate shared Angular library to hold auto-generated types
nx generate @nrwl/angular:library --name=api --directory=shared --buildable --standaloneConfig --strict --tags=type:data-access,scope:shared --no-interactive
// libs/shared/api/src/lib/shared-api.module.ts
// libs/shared/api/src/index.ts
export * from './lib';
Generate demo angular app
nx generate @nrwl/angular:application --name=client-angular --style=css --backendProject=api --e2eTestRunner=none --prefix=demo --skipTests --standaloneConfig --tags=scope:app --no-interactive --dry-run
{
"/api": {
"target": "http://localhost:3000/api",
"secure": false
}
}
node_modules
**/generated
libs/api/data-access/prisma/src/lib
libs/api/data-access/models/src/lib
libs/shared/data-access-api/src/lib
// libs/api/domain/article/feature/src/index.ts
Contains domain's data layer and exposes:
- xxxxxxxxxxxxx
- xxxxxxxxxxxxx
- xxxxxxxxxxxxx
nx generate @nrwl/nest:library --name=data-access --directory=api/domain/article --buildable --standaloneConfig --strict --tags=type:data-access,scope:api --no-interactive
// libs/api/domain/article/data-access/src/lib/api-domain-article-data-access.module.ts
// libs/api/domain/article/data-access/src/lib/article.service.ts
// libs/api/domain/article/data-access/src/lib/models/xxx.model.ts
// libs/api/domain/article/data-access/src/index.ts
Add feature module name to the domains array.
// libs/api/core/src/lib/registrations/domains.registration.ts
import { ApiDomainArticleFeatureModule } from '@wwwsolutions/api/domain/article/feature';
export const domains: NestImportsType = [ApiDomainArticleFeatureModule];
Utilize guards.
// libs/api/domain/users/feature/src/lib/users.resolver.ts