UNPKG

orange-orm

Version:

Object Relational Mapper

52 lines (41 loc) 1.11 kB
var newJoinRelation = require('./newJoinRelation'); var newRelatedTable = require('./newRelatedTable'); function newJoin(parentTable, childTable) { var c = {}; var columnNames = []; var relation; c.by = function() { for (var i = 0; i < arguments.length; i++) { columnNames.push(getColumnName(arguments[i])); } relation = newJoinRelation(parentTable, childTable, columnNames); relation.as = c.as; return relation; }; function getColumnName(columnName) { var columns = parentTable._columns; for (var i = 0; i < columns.length; i++) { if (columns[i]._dbName === columnName || columns[i].alias === columnName) return columns[i]._dbName; } throw new Error('Unknown column: ' + columnName); } c.as = function(alias) { relation.leftAlias = alias; parentTable._relations[alias] = relation; Object.defineProperty(parentTable, alias, { get: function() { return newRelatedTable([relation]); } }); return relation; }; c.notNullExceptInsert = function() { return c; }; c.notNull = function() { return c; }; return c; } module.exports = newJoin;