import { type VideoDetails } from '@peertube/peertube-models' import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Table, UpdatedAt } from 'sequelize-typescript' import { VideoModel } from '../video/video.js' import { AbuseModel } from './abuse.js' import { SequelizeModel } from '../shared/index.js' @Table({ tableName: 'videoAbuse', indexes: [ { fields: [ 'abuseId' ] }, { fields: [ 'videoId' ] } ] }) export class VideoAbuseModel extends SequelizeModel { @CreatedAt createdAt: Date @UpdatedAt updatedAt: Date @AllowNull(true) @Default(null) @Column startAt: number @AllowNull(true) @Default(null) @Column endAt: number @AllowNull(true) @Default(null) @Column(DataType.JSONB) deletedVideo: VideoDetails @ForeignKey(() => AbuseModel) @Column abuseId: number @BelongsTo(() => AbuseModel, { foreignKey: { allowNull: false }, onDelete: 'cascade' }) Abuse: Awaited @ForeignKey(() => VideoModel) @Column videoId: number @BelongsTo(() => VideoModel, { foreignKey: { allowNull: true }, onDelete: 'set null' }) Video: Awaited }