@adocasts.com/dto
Version:
Easily make and generate DTOs from Lucid Models
55 lines (54 loc) • 2.65 kB
JavaScript
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);