sx-cli-tool
Version:
Laravel va Vue frameworklaridagi monolith arxitektura loyihalarni boshqarish uchun mo'ljallangan CLI tool
63 lines (55 loc) • 2.12 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFormRequest = generateFormRequest;
const folder_1 = require("../../utils/folder");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const formatter_1 = require("../../utils/formatter");
const prettier_1 = require("../../utils/prettier");
function generateFormRequest(entityName, fields, projectPath, groupName = "/admin") {
const formRequestPath = path_1.default.join(projectPath, "app", "Http", "Requests", groupName, `${entityName}FormRequest.php`);
const template = `<?php
namespace App\\Http\\Requests${(0, formatter_1.replaceSlashes)(groupName)};
use Illuminate\\Foundation\\Http\\FormRequest;
use Illuminate\\Contracts\\Validation\\Validator;
use Illuminate\\Http\\Exceptions\\HttpResponseException;
class ${entityName}FormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \\Illuminate\\Contracts\\Validation\\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
${fields
.map((field) => `"${field.name}" => "${field.validationRules}"`)
.join(",\n")}
];
}
// returns validation errors
public function failedValidation(Validator $validator)
{
throw new HttpResponseException(response()->json([
'success' => false,
'message' => $validator->errors()->first(),
'data' => $validator->errors()
], 422));
}
}
`;
(0, folder_1.ensureDirectoryExists)(formRequestPath);
fs_1.default.writeFileSync(formRequestPath, template, "utf8");
(0, prettier_1.formatPhpFile)(formRequestPath);
}