| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- // Objection Docs:
 
- // http://vincit.github.io/objection.js/
 
- const db               = require('../db');
 
- const Model            = require('objection').Model;
 
- const User             = require('./user');
 
- const AccessListAuth   = require('./access_list_auth');
 
- const AccessListClient = require('./access_list_client');
 
- Model.knex(db);
 
- class AccessList extends Model {
 
- 	$beforeInsert () {
 
- 		this.created_on  = Model.raw('NOW()');
 
- 		this.modified_on = Model.raw('NOW()');
 
- 		// Default for meta
 
- 		if (typeof this.meta === 'undefined') {
 
- 			this.meta = {};
 
- 		}
 
- 	}
 
- 	$beforeUpdate () {
 
- 		this.modified_on = Model.raw('NOW()');
 
- 	}
 
- 	static get name () {
 
- 		return 'AccessList';
 
- 	}
 
- 	static get tableName () {
 
- 		return 'access_list';
 
- 	}
 
- 	static get jsonAttributes () {
 
- 		return ['meta'];
 
- 	}
 
- 	static get relationMappings () {
 
- 		const ProxyHost = require('./proxy_host');
 
- 		return {
 
- 			owner: {
 
- 				relation:   Model.HasOneRelation,
 
- 				modelClass: User,
 
- 				join:       {
 
- 					from: 'access_list.owner_user_id',
 
- 					to:   'user.id'
 
- 				},
 
- 				modify: function (qb) {
 
- 					qb.where('user.is_deleted', 0);
 
- 					qb.omit(['id', 'created_on', 'modified_on', 'is_deleted', 'email', 'roles']);
 
- 				}
 
- 			},
 
- 			items: {
 
- 				relation:   Model.HasManyRelation,
 
- 				modelClass: AccessListAuth,
 
- 				join:       {
 
- 					from: 'access_list.id',
 
- 					to:   'access_list_auth.access_list_id'
 
- 				},
 
- 				modify: function (qb) {
 
- 					qb.omit(['id', 'created_on', 'modified_on', 'access_list_id', 'meta']);
 
- 				}
 
- 			},
 
- 			clients: {
 
- 				relation:   Model.HasManyRelation,
 
- 				modelClass: AccessListClient,
 
- 				join:       {
 
- 					from: 'access_list.id',
 
- 					to:   'access_list_client.access_list_id'
 
- 				},
 
- 				modify: function (qb) {
 
- 					qb.omit(['id', 'created_on', 'modified_on', 'access_list_id', 'meta']);
 
- 				}
 
- 			},
 
- 			proxy_hosts: {
 
- 				relation:   Model.HasManyRelation,
 
- 				modelClass: ProxyHost,
 
- 				join:       {
 
- 					from: 'access_list.id',
 
- 					to:   'proxy_host.access_list_id'
 
- 				},
 
- 				modify: function (qb) {
 
- 					qb.where('proxy_host.is_deleted', 0);
 
- 					qb.omit(['is_deleted', 'meta']);
 
- 				}
 
- 			}
 
- 		};
 
- 	}
 
- 	get satisfy() {
 
- 		return this.satify_any ? 'satisfy any' : 'satisfy all';
 
- 	}
 
- }
 
- module.exports = AccessList;
 
 
  |