all files / generators/api/services/ service.js

100% Statements 10/10
100% Branches 0/0
100% Functions 3/3
100% Lines 10/10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26                               
"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();