UNPKG

@actonate/mirkwood

Version:

GraphQL based Rapid Server-side Development framework

148 lines (111 loc) 4.66 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _adapters = require('./adapters'); var _adapters2 = _interopRequireDefault(_adapters); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _types = require('../../lib/types'); var _types2 = _interopRequireDefault(_types); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var DEFAULT_CONNECTION = 'development'; var DEFAULT_ADAPTER = 'postgresql'; var Database = function () { function Database() { _classCallCheck(this, Database); } _createClass(Database, null, [{ key: 'init', value: function init(_ref) { var config = _ref.config; this.config = config; this.connections = {}; } }, { key: 'generateFindType', value: function generateFindType(model) { var schema = model.schema; var modelName = schema.name; var findTypeName = [modelName, 'Find'].join('_'); // fetch if exists if (_types2.default.get(findTypeName)) { return _types2.default.get(findTypeName); } return _types2.default.generateInputType({ name: findTypeName, fields: schema.fields }, ['defaultValue']); // sp that defaultValue is filtered out } }]); return Database; }(); Database.getConnection = function (name) { var connectionName = name || process.env['NODE_ENV'] || 'development'; var dbConnectionParams = Database.config[connectionName]; var dbAdapter = _adapters2.default[dbConnectionParams.adapter || DEFAULT_ADAPTER]; // check if connection exists if (Database.connections[connectionName]) { return Database.connections[connectionName]; } var newConnection = new dbAdapter(dbConnectionParams); Database.connections[connectionName] = newConnection; return newConnection; }; Database.all = function (datasource, args) { var dbConnection = Database.getConnection(datasource.connection); return dbConnection.all(datasource, args); }; Database.count = function (datasource, args) { var dbConnection = Database.getConnection(datasource.connection); return dbConnection.count(datasource, args); }; Database.create = function (datasource, row, args) { var dbConnection = Database.getConnection(datasource.connection); row = Database.extend('create', row, datasource); return dbConnection.create(datasource, row, args); }; Database.createMany = function (datasource, rows, args) { var dbConnection = Database.getConnection(datasource.connection); rows = Database.extend('create', rows, datasource); return dbConnection.createMany(datasource, rows, args); }; Database.update = function (datasource, find, row, args) { var dbConnection = Database.getConnection(datasource.connection); row = Database.extend('update', row, datasource); return dbConnection.update(datasource, find, row, args); }; Database.destroy = function (datasource, find, args) { var dbConnection = Database.getConnection(datasource.connection); return dbConnection.destroy(datasource, find, args); }; Database.delete = function (datasource, find, args) { var dbConnection = Database.getConnection(datasource.connection); return dbConnection.delete(datasource, find, args); }; Database.one = function (datasource, args) { var dbConnection = Database.getConnection(datasource.connection); return dbConnection.one(datasource, args); }; Database.extend = function (mode, row, datasource) { if (Array.isArray(row)) { var rows = row; return rows.map(function (row) { return Database.extend(mode, row, datasource); }); } // check timestamps options if (datasource.timestamps) { if (mode === 'create') { row._created_at = row._created_at || _moment2.default.utc().format(); row._updated_at = row._updated_at || _moment2.default.utc().format(); } if (mode === 'update') { row._updated_at = row._updated_at || _moment2.default.utc().format(); } } return row; }; exports.default = Database;