"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("../../../commons/utils/utils");
/**
* Class which generates string content for API services files
*
* @export
* @class Service
*/
var Service = (function () {
function Service() {
}
/**
* Generate String content for one service file using model
* @param {string} model - model name. e.g: User
* @return {string} - string content for generated service
*/
Service.prototype.getService = function (model) {
var modelTitleCase = utils_1.default.toTitleCase(model);
return "const repositoryFactory = require('../repositories/repositoryFactory');\nconst STATUS_CODE = require('../commons/constants/statusCode');\n\nclass " + modelTitleCase + "Service {\n constructor() {\n this.repository = repositoryFactory.getRepositoryForModel('" + modelTitleCase + "');\n }\n\n save(data) {\n return new Promise((resolve, reject) => {\n this.repository.save(data)\n .then(id => {\n resolve(id);\n })\n .catch(err => {\n reject({'status': STATUS_CODE.INTERNAL_SERVER_ERROR, 'message': err.message});\n });\n });\n }\n\n get(id) {\n return new Promise((resolve, reject) => {\n this.repository.get(id)\n .then(data => {\n if (!data) {\n return reject({'status': STATUS_CODE.NOT_FOUND, 'message': 'No " + modelTitleCase + " found with id ' + id});\n }\n resolve(data);\n })\n .catch(err => {\n reject({'status': STATUS_CODE.INTERNAL_SERVER_ERROR, 'message': err.message});\n });\n });\n }\n\n getAll(offset = 0, limit = 15) {\n const result = {\n meta: {\n offset: offset,\n limit: limit,\n count: 0\n },\n data: []\n };\n\n return new Promise((resolve, reject) => {\n this.repository.getAll(Number(offset), Number(limit))\n .then(data => {\n result.data = data;\n\n return this.repository.count();\n })\n .then(count => {\n result.meta.count = count;\n\n resolve(result);\n })\n .catch(err => {\n reject({'status': STATUS_CODE.INTERNAL_SERVER_ERROR, 'message': err.message});\n });\n });\n }\n\n delete(id) {\n return new Promise((resolve, reject) => {\n this.repository.exists(id)\n .then(exists => {\n if (!exists) {\n return reject({'status': STATUS_CODE.NOT_FOUND, 'message': 'No " + modelTitleCase + " found with id: ' + id});\n }\n return this.repository.delete(id);\n })\n .then(affected" + modelTitleCase + " => {\n resolve(true);\n })\n .catch(err => {\n reject({'status': STATUS_CODE.INTERNAL_SERVER_ERROR, 'message': err.message});\n });\n });\n }\n\n update(id, data) {\n return new Promise((resolve, reject) => {\n this.repository.exists(id)\n .then(exists => {\n if (!exists) {\n return reject({'status': STATUS_CODE.NOT_FOUND, 'message': 'No " + modelTitleCase + " found with id ' + id});\n }\n return this.repository.update(id, data);\n })\n .then(data => {\n resolve(data);\n })\n .catch(err => {\n reject({'status': STATUS_CODE.INTERNAL_SERVER_ERROR, 'message': err.message});\n });\n });\n }\n}\n\nmodule.exports = new " + modelTitleCase + "Service();";
};
return Service;
}());
exports.Service = Service;
exports.default = new Service();
|