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,
                });
            }
        }
    },
};