/** @class Projection * * A Projection describes the projection of a domain object in the application. * A Projection specifies the complete set of fields and relationships to be * instantiated when the operation with which it is used is executed. * * A *default* Projection is one where each field is specified. * */ Projection = { domainObject : "" , /** function */ error : "", /** error report for this projection */ fields : "" , /** field names */ relationships : null /** relationships, which consist of a name and projection */ }; /** Projection constructor * * @class Projection * @constructor * @param {function} [constructor] */ function Projection(constructor) {}; /***** Projection methods -------------------- *****/ /* @method addFields addFields(fields) IMMEDIATE Add fields by name to the projection @param fields String or [String] The fields parameter is the name of a field or an array of field names. It can be a string or an array of strings. Multiple field names are accepted as parameters. @return {Projection} @chainable addFields() returns the current Projection object, so that method invocations can be chained. */ function addFields(fields) {}; /* @method addField ALIAS for addFields for ease of use addField(fields) IMMEDIATE @see addFields Add fields to the projection */ function addField(fields) {}; /* @method addRelationship addRelationship(name, projection) IMMEDIATE Add a relationship to the projection. @param name {String} name of the relationship field in the domain object @param projection {Projection} the projection to be assigned to the relationship @return Projection @chainable */ function addRelationship(name, projection) {}; /* This file is a JavaScript module */ exports.Projection = Projection;