36 lines
1.3 KiB
JavaScript
36 lines
1.3 KiB
JavaScript
|
|
const { sub, add } = require('date-fns');
|
|
|
|
|
|
module.exports = {
|
|
async up(knex) {
|
|
console.log(`MIGRATION-- 2023-12-27-relate-vods-to-streams.js`);
|
|
|
|
// Get all VODs from the database
|
|
const vods = await knex.select('*').from('vods');
|
|
|
|
// For each VOD, associate it with the stream with the nearest date (if not already associated)
|
|
for (const [index, vod] of vods.entries()) {
|
|
const existingAssociation = await knex('vods_stream_links')
|
|
.where({ vod_id: vod.id })
|
|
.first();
|
|
|
|
if (!existingAssociation) {
|
|
// get nearest stream within +/- 3 hours
|
|
const date2 = new Date(vod.date_2);
|
|
const startDate = sub(date2, { hours: 3 })
|
|
const endDate = add(date2, { hours: 3 });
|
|
console.log(`vod.id=${vod.id}, vod.date_2=${vod.date_2}, date2=${date2}, startDate=${startDate}, endDate=${endDate}`)
|
|
const stream = await knex('streams')
|
|
.whereBetween('date', [startDate, endDate])
|
|
|
|
await knex('vods_stream_links').insert({
|
|
stream_id: stream.id,
|
|
vod_id: vod.id,
|
|
vod_order: 1,
|
|
});
|
|
}
|
|
}
|
|
},
|
|
};
|