# all files / keystone/lib/list/ register.js

73.08% Statements 19/26
50% Branches 4/8
75% Functions 3/4
76% Lines 19/25

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    411×
    1×
    1×
    1×

    1×
    34×
    34×

    34×

    34×
    26×
    22×

    26×

    34×
    7×

    34×

    34×

    34×
    34×

    1×
     var keystone = require('../../');
    var schemaPlugins = require('../schemaPlugins');
    var UpdateHandler = require('../updateHandler');
    var utils = require('keystone-utils');

    /**
     * Registers the Schema with Mongoose, and the List with Keystone
     *
     * Also adds default fields and virtuals to the schema for the list
     */
    function register () {
    	var list = this;
    	this.schema.virtual('list').get(function () {
    		return list;
    	});
    	Iif (Object.keys(this.relationships).length) {
    		this.schema.methods.getRelated = schemaPlugins.methods.getRelated;
    		this.schema.methods.populateRelated = schemaPlugins.methods.populateRelated;
    		if (!this.schema.options.toObject) this.schema.options.toObject = {};
    		this.schema.options.toObject.transform = schemaPlugins.options.transform;
    	}
    	this.schema.virtual('_').get(function () {
    		if (!this.__methods) {
    			this.__methods = utils.bindMethods(list.underscoreMethods, this);
    		}
    		return this.__methods;
    	});
    	this.schema.method('getUpdateHandler', function (req, res, ops) {
    		return new UpdateHandler(list, this, req, res, ops);
    	});
    	Iif (this.get('inherits')) {
    		this.model = this.get('inherits').model.discriminator(this.key, this.schema);
    	} else {
    		this.model = keystone.mongoose.model(this.key, this.schema);
    	}
    	keystone.list(this);
    	return this;
    }

    module.exports = register;