Merge pull request #1333 from strongloop/api-doc-refactor
Datasource documentation tune-up
This commit is contained in:
commit
bf7ea4caed
|
@ -264,8 +264,12 @@ DataSource._resolveConnector = function(name, loader) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connect to the data source
|
* Connect to the data source.
|
||||||
|
* If no callback is provided, it will return a Promise.
|
||||||
|
* Emits the 'connect' event.
|
||||||
* @param callback
|
* @param callback
|
||||||
|
* @returns {Promise}
|
||||||
|
* @emits connected
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.connect = function(callback) {
|
DataSource.prototype.connect = function(callback) {
|
||||||
callback = callback || utils.createPromiseCallback();
|
callback = callback || utils.createPromiseCallback();
|
||||||
|
@ -439,9 +443,14 @@ function isModelDataSourceAttached(model) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Define scopes for the model class from the scopes object
|
* Define scopes for the model class from the scopes object. See
|
||||||
* @param modelClass
|
* [scopes](./Model-definition-JSON-file.html#scopes) for more information on
|
||||||
* @param scopes
|
* scopes and valid options objects.
|
||||||
|
* @param {Object} modelClass - The model class that corresponds to the model
|
||||||
|
* definition that will be enhanced by the provided scopes.
|
||||||
|
* @param {Object} scopes A key-value collection of names and their object
|
||||||
|
* definitions
|
||||||
|
* @property options The options defined on the scope object.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.defineScopes = function(modelClass, scopes) {
|
DataSource.prototype.defineScopes = function(modelClass, scopes) {
|
||||||
if (scopes) {
|
if (scopes) {
|
||||||
|
@ -452,9 +461,12 @@ DataSource.prototype.defineScopes = function(modelClass, scopes) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Define relations for the model class from the relations object
|
* Define relations for the model class from the relations object. See
|
||||||
* @param modelClass
|
* [relations](./Model-definition-JSON-file.html#relations) for more information.
|
||||||
* @param relations
|
* @param {Object} modelClass - The model class that corresponds to the model
|
||||||
|
* definition that will be enhanced by the provided relations.
|
||||||
|
* @param {Object} relations A key-value collection of relation names and their
|
||||||
|
* object definitions.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.defineRelations = function(modelClass, relations) {
|
DataSource.prototype.defineRelations = function(modelClass, relations) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -548,9 +560,11 @@ function isValidRelationName(relationName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Set up the data access functions from the data source
|
* Set up the data access functions from the data source. Each data source will
|
||||||
* @param {Model} modelClass The model class
|
* expose a data access object (DAO), which will be mixed into the modelClass.
|
||||||
* @param {Object} settings The settings object
|
* @param {Model} modelClass The model class that will receive DAO mixins.
|
||||||
|
* @param {Object} settings The settings object; typically allows any settings
|
||||||
|
* that would be valid for a typical Model object.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.setupDataAccess = function(modelClass, settings) {
|
DataSource.prototype.setupDataAccess = function(modelClass, settings) {
|
||||||
if (this.connector) {
|
if (this.connector) {
|
||||||
|
@ -643,7 +657,7 @@ DataSource.prototype.setupDataAccess = function(modelClass, settings) {
|
||||||
* @param {String} className Name of the model to create.
|
* @param {String} className Name of the model to create.
|
||||||
* @param {Object} properties Hash of model properties in format `{property: Type, property2: Type2, ...}` or `{property: {type: Type}, property2: {type: Type2}, ...}`
|
* @param {Object} properties Hash of model properties in format `{property: Type, property2: Type2, ...}` or `{property: {type: Type}, property2: {type: Type2}, ...}`
|
||||||
* @options {Object} properties Other configuration options. This corresponds to the options key in the config object.
|
* @options {Object} properties Other configuration options. This corresponds to the options key in the config object.
|
||||||
*
|
* @param {Object} settings A settings object that would typically be used for Model objects.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DataSource.prototype.createModel =
|
DataSource.prototype.createModel =
|
||||||
|
@ -731,23 +745,35 @@ DataSource.prototype.mixin = function(ModelCtor) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See ModelBuilder.getModel
|
*
|
||||||
|
* FIXME: Deprecation notice for 4.x?
|
||||||
|
* See [ModelBuilder.getModel](http://apidocs.strongloop.com/loopback-datasource-juggler/#modelbuilder-prototype-getmodel)
|
||||||
|
* for details.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.getModel = function(name, forceCreate) {
|
DataSource.prototype.getModel = function(name, forceCreate) {
|
||||||
return this.modelBuilder.getModel(name, forceCreate);
|
return this.modelBuilder.getModel(name, forceCreate);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* // FIXME: Make this a link to ModelBuilder.getModelDefinition's docs!
|
||||||
|
* // FIXME: Deprecation notice for 4.x?
|
||||||
* See ModelBuilder.getModelDefinition
|
* See ModelBuilder.getModelDefinition
|
||||||
|
* See [ModelBuilder.getModelDefinition](http://apidocs.strongloop.com/loopback-datasource-juggler/#modelbuilder-prototype-getmodeldefinition)
|
||||||
|
* for details.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.getModelDefinition = function(name) {
|
DataSource.prototype.getModelDefinition = function(name) {
|
||||||
return this.modelBuilder.getModelDefinition(name);
|
return this.modelBuilder.getModelDefinition(name);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the data source types
|
* Get the data source types collection.
|
||||||
* @returns {String[]} The data source type, such as ['db', 'nosql', 'mongodb'],
|
* @returns {String[]} The data source type array.
|
||||||
* ['rest'], or ['db', 'rdbms', 'mysql']
|
* For example, ['db', 'nosql', 'mongodb'] would be represent a datasource of
|
||||||
|
* type 'db', with a subtype of 'nosql', and would use the 'mongodb' connector.
|
||||||
|
*
|
||||||
|
* Alternatively, ['rest'] would be a different type altogether, and would have
|
||||||
|
* no subtype.
|
||||||
|
* FIXME: Deprecation notice for 4.x?
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.getTypes = function() {
|
DataSource.prototype.getTypes = function() {
|
||||||
var getTypes = this.connector && this.connector.getTypes;
|
var getTypes = this.connector && this.connector.getTypes;
|
||||||
|
@ -760,7 +786,7 @@ DataSource.prototype.getTypes = function() {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the data source supports the specified types.
|
* Check the data source supports the specified types.
|
||||||
* @param {String} types Type name or an array of type names. Can also be array of Strings.
|
* @param {String|String[]} types Type name or an array of type names.
|
||||||
* @returns {Boolean} true if all types are supported by the data source
|
* @returns {Boolean} true if all types are supported by the data source
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.supportTypes = function(types) {
|
DataSource.prototype.supportTypes = function(types) {
|
||||||
|
@ -782,8 +808,12 @@ DataSource.prototype.supportTypes = function(types) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attach an existing model to a data source.
|
* Attach an existing model to a data source.
|
||||||
*
|
* This will mixin all of the data access object functions (DAO) into your
|
||||||
* @param {Function} modelClass The model constructor
|
* modelClass definition.
|
||||||
|
* @param {Function} modelClass The model constructor that will be enhanced by
|
||||||
|
* DAO mixins.
|
||||||
|
* FIXME: In future versions, this will not maintain a strict 1:1 relationship
|
||||||
|
* between datasources and model classes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DataSource.prototype.attach = function(modelClass) {
|
DataSource.prototype.attach = function(modelClass) {
|
||||||
|
@ -808,11 +838,13 @@ DataSource.prototype.attach = function(modelClass) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define single property named `prop` on `model`
|
* Define a property with name `prop` on a target `model`. See
|
||||||
*
|
* [Properties](./Model-definition-JSON-file.html#properties) for more information
|
||||||
|
* regarding valid options for `params`.
|
||||||
|
* FIXME: Deprecate for 4.0?
|
||||||
* @param {String} model Name of model
|
* @param {String} model Name of model
|
||||||
* @param {String} prop Name of property
|
* @param {String} prop Name of property
|
||||||
* @param {Object} params Property settings
|
* @param {Property} params Property settings
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.defineProperty = function(model, prop, params) {
|
DataSource.prototype.defineProperty = function(model, prop, params) {
|
||||||
this.modelBuilder.defineProperty(model, prop, params);
|
this.modelBuilder.defineProperty(model, prop, params);
|
||||||
|
@ -824,15 +856,18 @@ DataSource.prototype.defineProperty = function(model, prop, params) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drop each model table and re-create.
|
* Drop schema objects such as tables, indexes, views, triggers, etc that correspond
|
||||||
* This method applies only to database connectors. For MongoDB, it drops and creates indexes.
|
* to model definitions attached to this DataSource instance, specified by the `models` parameter.
|
||||||
*
|
*
|
||||||
* **WARNING**: Calling this function deletes all data! Use `autoupdate()` to preserve data.
|
* **WARNING**: In many situations, this will destroy data! `autoupdate()` will attempt to preserve
|
||||||
|
* data while updating the schema on your target DataSource, but this is not guaranteed to be safe.
|
||||||
*
|
*
|
||||||
* @param {String} model Model to migrate. If not present, apply to all models. Can also be an array of Strings.
|
* Please check the documentation for your specific connector(s) for a detailed breakdown of
|
||||||
|
* behaviors for automigrate!
|
||||||
|
*
|
||||||
|
* @param {String|String[]} [models] Model(s) to migrate. If not present, apply to all models.
|
||||||
* @param {Function} [callback] Callback function. Optional.
|
* @param {Function} [callback] Callback function. Optional.
|
||||||
*
|
*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.automigrate = function(models, cb) {
|
DataSource.prototype.automigrate = function(models, cb) {
|
||||||
this.freeze();
|
this.freeze();
|
||||||
|
@ -886,7 +921,13 @@ DataSource.prototype.automigrate = function(models, cb) {
|
||||||
* Update existing database tables.
|
* Update existing database tables.
|
||||||
* This method applies only to database connectors.
|
* This method applies only to database connectors.
|
||||||
*
|
*
|
||||||
* @param {String} model Model to migrate. If not present, apply to all models. Can also be an array of Strings.
|
* **WARNING**: `autoupdate()` will attempt to preserve data while updating the
|
||||||
|
* schema on your target DataSource, but this is not guaranteed to be safe.
|
||||||
|
*
|
||||||
|
* Please check the documentation for your specific connector(s) for a detailed breakdown of
|
||||||
|
* behaviors for automigrate!*
|
||||||
|
*
|
||||||
|
* @param {String|String[]} [models] Model(s) to migrate. If not present, apply to all models.
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.autoupdate = function(models, cb) {
|
DataSource.prototype.autoupdate = function(models, cb) {
|
||||||
|
@ -949,7 +990,7 @@ DataSource.prototype.autoupdate = function(models, cb) {
|
||||||
* @property {Boolean} views If true, include views; if false, only tables.
|
* @property {Boolean} views If true, include views; if false, only tables.
|
||||||
* @property {Number} limit Page size
|
* @property {Number} limit Page size
|
||||||
* @property {Number} offset Starting index
|
* @property {Number} offset Starting index
|
||||||
*
|
* @returns {ModelDefinition[]}
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverModelDefinitions = function(options, cb) {
|
DataSource.prototype.discoverModelDefinitions = function(options, cb) {
|
||||||
this.freeze();
|
this.freeze();
|
||||||
|
@ -970,13 +1011,14 @@ DataSource.prototype.discoverModelDefinitions = function(options, cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* FIXME Deprecate/remove this for LB 4.0?
|
||||||
* The synchronous version of discoverModelDefinitions.
|
* The synchronous version of discoverModelDefinitions.
|
||||||
* @options {Object} options The options
|
* @options {Object} options The options
|
||||||
* @property {Boolean} all If true, discover all models; if false, discover only models owned by the current user.
|
* @property {Boolean} all If true, discover all models; if false, discover only models owned by the current user.
|
||||||
* @property {Boolean} views If true, nclude views; if false, only tables.
|
* @property {Boolean} views If true, nclude views; if false, only tables.
|
||||||
* @property {Number} limit Page size
|
* @property {Number} limit Page size
|
||||||
* @property {Number} offset Starting index
|
* @property {Number} offset Starting index
|
||||||
* @returns {*}
|
* @returns {ModelDefinition[]}
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverModelDefinitionsSync = function(options) {
|
DataSource.prototype.discoverModelDefinitionsSync = function(options) {
|
||||||
this.freeze();
|
this.freeze();
|
||||||
|
@ -1001,11 +1043,14 @@ DataSource.prototype.discoverModelDefinitionsSync = function(options) {
|
||||||
*|dataPrecision | Number | Numeric data precision|
|
*|dataPrecision | Number | Numeric data precision|
|
||||||
*|dataScale |Number | Numeric data scale|
|
*|dataScale |Number | Numeric data scale|
|
||||||
*|nullable |Boolean | If true, then the data can be null|
|
*|nullable |Boolean | If true, then the data can be null|
|
||||||
*
|
* See [Properties](./Model-definition-JSON-file.html#properties) for more
|
||||||
|
* details on the Property return type.
|
||||||
* @param {String} modelName The table/view name
|
* @param {String} modelName The table/view name
|
||||||
* @options {Object} options The options
|
* @options {Object} options The options
|
||||||
* @property {String} owner|schema The database owner or schema
|
* @property {String} owner|schema The database owner or schema
|
||||||
* @param {Function} cb Callback function. Optional
|
* @param {Function} cb Callback function. Optional
|
||||||
|
* @callback cb
|
||||||
|
* @returns {Promise} A promise that returns an array of Properties (Property[])
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverModelProperties = function(modelName, options, cb) {
|
DataSource.prototype.discoverModelProperties = function(modelName, options, cb) {
|
||||||
|
@ -1027,6 +1072,7 @@ DataSource.prototype.discoverModelProperties = function(modelName, options, cb)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* FIXME: Deprecate this for LB 4.x?
|
||||||
* The synchronous version of discoverModelProperties
|
* The synchronous version of discoverModelProperties
|
||||||
* @param {String} modelName The table/view name
|
* @param {String} modelName The table/view name
|
||||||
* @param {Object} options The options
|
* @param {Object} options The options
|
||||||
|
@ -1051,11 +1097,13 @@ DataSource.prototype.discoverModelPropertiesSync = function(modelName, options)
|
||||||
*| columnName |String| Column name
|
*| columnName |String| Column name
|
||||||
*| keySeq |Number| Sequence number within primary key (1 indicates the first column in the primary key; 2 indicates the second column in the primary key).
|
*| keySeq |Number| Sequence number within primary key (1 indicates the first column in the primary key; 2 indicates the second column in the primary key).
|
||||||
*| pkName |String| Primary key name (may be null)
|
*| pkName |String| Primary key name (may be null)
|
||||||
*
|
* See [ID Properties](./Model-definition-JSON-file.html#id-properties) for more
|
||||||
|
* information.
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @options {Object} options The options
|
* @options {Object} options The options
|
||||||
* @property {String} owner|schema The database owner or schema
|
* @property {String} owner|schema The database owner or schema
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
|
* @returns {Promise} A promise with an array of Primary Keys (Property[])
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverPrimaryKeys = function(modelName, options, cb) {
|
DataSource.prototype.discoverPrimaryKeys = function(modelName, options, cb) {
|
||||||
this.freeze();
|
this.freeze();
|
||||||
|
@ -1076,10 +1124,11 @@ DataSource.prototype.discoverPrimaryKeys = function(modelName, options, cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* FIXME: Obsolete?
|
||||||
* The synchronous version of discoverPrimaryKeys
|
* The synchronous version of discoverPrimaryKeys
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @options {Object} options The options
|
* @options {Object} options The options
|
||||||
* @property {String} owner|schema The database owner orschema
|
* @property {String} owner|schema The database owner or schema
|
||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverPrimaryKeysSync = function(modelName, options) {
|
DataSource.prototype.discoverPrimaryKeysSync = function(modelName, options) {
|
||||||
|
@ -1106,11 +1155,13 @@ DataSource.prototype.discoverPrimaryKeysSync = function(modelName, options) {
|
||||||
*|pkName |String | Primary key name (may be null)
|
*|pkName |String | Primary key name (may be null)
|
||||||
*|pkTableName |String | Primary key table name being imported
|
*|pkTableName |String | Primary key table name being imported
|
||||||
*|pkColumnName |String | Primary key column name being imported
|
*|pkColumnName |String | Primary key column name being imported
|
||||||
*
|
* See [Relations](/Model-definition-JSON-file.html#relations) for more
|
||||||
|
* information.
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @options {Object} options The options
|
* @options {Object} options The options
|
||||||
* @property {String} owner|schema The database owner or schema
|
* @property {String} owner|schema The database owner or schema
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
|
* @returns {Promise} A Promise with an array of foreign key relations.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverForeignKeys = function(modelName, options, cb) {
|
DataSource.prototype.discoverForeignKeys = function(modelName, options, cb) {
|
||||||
|
@ -1132,6 +1183,7 @@ DataSource.prototype.discoverForeignKeys = function(modelName, options, cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* FIXME: Obsolete?
|
||||||
* The synchronous version of discoverForeignKeys
|
* The synchronous version of discoverForeignKeys
|
||||||
*
|
*
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
|
@ -1163,11 +1215,14 @@ DataSource.prototype.discoverForeignKeysSync = function(modelName, options) {
|
||||||
*|pkName |String | Primary key name (may be null)
|
*|pkName |String | Primary key name (may be null)
|
||||||
*|pkTableName |String | Primary key table name being imported
|
*|pkTableName |String | Primary key table name being imported
|
||||||
*|pkColumnName |String | Primary key column name being imported
|
*|pkColumnName |String | Primary key column name being imported
|
||||||
|
* See [Relations](/Model-definition-JSON-file.html#relations) for more
|
||||||
|
* information.
|
||||||
*
|
*
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @options {Object} options The options
|
* @options {Object} options The options
|
||||||
* @property {String} owner|schema The database owner or schema
|
* @property {String} owner|schema The database owner or schema
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
|
* @returns {Promise} A Promise with an array of exported foreign key relations.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverExportedForeignKeys = function(modelName, options, cb) {
|
DataSource.prototype.discoverExportedForeignKeys = function(modelName, options, cb) {
|
||||||
this.freeze();
|
this.freeze();
|
||||||
|
@ -1188,6 +1243,7 @@ DataSource.prototype.discoverExportedForeignKeys = function(modelName, options,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* FIXME: Obsolete?
|
||||||
* The synchronous version of discoverExportedForeignKeys
|
* The synchronous version of discoverExportedForeignKeys
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @param {Object} options The options
|
* @param {Object} options The options
|
||||||
|
@ -1275,11 +1331,13 @@ function fromDBName(dbName, camelCase) {
|
||||||
* }
|
* }
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* @param {String} modelName The model name
|
* @param {String} tableName The name of the table to discover.
|
||||||
* @param {Object} [options] The options
|
* @options {Object} [options] An options object typically used for Relations.
|
||||||
|
* See [Relations](./Model-definition-JSON-file.html#relations) for more information.
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
|
* @returns {Promise} A promise object that resolves to a single schema.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverSchema = function(modelName, options, cb) {
|
DataSource.prototype.discoverSchema = function(tableName, options, cb) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
|
||||||
if (!cb && 'function' === typeof options) {
|
if (!cb && 'function' === typeof options) {
|
||||||
|
@ -1291,7 +1349,7 @@ DataSource.prototype.discoverSchema = function(modelName, options, cb) {
|
||||||
|
|
||||||
cb = cb || utils.createPromiseCallback();
|
cb = cb || utils.createPromiseCallback();
|
||||||
|
|
||||||
this.discoverSchemas(modelName, options, function(err, schemas) {
|
this.discoverSchemas(tableName, options, function(err, schemas) {
|
||||||
if (err || !schemas) {
|
if (err || !schemas) {
|
||||||
cb && cb(err, schemas);
|
cb && cb(err, schemas);
|
||||||
return;
|
return;
|
||||||
|
@ -1305,17 +1363,18 @@ DataSource.prototype.discoverSchema = function(modelName, options, cb) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Discover schema from a given modelName/view.
|
* Discover schema from a given tableName/viewName.
|
||||||
*
|
*
|
||||||
* @param {String} modelName The model name.
|
* @param {String} tableName The table name.
|
||||||
* @options {Object} [options] Options; see below.
|
* @options {Object} [options] Options; see below.
|
||||||
* @property {String} owner|schema Database owner or schema name.
|
* @property {String} owner|schema Database owner or schema name.
|
||||||
* @property {Boolean} relations True if relations (primary key/foreign key) are navigated; false otherwise.
|
* @property {Boolean} relations True if relations (primary key/foreign key) are navigated; false otherwise.
|
||||||
* @property {Boolean} all True if all owners are included; false otherwise.
|
* @property {Boolean} all True if all owners are included; false otherwise.
|
||||||
* @property {Boolean} views True if views are included; false otherwise.
|
* @property {Boolean} views True if views are included; false otherwise.
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
|
* @returns {Promise} A promise object that resolves to an array of schemas.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
DataSource.prototype.discoverSchemas = function(tableName, options, cb) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
|
||||||
if (!cb && 'function' === typeof options) {
|
if (!cb && 'function' === typeof options) {
|
||||||
|
@ -1352,17 +1411,17 @@ DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
||||||
|
|
||||||
if (this.connector.discoverSchemas) {
|
if (this.connector.discoverSchemas) {
|
||||||
// Delegate to the connector implementation
|
// Delegate to the connector implementation
|
||||||
this.connector.discoverSchemas(modelName, options, cb);
|
this.connector.discoverSchemas(tableName, options, cb);
|
||||||
return cb.promise;
|
return cb.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
var tasks = [
|
var tasks = [
|
||||||
this.discoverModelProperties.bind(this, modelName, options),
|
this.discoverModelProperties.bind(this, tableName, options),
|
||||||
this.discoverPrimaryKeys.bind(this, modelName, options)];
|
this.discoverPrimaryKeys.bind(this, tableName, options)];
|
||||||
|
|
||||||
var followingRelations = options.associations || options.relations;
|
var followingRelations = options.associations || options.relations;
|
||||||
if (followingRelations) {
|
if (followingRelations) {
|
||||||
tasks.push(this.discoverForeignKeys.bind(this, modelName, options));
|
tasks.push(this.discoverForeignKeys.bind(this, tableName, options));
|
||||||
}
|
}
|
||||||
|
|
||||||
async.parallel(tasks, function(err, results) {
|
async.parallel(tasks, function(err, results) {
|
||||||
|
@ -1373,7 +1432,7 @@ DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
||||||
|
|
||||||
var columns = results[0];
|
var columns = results[0];
|
||||||
if (!columns || columns.length === 0) {
|
if (!columns || columns.length === 0) {
|
||||||
cb(new Error(g.f('Table \'%s\' does not exist.', modelName)));
|
cb(new Error(g.f('Table \'%s\' does not exist.', tableName)));
|
||||||
return cb.promise;
|
return cb.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1389,7 +1448,7 @@ DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var schema = {
|
var schema = {
|
||||||
name: nameMapper('table', modelName),
|
name: nameMapper('table', tableName),
|
||||||
options: {
|
options: {
|
||||||
idInjection: false, // DO NOT add id property
|
idInjection: false, // DO NOT add id property
|
||||||
},
|
},
|
||||||
|
@ -1398,7 +1457,7 @@ DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
||||||
|
|
||||||
schema.options[dbType] = {
|
schema.options[dbType] = {
|
||||||
schema: columns[0].owner,
|
schema: columns[0].owner,
|
||||||
table: modelName,
|
table: tableName,
|
||||||
};
|
};
|
||||||
|
|
||||||
columns.forEach(function(item) {
|
columns.forEach(function(item) {
|
||||||
|
@ -1433,7 +1492,7 @@ DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
||||||
|
|
||||||
// Add current modelName to the visited tables
|
// Add current modelName to the visited tables
|
||||||
options.visited = options.visited || {};
|
options.visited = options.visited || {};
|
||||||
var schemaKey = columns[0].owner + '.' + modelName;
|
var schemaKey = columns[0].owner + '.' + tableName;
|
||||||
if (!options.visited.hasOwnProperty(schemaKey)) {
|
if (!options.visited.hasOwnProperty(schemaKey)) {
|
||||||
if (self.settings.debug) {
|
if (self.settings.debug) {
|
||||||
debug('Adding schema for ' + schemaKey);
|
debug('Adding schema for ' + schemaKey);
|
||||||
|
@ -1507,13 +1566,14 @@ DataSource.prototype.discoverSchemas = function(modelName, options, cb) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Discover schema from a given table/view synchronously
|
* Discover schema from a given table/view synchronously
|
||||||
*
|
* FIXME Obsolete?
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @options {Object} [options] Options; see below.
|
* @options {Object} [options] Options; see below.
|
||||||
* @property {String} owner|schema Database owner or schema name.
|
* @property {String} owner|schema Database owner or schema name.
|
||||||
* @property {Boolean} relations True if relations (primary key/foreign key) are navigated; false otherwise.
|
* @property {Boolean} relations True if relations (primary key/foreign key) are navigated; false otherwise.
|
||||||
* @property {Boolean} all True if all owners are included; false otherwise.
|
* @property {Boolean} all True if all owners are included; false otherwise.
|
||||||
* @property {Boolean} views True if views are included; false otherwise.
|
* @property {Boolean} views True if views are included; false otherwise.
|
||||||
|
* @returns {Array<Object>} An array of schema definition objects.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverSchemasSync = function(modelName, options) {
|
DataSource.prototype.discoverSchemasSync = function(modelName, options) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -1660,6 +1720,8 @@ DataSource.prototype.discoverSchemasSync = function(modelName, options) {
|
||||||
* @property {Boolean} all True if all owners are included; false otherwise.
|
* @property {Boolean} all True if all owners are included; false otherwise.
|
||||||
* @property {Boolean} views True if views are included; false otherwise.
|
* @property {Boolean} views True if views are included; false otherwise.
|
||||||
* @param {Function} [cb] The callback function
|
* @param {Function} [cb] The callback function
|
||||||
|
* @returns {Promise} A Promise object that resolves with a map of model
|
||||||
|
* constructors, keyed by model name
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverAndBuildModels = function(modelName, options, cb) {
|
DataSource.prototype.discoverAndBuildModels = function(modelName, options, cb) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -1689,7 +1751,7 @@ DataSource.prototype.discoverAndBuildModels = function(modelName, options, cb) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Discover and build models from the given owner/modelName synchronously.
|
* Discover and build models from the given owner/modelName synchronously.
|
||||||
*
|
* FIXME: Obsolete?
|
||||||
* @param {String} modelName The model name.
|
* @param {String} modelName The model name.
|
||||||
* @options {Object} [options] Options; see below.
|
* @options {Object} [options] Options; see below.
|
||||||
* @property {String} owner|schema Database owner or schema name.
|
* @property {String} owner|schema Database owner or schema name.
|
||||||
|
@ -1699,6 +1761,7 @@ DataSource.prototype.discoverAndBuildModels = function(modelName, options, cb) {
|
||||||
|
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name
|
||||||
* @param {Object} [options] The options
|
* @param {Object} [options] The options
|
||||||
|
* @returns {Object} A map of model constructors, keyed by model name
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.discoverAndBuildModelsSync = function(modelName, options) {
|
DataSource.prototype.discoverAndBuildModelsSync = function(modelName, options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
@ -1725,7 +1788,7 @@ DataSource.prototype.discoverAndBuildModelsSync = function(modelName, options) {
|
||||||
* @param {String} name Name of the model
|
* @param {String} name Name of the model
|
||||||
* @param {Object} json The json object representing a model instance
|
* @param {Object} json The json object representing a model instance
|
||||||
* @param {Object} options Options
|
* @param {Object} options Options
|
||||||
* @returns {*}
|
* @returns {Model} A Model class
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.buildModelFromInstance = function(name, json, options) {
|
DataSource.prototype.buildModelFromInstance = function(name, json, options) {
|
||||||
// Introspect the JSON document to generate a schema
|
// Introspect the JSON document to generate a schema
|
||||||
|
@ -1736,9 +1799,11 @@ DataSource.prototype.buildModelFromInstance = function(name, json, options) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether migrations needed
|
* Check whether or not migrations are required for the database schema to match
|
||||||
* This method applies only to SQL connectors.
|
* the Model definitions attached to the DataSource.
|
||||||
|
* Note: This method applies only to SQL connectors.
|
||||||
* @param {String|String[]} [models] A model name or an array of model names. If not present, apply to all models.
|
* @param {String|String[]} [models] A model name or an array of model names. If not present, apply to all models.
|
||||||
|
* @returns {Boolean} Whether or not migrations are required.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.isActual = function(models, cb) {
|
DataSource.prototype.isActual = function(models, cb) {
|
||||||
this.freeze();
|
this.freeze();
|
||||||
|
@ -1759,7 +1824,7 @@ DataSource.prototype.isActual = function(models, cb) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log benchmarked message. Do not redefine this method, if you need to grab
|
* Log benchmarked message. Do not redefine this method, if you need to grab
|
||||||
* chema logs, use `dataSource.on('log', ...)` emitter event
|
* schema logs, use `dataSource.on('log', ...)` emitter event
|
||||||
*
|
*
|
||||||
* @private used by connectors
|
* @private used by connectors
|
||||||
*/
|
*/
|
||||||
|
@ -1770,6 +1835,9 @@ DataSource.prototype.log = function(sql, t) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Freeze dataSource. Behavior depends on connector
|
* Freeze dataSource. Behavior depends on connector
|
||||||
|
* REVIEW: Raymond, can you give example of what behavior(s) are typically
|
||||||
|
* expected here? I understand that it's connector-specific, but surely there's
|
||||||
|
* a common goal here.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.freeze = function freeze() {
|
DataSource.prototype.freeze = function freeze() {
|
||||||
if (!this.connector) {
|
if (!this.connector) {
|
||||||
|
@ -1784,8 +1852,9 @@ DataSource.prototype.freeze = function freeze() {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return table name for specified `modelName`
|
* Return table name for specified `modelName`.
|
||||||
* @param {String} modelName The model name
|
* @param {String} modelName The model name.
|
||||||
|
* @returns {String} The table name.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.tableName = function(modelName) {
|
DataSource.prototype.tableName = function(modelName) {
|
||||||
return this.getModelDefinition(modelName).tableName(this.connector.name);
|
return this.getModelDefinition(modelName).tableName(this.connector.name);
|
||||||
|
@ -1918,7 +1987,8 @@ DataSource.prototype.defineForeignKey = function defineForeignKey(className, key
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close database connection
|
* Close connection to the DataSource.
|
||||||
|
* REVIEW: Why is this not Promisified like the connect function?
|
||||||
* @param {Function} [cb] The callback function. Optional.
|
* @param {Function} [cb] The callback function. Optional.
|
||||||
*/
|
*/
|
||||||
DataSource.prototype.disconnect = function disconnect(cb) {
|
DataSource.prototype.disconnect = function disconnect(cb) {
|
||||||
|
@ -1939,7 +2009,7 @@ DataSource.prototype.disconnect = function disconnect(cb) {
|
||||||
/**
|
/**
|
||||||
* Copy the model from Master.
|
* Copy the model from Master.
|
||||||
* @param {Function} Master The model constructor
|
* @param {Function} Master The model constructor
|
||||||
* @returns {Function} The copy of the model constructor
|
* @returns {Model} A copy of the Model object constructor
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
|
@ -1979,7 +2049,7 @@ DataSource.prototype.copyModel = function copyModel(Master) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Run a transaction against the DataSource.
|
||||||
* @returns {EventEmitter}
|
* @returns {EventEmitter}
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
|
@ -2124,9 +2194,10 @@ DataSource.prototype.isRelational = function() {
|
||||||
return this.connector && this.connector.relational;
|
return this.connector && this.connector.relational;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/**
|
||||||
* Check if the data source is ready.
|
* Check if the data source is ready.
|
||||||
* Returns a Boolean value.
|
* Returns a Boolean value.
|
||||||
|
* REVIEW: What is "obj" supposed to represent?
|
||||||
* @param {Object} obj ?
|
* @param {Object} obj ?
|
||||||
* @param {Object} args ?
|
* @param {Object} args ?
|
||||||
*/
|
*/
|
||||||
|
@ -2217,6 +2288,8 @@ DataSource.prototype.ping = function(cb) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Define a hidden property
|
* Define a hidden property
|
||||||
|
* REVIEW: Why is a hidden property not writable or enumerable? What
|
||||||
|
* purpose does it serve?
|
||||||
* @param {Object} obj The property owner
|
* @param {Object} obj The property owner
|
||||||
* @param {String} key The property name
|
* @param {String} key The property name
|
||||||
* @param {Mixed} value The default value
|
* @param {Mixed} value The default value
|
||||||
|
|
Loading…
Reference in New Issue