UNPKG

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

52 lines (50 loc) 1.3 kB
'use strict'; const lowkie = require('lowkie'); const path = require('path'); const Loki_Adapter = require(path.join(__dirname, '../adapters/loki')); /** * 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 (db_connection) { let ChangeSet; try { ChangeSet = db_connection.model('Changeset', CHANGESET); } catch (e) { ChangeSet = db_connection.model('Changeset'); } return new Loki_Adapter({ model: ChangeSet, track_changes: false, use_changes: false, db_connection, }); };