database-jones/Adapter/api/Session.js (98 lines of code) (raw):
/*
Copyright (c) 2012, 2017 Oracle and/or its affiliates. All rights
reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2 of
the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
*/
"use strict";
var userContext = require("./UserContext.js"),
udebug = unified_debug.getLogger("Session.js"),
transaction = require('./Transaction.js'),
batch = require('./Batch.js');
function Session(index, sessionFactory, dbSession) {
this.index = index;
this.sessionFactory = sessionFactory;
this.dbSession = dbSession;
this.dbSession.index = index;
this.closed = false;
this.tx = new transaction.Transaction(this);
this.projections = {};
this.tableHandlers = {};
}
function isObjectNotTableMapping(fn) {
return typeof fn === 'object' && fn.constructor.name !== 'TableMapping';
}
exports.Session = Session;
exports.Session.prototype.getTableMetadata = function() {
var context = new userContext.UserContext(arguments, 3, 2, this, this.sessionFactory);
// delegate to context's getTableMetadata for execution
return context.getTableMetadata();
};
exports.Session.prototype.listTables = function() {
var context = new userContext.UserContext(arguments, 2, 2, this, this.sessionFactory);
// delegate to context's listTables for execution
return context.listTables();
};
exports.Session.prototype.getMapping = function() {
var context = new userContext.UserContext(arguments, 2, 2, this, this.sessionFactory);
return context.getMapping();
};
exports.Session.prototype.find = function() {
var context = new userContext.UserContext(arguments, 3, 2, this, this.sessionFactory);
// delegate to context's find function for execution
return context.find();
};
exports.Session.prototype.load = function() {
var context = new userContext.UserContext(arguments, 2, 1, this, this.sessionFactory);
// delegate to context's load function for execution
return context.load();
};
exports.Session.prototype.persist = function(tableIndicator) {
var context;
if (isObjectNotTableMapping(tableIndicator)) {
// persist(domainObject, callback)
context = new userContext.UserContext(arguments, 2, 1, this, this.sessionFactory);
} else {
// persist(tableNameOrConstructor, values, callback)
context = new userContext.UserContext(arguments, 3, 1, this, this.sessionFactory);
}
// delegate to context's persist function for execution
return context.persist();
};
exports.Session.prototype.remove = function(tableIndicator) {
var context;
if (isObjectNotTableMapping(tableIndicator)) {
// remove(domainObject, callback)
context = new userContext.UserContext(arguments, 2, 1, this, this.sessionFactory);
} else {
// remove(tableNameOrConstructor, keys, callback)
context = new userContext.UserContext(arguments, 3, 1, this, this.sessionFactory);
}
// delegate to context's remove function for execution
return context.remove();
};
exports.Session.prototype.update = function(tableIndicator) {
var context;
if (isObjectNotTableMapping(tableIndicator)) {
// update(domainObject, callback)
context = new userContext.UserContext(arguments, 2, 1, this, this.sessionFactory);
} else {
// update(tableNameOrConstructor, keys, values, callback)
context = new userContext.UserContext(arguments, 4, 1, this, this.sessionFactory);
}
// delegate to context's update function for execution
return context.update();
};
exports.Session.prototype.save = function(tableIndicator) {
var context;
if (isObjectNotTableMapping(tableIndicator)) {
// save(domainObject, callback)
context = new userContext.UserContext(arguments, 2, 1, this, this.sessionFactory);
} else {
// save(tableNameOrConstructor, values, callback)
context = new userContext.UserContext(arguments, 3, 1, this, this.sessionFactory);
}
// delegate to context's save function for execution
return context.save();
};
exports.Session.prototype.createQuery = function() {
// createQuery(tableIndicator, callback)
var context = new userContext.UserContext(arguments, 2, 2, this, this.sessionFactory);
return context.createQuery();
};
exports.Session.prototype.close = function() {
var context = new userContext.UserContext(arguments, 1, 1, this, this.sessionFactory);
return context.closeSession();
};
exports.Session.prototype.createBatch = function() {
return new batch.Batch(this);
};
exports.Session.prototype.isBatch = function() {
return false;
};
exports.Session.prototype.isClosed = function() {
return this.closed;
};
exports.Session.prototype.currentTransaction = function() {
return this.tx;
};
/* setLockMode() immediate */
exports.Session.prototype.setLockMode = function(lockMode) {
return this.dbSession.setLockMode(lockMode);
};