diff --git a/scraper/lib/repository.js b/scraper/lib/repository.js index f3a26a1..1108b3e 100644 --- a/scraper/lib/repository.js +++ b/scraper/lib/repository.js @@ -1,4 +1,5 @@ const moment = require('moment'); +const Promises = require('./promises') const { Sequelize, fn, col, literal } = require('sequelize'); const Op = Sequelize.Op; @@ -201,7 +202,7 @@ function setTorrentSeeders(infoHash, seeders) { function createFile(file) { if (file.id) { - return File.upsert(file); + return File.upsert(file).then(() => upsertSubtitles(file.id, file.subtitles)); } return File.create(file, { include: [Subtitle] }); } @@ -225,6 +226,15 @@ function createSubtitles(infoHash, subtitles) { return Promise.resolve(); } +function upsertSubtitles(file, subtitles) { + if (file.id && subtitles && subtitles.length) { + return Promises.sequence(subtitles + .map(subtitle => ({ fileId: file.id, infoHash: file.infoHash, title: subtitle.path, ...subtitle })) + .map(subtitle => () => Subtitle.upsert(subtitle))); + } + return Promise.resolve(); +} + function getSubtitles(torrent) { return Subtitle.findAll({ where: { infoHash: torrent.infoHash } }); }