@tsclean/scaffold
Version:
This CLI creates an initial structure of a project based on clean architecture.
53 lines (51 loc) • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdaptersTemplate = void 0;
const CommandUtils_1 = require("../commands/CommandUtils");
const constants_1 = require("../utils/constants");
const messages_1 = require("../utils/messages");
class AdaptersTemplate {
/**
* Metodo para crear el Adaptador de acuerdo al ORM que recibe como parametro
*
* @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)
* @return
* ```typescript
* // Adapter
* import {UserEntity} from "@/domain/entities/user";
* import {UserModelSchema} from "@/infrastructure/driven-adapters/adapters/orm/mongo/models/user-mongoose";
*
* export class UserMongoRepositoryAdapter {}
* ```
*/
static getRepositoryAdapter(param, orm, manager) {
const _param = CommandUtils_1.CommandUtils.capitalizeString(param);
const _orm = CommandUtils_1.CommandUtils.capitalizeString(orm);
switch (orm) {
case constants_1.CONSTANTS.MONGO:
return `import {${_param}Entity} from "@/domain/entities/${param}";
import {${_param}ModelSchema} from "@/infrastructure/driven-adapters/adapters/orm/${orm}/models/${param}-${manager}";
export class ${_param}${_orm}RepositoryAdapter {
// Implementation
}
`;
case constants_1.CONSTANTS.SEQUELIZE:
if (manager === constants_1.CONSTANTS.MYSQL || manager === constants_1.CONSTANTS.POSTGRES) {
const _manager = CommandUtils_1.CommandUtils.capitalizeString(manager);
return `import {${_param}Entity} from "@/domain/entities/${param}";
import {${_param}Model${_manager}}from "@/infrastructure/driven-adapters/adapters/orm/${orm}/models/${param}-${manager}";
export class ${_param}${_manager}RepositoryAdapter {
// Implementation
}
`;
}
else {
throw messages_1.MESSAGES.ERROR_DATABASE(manager);
}
}
}
}
exports.AdaptersTemplate = AdaptersTemplate;
//# sourceMappingURL=AdaptersTemplate.js.map