sx-cli-tool
Version:
Laravel va Vue frameworklaridagi monolith arxitektura loyihalarni boshqarish uchun mo'ljallangan CLI tool
85 lines (74 loc) • 3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateController = generateController;
const folder_1 = require("../../utils/folder");
const formatter_1 = require("../../utils/formatter");
const prettier_1 = require("../../utils/prettier");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function generateController(entityName, projectPath, groupName = "/admin") {
const lowerCasedEntityName = entityName.toLowerCase();
const controllerPath = path_1.default.join(projectPath, "app", "Http", "Controllers", groupName, `${entityName}Controller.php`);
const template = `<?php
namespace App\\Http\\Controllers${(0, formatter_1.replaceSlashes)(groupName)};
use App\\Models${(0, formatter_1.replaceSlashes)(groupName)}\\${entityName};
use App\\Http\\Requests${(0, formatter_1.replaceSlashes)(groupName)}\\${entityName}FormRequest;
use Illuminate\\Http\\Request;
use App\\Http\\Controllers\\Controller;
class ${entityName}Controller extends Controller
{/**
* ${lowerCasedEntityName} ro'yxatini ko'rsatadi.
*/
public function index(Request $request)
{
$limit = $request->input('limit', 10); // Har bir sahifada ko'rsatiladigan clientlar soni
$page = $request->input('page', 1); // Hozirgi sahifa
// ${lowerCasedEntityName} sahifalash
$data = ${entityName}::paginate($limit, ['*'], 'page', $page);
return response()->json($data);
}
/**
* Yangi ${lowerCasedEntityName} qo'shadi.
*/
public function store(${entityName}FormRequest $request)
{
$request->validated();
$${lowerCasedEntityName} = ${entityName}::create($request->all());
return response()->json($${lowerCasedEntityName}, 201);
}
/**
* Muayyan ${lowerCasedEntityName} ko'rsatadi.
*/
public function show($id)
{
$${lowerCasedEntityName} = ${entityName}::findOrFail($id);
return response()->json($${lowerCasedEntityName});
}
/**
* Muayyan ${lowerCasedEntityName} yangilaydi.
*/
public function update(${entityName}FormRequest $request, $id)
{
$${lowerCasedEntityName} = ${entityName}::findOrFail($id);
$request->validated();
$${lowerCasedEntityName}->update($request->all());
return response()->json($${lowerCasedEntityName});
}
/**
* Muayyan ${entityName} o'chiradi.
*/
public function destroy($id)
{
$${lowerCasedEntityName} = ${entityName}::findOrFail($id);
$${lowerCasedEntityName}->delete();
return response()->json(null, 204);
}
}
`;
(0, folder_1.ensureDirectoryExists)(controllerPath);
fs_1.default.writeFileSync(controllerPath, template, "utf8");
(0, prettier_1.formatPhpFile)(controllerPath);
}