code-push-server
Version:
CodePush service is hotupdate services which adapter react-native-code-push and cordova-plugin-code-push
61 lines (58 loc) • 1.82 kB
JavaScript
"use strict";
var _ = require('lodash');
module.exports = function(sequelize, DataTypes) {
var PackagesMetrics = sequelize.define("PackagesMetrics", {
id: {
type: DataTypes.INTEGER(10),
allowNull: false,
autoIncrement: true,
primaryKey: true
},
package_id: DataTypes.INTEGER(10),
active: DataTypes.INTEGER(10),
downloaded: DataTypes.INTEGER(10),
failed: DataTypes.INTEGER(10),
installed: DataTypes.INTEGER(10),
created_at: DataTypes.DATE,
updated_at: DataTypes.DATE,
}, {
tableName: 'packages_metrics',
underscored: true,
paranoid: true,
classMethods: {
addOne : function (packageId, fieldName) {
var self = this;
var sql = 'UPDATE packages_metrics SET `' + fieldName + '`=`' + fieldName + '` + 1 WHERE package_id = :package_id';
return sequelize.query(sql, { replacements: { package_id: packageId}})
.spread(function(results, metadata) {
if (_.eq(results.affectedRows, 0)) {
var params = {
package_id: packageId,
active: 0,
downloaded: 0,
failed: 0,
installed: 0,
};
params[fieldName] = 1;
return self.create(params);
}else {
return true;
}
});
},
addOneOnDownloadById: function (packageId) {
return this.addOne(packageId, 'downloaded');
},
addOneOnFailedById: function (packageId) {
return this.addOne(packageId, 'failed');
},
addOneOnInstalledById: function (packageId) {
return this.addOne(packageId, 'installed');
},
addOneOnActiveById: function (packageId) {
return this.addOne(packageId, 'active');
},
}
});
return PackagesMetrics;
};