access_list.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Objection Docs:
  2. // http://vincit.github.io/objection.js/
  3. const db = require('../db');
  4. const Model = require('objection').Model;
  5. const User = require('./user');
  6. const AccessListAuth = require('./access_list_auth');
  7. const AccessListClient = require('./access_list_client');
  8. const now = require('./now_helper');
  9. Model.knex(db);
  10. class AccessList extends Model {
  11. $beforeInsert () {
  12. this.created_on = now();
  13. this.modified_on = now();
  14. // Default for meta
  15. if (typeof this.meta === 'undefined') {
  16. this.meta = {};
  17. }
  18. }
  19. $beforeUpdate () {
  20. this.modified_on = now();
  21. }
  22. static get name () {
  23. return 'AccessList';
  24. }
  25. static get tableName () {
  26. return 'access_list';
  27. }
  28. static get jsonAttributes () {
  29. return ['meta'];
  30. }
  31. static get relationMappings () {
  32. const ProxyHost = require('./proxy_host');
  33. return {
  34. owner: {
  35. relation: Model.HasOneRelation,
  36. modelClass: User,
  37. join: {
  38. from: 'access_list.owner_user_id',
  39. to: 'user.id'
  40. },
  41. modify: function (qb) {
  42. qb.where('user.is_deleted', 0);
  43. }
  44. },
  45. items: {
  46. relation: Model.HasManyRelation,
  47. modelClass: AccessListAuth,
  48. join: {
  49. from: 'access_list.id',
  50. to: 'access_list_auth.access_list_id'
  51. }
  52. },
  53. clients: {
  54. relation: Model.HasManyRelation,
  55. modelClass: AccessListClient,
  56. join: {
  57. from: 'access_list.id',
  58. to: 'access_list_client.access_list_id'
  59. }
  60. },
  61. proxy_hosts: {
  62. relation: Model.HasManyRelation,
  63. modelClass: ProxyHost,
  64. join: {
  65. from: 'access_list.id',
  66. to: 'proxy_host.access_list_id'
  67. },
  68. modify: function (qb) {
  69. qb.where('proxy_host.is_deleted', 0);
  70. }
  71. }
  72. };
  73. }
  74. }
  75. module.exports = AccessList;