1 import { AllowNull, BelongsToMany, Column, CreatedAt, Model, Table, UpdatedAt } from 'sequelize-typescript'
2 import { Transaction } from 'sequelize/types'
3 import { MTracker } from '@server/types/models/server/tracker'
4 import { VideoModel } from '../video/video'
5 import { VideoTrackerModel } from './video-tracker'
16 export class TrackerModel extends Model {
28 @BelongsToMany(() => VideoModel, {
29 foreignKey: 'trackerId',
30 through: () => VideoTrackerModel,
35 static listUrlsByVideoId (videoId: number) {
40 model: VideoModel.unscoped(),
42 where: { id: videoId }
47 return TrackerModel.findAll(query)
48 .then(rows => rows.map(rows => rows.url))
51 static findOrCreateTrackers (trackers: string[], transaction: Transaction): Promise<MTracker[]> {
52 if (trackers === null) return Promise.resolve([])
54 const tasks: Promise<MTracker>[] = []
55 trackers.forEach(tracker => {
66 const promise = TrackerModel.findOrCreate<MTracker>(query)
67 .then(([ trackerInstance ]) => trackerInstance)
71 return Promise.all(tasks)