2
1

video-abuse.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
  2. import { VideoDetails } from '@shared/models'
  3. import { VideoModel } from '../video/video'
  4. import { AbuseModel } from './abuse'
  5. @Table({
  6. tableName: 'videoAbuse',
  7. indexes: [
  8. {
  9. fields: [ 'abuseId' ]
  10. },
  11. {
  12. fields: [ 'videoId' ]
  13. }
  14. ]
  15. })
  16. export class VideoAbuseModel extends Model {
  17. @CreatedAt
  18. createdAt: Date
  19. @UpdatedAt
  20. updatedAt: Date
  21. @AllowNull(true)
  22. @Default(null)
  23. @Column
  24. startAt: number
  25. @AllowNull(true)
  26. @Default(null)
  27. @Column
  28. endAt: number
  29. @AllowNull(true)
  30. @Default(null)
  31. @Column(DataType.JSONB)
  32. deletedVideo: VideoDetails
  33. @ForeignKey(() => AbuseModel)
  34. @Column
  35. abuseId: number
  36. @BelongsTo(() => AbuseModel, {
  37. foreignKey: {
  38. allowNull: false
  39. },
  40. onDelete: 'cascade'
  41. })
  42. Abuse: AbuseModel
  43. @ForeignKey(() => VideoModel)
  44. @Column
  45. videoId: number
  46. @BelongsTo(() => VideoModel, {
  47. foreignKey: {
  48. allowNull: true
  49. },
  50. onDelete: 'set null'
  51. })
  52. Video: VideoModel
  53. }