File: /var/dev/nowruzgan/rest/node_modules/waterline-schema/lib/waterline-schema.js
/**
* Module dependencies
*/
var Schema = require('./waterline-schema/schema');
var ForeignKeys = require('./waterline-schema/foreignKeys');
var JoinTables = require('./waterline-schema/joinTables');
var References = require('./waterline-schema/references');
var Checks = require('./waterline-schema/checks');
// ██╗ ██╗ █████╗ ████████╗███████╗██████╗ ██╗ ██╗███╗ ██╗███████╗
// ██║ ██║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗██║ ██║████╗ ██║██╔════╝
// ██║ █╗ ██║███████║ ██║ █████╗ ██████╔╝██║ ██║██╔██╗ ██║█████╗
// ██║███╗██║██╔══██║ ██║ ██╔══╝ ██╔══██╗██║ ██║██║╚██╗██║██╔══╝
// ╚███╔███╔╝██║ ██║ ██║ ███████╗██║ ██║███████╗██║██║ ╚████║███████╗
// ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝
//
// ███████╗ ██████╗██╗ ██╗███████╗███╗ ███╗ █████╗
// ██╔════╝██╔════╝██║ ██║██╔════╝████╗ ████║██╔══██╗
// ███████╗██║ ███████║█████╗ ██╔████╔██║███████║
// ╚════██║██║ ██╔══██║██╔══╝ ██║╚██╔╝██║██╔══██║
// ███████║╚██████╗██║ ██║███████╗██║ ╚═╝ ██║██║ ██║
// ╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝
//
// Used to build a Waterline Schema object from a set of loaded collections.
// It should normalize attribute definitions and expand out associations. This
// module is used internally to Waterline and provides no benefits outside of
// it. The expanded properties added to associations are not appropriate for use
// directly inside of your Waterline models.
module.exports = function WaterlineSchema(collections, modelDefaults) {
var schema = {};
// Transform Collections into a basic schema
schema = Schema(collections);
// Map out and expand foreign keys on the collection schema attributes
ForeignKeys(schema);
// Build and map any generated join tables on the collection schema
JoinTables(schema, modelDefaults);
// Add References for Has Many Keys
References(schema);
// Run any final sanity checks on the schema
Checks(schema);
return schema;
};