stream.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Objection Docs:
  2. // http://vincit.github.io/objection.js/
  3. const db = require('../db');
  4. const helpers = require('../lib/helpers');
  5. const Model = require('objection').Model;
  6. const User = require('./user');
  7. const now = require('./now_helper');
  8. Model.knex(db);
  9. const boolFields = [
  10. 'is_deleted',
  11. 'tcp_forwarding',
  12. 'udp_forwarding',
  13. ];
  14. class Stream extends Model {
  15. $beforeInsert () {
  16. this.created_on = now();
  17. this.modified_on = now();
  18. // Default for meta
  19. if (typeof this.meta === 'undefined') {
  20. this.meta = {};
  21. }
  22. }
  23. $beforeUpdate () {
  24. this.modified_on = now();
  25. }
  26. $parseDatabaseJson(json) {
  27. json = super.$parseDatabaseJson(json);
  28. return helpers.convertIntFieldsToBool(json, boolFields);
  29. }
  30. $formatDatabaseJson(json) {
  31. json = helpers.convertBoolFieldsToInt(json, boolFields);
  32. return super.$formatDatabaseJson(json);
  33. }
  34. static get name () {
  35. return 'Stream';
  36. }
  37. static get tableName () {
  38. return 'stream';
  39. }
  40. static get jsonAttributes () {
  41. return ['meta'];
  42. }
  43. static get relationMappings () {
  44. return {
  45. owner: {
  46. relation: Model.HasOneRelation,
  47. modelClass: User,
  48. join: {
  49. from: 'stream.owner_user_id',
  50. to: 'user.id'
  51. },
  52. modify: function (qb) {
  53. qb.where('user.is_deleted', 0);
  54. }
  55. }
  56. };
  57. }
  58. }
  59. module.exports = Stream;