api integration graphql prisma - wwwsolutions/nestjs-starter-kit GitHub Wiki

GRAPHQL-PRISMA SETUP

Install Dependencies

// graphql
npm i @nestjs/graphql graphql graphql-type-json apollo-server-express class-transformer class-validator
 
// prisma
npm i -D prisma @prisma/client prisma-nestjs-graphql

Build GraphQL-Prisma Integration

api-integration-graphql-prisma

Step-by-step

Generate library
nx generate @nrwl/nest:library --name=graphql-prisma --directory=api/integration --buildable --standaloneConfig --strict --tags=type:integration,scope:api --no-interactive
Register Integration in integration.registration.ts
Add Integration Config in api/core/src/lib/main.ts
// ENABLE/CONFIGURE API INTEGRATION
configureApiIntegrationGraphqlPrisma(app, integration as string);

TODO:

  • configureApiIntegrationGraphqlPrisma(app, integration as string); // main.ts

Build Data Layer

api-data-access-core

// generate lib
nx generate @nrwl/nest:library --name=core --directory=api/data-access --buildable --standaloneConfig --strict --tags=type:data-access,scope:api --no-interactive
Create file libs/api/data-access/models/src/lib/api-data-access-models.module.ts

Create service PrismaDataService

// create file: libs/api/data-access/core/src/lib/prisma-data-service.ts
// create file: libs/api/data-access/core/src/lib/prisma-data-service.spec.ts
// edit file: index.ts

api-data-access-prisma

// generate lib
nx generate @nrwl/nest:library --name=prisma --directory=api/data-access --buildable --standaloneConfig --strict --tags=type:data-access,scope:api --no-interactive

Delete file api-data-access-prisma.module.ts

Encapsulate PrismaClient

// edit file: index.ts

Add Prisma Schema, Migrations and Scripts

// create file: libs/api/data-access/prisma/src/lib/schema/schema.prisma

Add Nx Commands

// prisma commands

api-data-access-models

Here prisma-nestjs-graphql will auto generate types

Step-by-step

Generate library
nx generate @nrwl/nest:library --name=models --directory=api/data-access --buildable --standaloneConfig --strict --tags=type:data-access,scope:api --no-interactive
Delete file libs/api/data-access/models/src/lib/api-data-access-models.module.ts
Edit file libs/api/data-access/models/src/index.ts
export * from './lib/generated';
export * from './lib/variants';
Edit files .gitignore + .eslintignore
# add rule
**/generated

Database Initialization

nx run api-config-docker:compose --mode=development
nx run api-config-docker:up --mode=development

Prisma Initialization

// run migrations
nx run api-data-access-prisma:migrate-reset --env=development

Workflow

⚠️ **GitHub.com Fallback** ⚠️