Files
cnpmjs.org/models/index.js

75 lines
1.9 KiB
JavaScript

'use strict';
var path = require('path');
var config = require('../config');
var sequelize = require('../common/sequelize');
function load(name) {
return sequelize.import(path.join(__dirname, name));
}
var _ModuleAbbreviated = config.enableAbbreviatedMetadata ? load('module_abbreviated') : null;
var _PackageReadme = config.enableAbbreviatedMetadata ? load('package_readme') : null;
var _BlockPackageVersion = config.enableBlockPackageVersion ? load('block_package_version') : null;
module.exports = {
sequelize: sequelize,
Module: load('module'),
ModuleLog: load('module_log'),
ModuleStar: load('module_star'),
ModuleKeyword: load('module_keyword'),
ModuleDependency: load('module_deps'),
ModuleMaintainer: load('module_maintainer'),
ModuleUnpublished: load('module_unpublished'),
NpmModuleMaintainer: load('npm_module_maintainer'),
Tag: load('tag'),
User: load('user'),
Total: load('total'),
DownloadTotal: load('download_total'),
Token: load('token'),
query: function* (sql, args) {
var options = { replacements: args };
var data = yield this.sequelize.query(sql, options);
if (/select /i.test(sql)) {
return data[0];
}
return data[1];
},
queryOne: function* (sql, args) {
var rows = yield this.query(sql, args);
return rows && rows[0];
},
get ModuleAbbreviated() {
if (!config.enableAbbreviatedMetadata) {
return null;
}
if (!_ModuleAbbreviated) {
_ModuleAbbreviated = load('module_abbreviated');
}
return _ModuleAbbreviated;
},
get PackageReadme() {
if (!config.enableAbbreviatedMetadata) {
return null;
}
if (!_PackageReadme) {
_PackageReadme = load('package_readme');
}
return _PackageReadme;
},
get BlockPackageVersion() {
if (!config.enableBlockPackageVersion) {
return null;
}
if (!_BlockPackageVersion) {
_BlockPackageVersion = load('block_package_version');
}
return _BlockPackageVersion;
}
};