0.0.13 • Published 1 year ago

@pbuilder/nestjs v0.0.13

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Schematics for NestJS

Overview

This project provides a powerful schematic set designed to all the most powerful tool for schematics.

Problem to solve

The problem this schematic solves is automating resource creation while reducing repetitive boilerplate and ensuring consistency. By simply defining the desired resource structure in a file, the schematic handles the generation process for you.

Getting started

npm i -g @pbuilder/cli
builder add @pbuilder/nestjs

New Resource

The purpose of this schematics is to generate a whole resource based on an existing file. That means you need to create to create a file and configure it.

Then the schematic will read all the files with the same type and generate the resource.

For this version we are using the next stack:

  • Mongo with mongoose.
  • Graphql with apollo federation.

Let's start!

Install dependencies

If your project doesn't have all the dependencies needed to run this stack please run:

builder g @pbuilder/nestjs install-dependencies

or

builder g @pbuilder/nestjs i

Create the schema file

builder g @pbuilder/nestjs schema

examples of a mongoose schema:

import * as mongoose from 'mongoose';

export const CustomerSchema = new mongoose.Schema({}, { versionKey: false });

CustomerSchema.add({
  customerId: { type: Number, required: true, unique: true },
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  phone: { type: String, required: false },
  address: { type: String, required: false },
  isActive: { type: Boolean, required: true, default: true },
});

CustomerSchema.index({ email: 1 }, { unique: true });
/* eslint-disable prettier/prettier */
import * as mongoose from 'mongoose';
import { CalibratedSchema } from './calibrared.schema';

export const ProductSchema = new mongoose.Schema({}, { versionKey: false });

ProductSchema.add({
  calibrated: { type: CalibratedSchema, required: false },
  UPC: [
    {
      type: String,
      required: false,
    },
  ],

  status: {
    type: String,
    required: true,
  },
  imageUrl: { type: String, required: false },
  size: { type: String, required: true },
  closureType: { type: String, required: true },
  containerType: { type: String, required: true },
  brand: { type: String, required: true },
  liquidName: { type: String, required: true },
  unitsPerCase: { type: Number, required: true },
  itemNumber: { type: Number, required: true },
  category: {
    type: String,
    required: true,
  },
});

ProductSchema.index({ itemNumber: 1 }, { unique: true });

Generate the resource

With your file totally configure go to generate the resource

builder g @pbuilder/nestjs cgm

Architecture under the hood

When we want to extends the ability to generate a resource based on a file it's important to understand how to do it.

0.0.10

1 year ago

0.0.11

1 year ago

0.0.12

1 year ago

0.0.13

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago

0.0.0

1 year ago