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
51 lines (49 loc) • 1.25 kB
JavaScript
'use strict';
const lowkie = require('lowkie');
const path = require('path');
/**
* Default changeset schema for mongo databases
* @type {mongoose.Schema}
*/
const CHANGESET = lowkie.Schema({
createdat: {
index: true,
type: Date,
default: Date.now
},
editor: {
type: lowkie.Schema.ObjectId,
ref: 'User'
},
editor_username: String,
changeset: lowkie.Schema.Types.Mixed,
parent_document: {
id: {
index: true,
type: lowkie.Schema.ObjectId
},
document_type: {
index: true,
type: String
}
}
});
/**
* Registers a changeset schema to a custom mongoose instance
* @param {Object} db_connection A mongoose connection where the changeset collection should be registered
* @return {Object} Returns an instance of a Mongo_Adapter that has been configured for the changeset collection
*/
module.exports = (function register_changeset (Loki_Adapter) {
let ChangeSet;
try {
ChangeSet = lowkie.model('Changeset', CHANGESET);
}
catch (e) {
// ChangeSet = lowkie.model('Changeset');
}
let Changes = new Loki_Adapter({
model: ChangeSet,
track_changes: false
});
return { Changes };
})(require(path.join(__dirname, '../../adapters/loki')));