@tsclean/scaffold
Version:
This CLI creates an initial structure of a project based on clean architecture.
49 lines (46 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelsTemplate = void 0;
const CommandUtils_1 = require("../commands/CommandUtils");
const constants_1 = require("../utils/constants");
class ModelsTemplate {
/**
* Metodo para crear el modelo del adaptador de acuero al ORM
*
* @param param Nombre de la entidad
* @param orm Nombre del orm (sequelize, mongo)
* @param manager Nombre del gestor de base de datos (mysql, pg, mongoose)
* ```typescript
* // Model
* import { model, Schema } from "mongoose";
* import { UserEntity } from '@/domain/entities/user';
*
* const schema = new Schema<UserEntity>({});
*
* export const UserModelSchema = model<UserEntity>('users', schema);
* ```
*/
static getModels(param, orm, manager) {
const _name = CommandUtils_1.CommandUtils.capitalizeString(param);
switch (orm) {
case constants_1.CONSTANTS.MONGO:
return `import { model, Schema } from "mongoose";
import { ${_name}Entity } from '@/domain/entities/${param}';
const schema = new Schema<${_name}Entity>({
// Implementation
});
export const ${_name}ModelSchema = model<${_name}Entity>('${param}s', schema);
`;
case constants_1.CONSTANTS.SEQUELIZE:
const _manager = CommandUtils_1.CommandUtils.capitalizeString(manager);
return `import { Table, Column, Model, Sequelize } from 'sequelize-typescript'
import { ${_name}Entity } from "@/domain/entities/${param}";
@Table({ tableName: '${param}s' })
export class ${_name}Model${_manager} extends Model<${_name}Entity> {
// Implementation
}`;
}
}
}
exports.ModelsTemplate = ModelsTemplate;
//# sourceMappingURL=ModelsTemplate.js.map