jii
Version:
Jii - Full-Stack JavaScript Framework
57 lines (48 loc) • 1.42 kB
JavaScript
/**
* @author <a href="http://www.affka.ru">Vladimir Kozhin</a>
* @license MIT
*/
;
const Jii = require('../../BaseJii');
const FilterBuilder = require('../../data/FilterBuilder');
const ModelSchema = require('../../data/ModelSchema');
const _isObject = require('lodash/isObject');
const _keys = require('lodash/keys');
const BaseObject = require('../../base/BaseObject');
class Schema extends BaseObject {
preInit() {
this._filterBuilder = null;
this.tables = {};
super.preInit(...arguments);
}
/**
* @return {QueryBuilder} the query builder for this connection.
*/
getFilterBuilder() {
if (this._filterBuilder === null) {
this._filterBuilder = this.createFilterBuilder();
}
return this._filterBuilder;
}
/**
*
* @param {string} name
* @returns {ModelSchema}
*/
getTableSchema(name) {
if (_isObject(this.tables[name]) && !(this.tables[name] instanceof ModelSchema)) {
this.tables[name] = ModelSchema.createFromObject(this.tables[name]);
}
return this.tables[name] || null;
}
getTableNames() {
return _keys(this.tables);
}
/**
* @return {FilterBuilder}
*/
createFilterBuilder() {
return new FilterBuilder();
}
}
module.exports = Schema;