55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import * as Sequelize from 'sequelize'
|
|
|
|
async function up (utils: {
|
|
transaction: Sequelize.Transaction
|
|
queryInterface: Sequelize.QueryInterface
|
|
sequelize: Sequelize.Sequelize
|
|
db: any
|
|
}): Promise<void> {
|
|
for (const column of [ 'filename', 'fileUrl', 'torrentFilename', 'torrentUrl' ]) {
|
|
const data = {
|
|
type: Sequelize.STRING,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
}
|
|
|
|
await utils.queryInterface.addColumn('videoFile', column, data)
|
|
}
|
|
|
|
// Generate filenames for webtorrent files
|
|
{
|
|
const webtorrentQuery = `SELECT "videoFile".id, "video".uuid, "videoFile".resolution, "videoFile".extname ` +
|
|
`FROM video INNER JOIN "videoFile" ON "videoFile"."videoId" = video.id`
|
|
|
|
const query = `UPDATE "videoFile" ` +
|
|
`SET filename = t.uuid || '-' || t.resolution || t.extname, ` +
|
|
`"torrentFilename" = t.uuid || '-' || t.resolution || '.torrent' ` +
|
|
`FROM (${webtorrentQuery}) AS t WHERE t.id = "videoFile"."id"`
|
|
|
|
await utils.sequelize.query(query)
|
|
}
|
|
|
|
// Generate filenames for HLS files
|
|
{
|
|
const hlsQuery = `SELECT "videoFile".id, "video".uuid, "videoFile".resolution, "videoFile".extname ` +
|
|
`FROM video ` +
|
|
`INNER JOIN "videoStreamingPlaylist" ON "videoStreamingPlaylist"."videoId" = video.id ` +
|
|
`INNER JOIN "videoFile" ON "videoFile"."videoStreamingPlaylistId" = "videoStreamingPlaylist".id`
|
|
|
|
const query = `UPDATE "videoFile" ` +
|
|
`SET filename = t.uuid || '-' || t.resolution || '-fragmented' || t.extname, ` +
|
|
`"torrentFilename" = t.uuid || '-' || t.resolution || '-hls.torrent' ` +
|
|
`FROM (${hlsQuery}) AS t WHERE t.id = "videoFile"."id"`
|
|
|
|
await utils.sequelize.query(query)
|
|
}
|
|
}
|
|
|
|
function down (options) {
|
|
throw new Error('Not implemented.')
|
|
}
|
|
|
|
export {
|
|
up,
|
|
down
|
|
}
|