periodicjs.core.data
Version:
Core data is the ORM wrapping component of periodicjs.core.controller that provides database adapters for commonly used databases (ie. mongo, sql, postgres). Adapters provide a standard set of methods and options regardless of the type of database and so
50 lines (48 loc) • 1.09 kB
JavaScript
'use strict';
const mongoose = require('mongoose');
const path = require('path');
/**
* Default changeset schema for mongo databases
* @type {mongoose.Schema}
*/
const CHANGESET = new mongoose.Schema({
createdat: {
index: true,
type: Date,
default: Date.now
},
editor: {
type: mongoose.Schema.ObjectId,
ref: 'User'
},
editor_username: String,
changeset: mongoose.Schema.Types.Mixed,
parent_document: {
id: {
index: true,
type: mongoose.Schema.ObjectId
},
document_type: {
index: true,
type: String
}
}
});
/**
* Exports the changeset model as a singleton
* @return {Object} Returns a mongo adapter with changeset as its model property
*/
module.exports = (function (Mongo_Adapter) {
let ChangeSet;
try {
ChangeSet = mongoose.model('Changeset', CHANGESET);
}
catch (e) {
ChangeSet = mongoose.model('Changeset');
}
let Changes = new Mongo_Adapter({
model: ChangeSet,
track_changes: false
});
return { Changes };
})(require(path.join(__dirname, '../../adapters/mongo')));