UNPKG

nsgm-cli

Version:

A CLI tool to run Next/Style-components and Graphql/Mysql fullstack project

93 lines (92 loc) 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseGenerator = void 0; /** * 基础生成器抽象类 * 定义所有代码生成器的通用接口 */ class BaseGenerator { constructor(controller, action, fields) { this.controller = controller; this.action = action; this.fields = fields; } /** * 获取首字母大写的控制器名 */ getCapitalizedController() { return this.controller.charAt(0).toUpperCase() + this.controller.slice(1); } /** * 获取首字母大写的动作名 */ getCapitalizedAction() { return this.action.charAt(0).toUpperCase() + this.action.slice(1); } /** * 获取显示字段 */ getDisplayFields() { return this.fields.filter((f) => f.showInList && !f.isSystemField); } /** * 获取表单字段 */ getFormFields() { return this.fields.filter((f) => f.showInForm && !f.isPrimaryKey && !f.isSystemField); } /** * 获取可搜索字段 */ getSearchableFields() { return this.fields.filter((f) => f.searchable); } /** * 获取非系统字段 */ getNonSystemFields() { return this.fields.filter((f) => !f.isSystemField); } /** * 将字段类型转换为GraphQL类型 */ getGraphQLType(fieldType) { switch (fieldType) { case 'integer': return 'Int'; case 'decimal': return 'Float'; case 'boolean': return 'Boolean'; default: return 'String'; } } /** * 将字段类型转换为SQL类型 */ getSQLType(field) { switch (field.type) { case 'varchar': return `varchar(${field.length || 255})`; case 'text': return 'text'; case 'integer': return 'integer'; case 'decimal': const [precision, scale] = (field.length || '10,2').toString().split(','); return `decimal(${precision || 10},${scale || 2})`; case 'boolean': return 'boolean'; case 'date': return 'date'; case 'datetime': return 'datetime'; case 'timestamp': return 'TIMESTAMP(3)'; default: return 'varchar(255)'; } } } exports.BaseGenerator = BaseGenerator;