UNPKG

@adocasts.com/dto

Version:

Easily make and generate DTOs from Lucid Models

55 lines (54 loc) 2.65 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { BaseCommand, args, flags } from '@adonisjs/core/ace'; import { stubsRoot } from '../stubs/main.js'; import ValidatorService from '../services/validator_service.js'; import ModelService from '../services/model_service.js'; import { ImportService } from '../services/import_service.js'; export default class MakeValidator extends BaseCommand { static commandName = 'make:validators'; static description = 'Create a new vine validator'; static options = { strict: true, }; async run() { const modelService = new ModelService(this.app); const validatorService = new ValidatorService(this.app); const { model, modelFileLines } = await modelService.getModelInfo(this.model, this.name); const validator = validatorService.getValidatorInfo(this.name, model); const codemods = await this.createCodemods(); if (!model.isReadable && this.model) { // wanted to generate from model, but model couldn't be found or read? cancel with error this.logger.error(`Unable to find or read desired model ${model.fileName}`); this.exitCode = 1; return; } else if (!model.isReadable) { // model not specifically wanted and couldn't be found or read? create plain validator return codemods.makeUsingStub(stubsRoot, 'make/validator/plain.stub', { validator, }); } const imports = ImportService.getImportStatements(validator, modelFileLines); return codemods.makeUsingStub(stubsRoot, 'make/validator/main.stub', { validator, model, imports, }); } } __decorate([ args.string({ description: "Name of the validator. If a model matches the provided name, it'll be used to generate the validator", }) ], MakeValidator.prototype, "name", void 0); __decorate([ flags.string({ description: 'Specify a model to build the validator from', alias: 'm', }) ], MakeValidator.prototype, "model", void 0);