From 2186386cca113506791583cb07d6ccacba7af4e0 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 12 Jun 2018 20:04:58 +0200 Subject: Add concept of video state, and add ability to wait transcoding before publishing a video --- server/initializers/constants.ts | 10 +++- server/initializers/migrations/0220-video-state.ts | 62 ++++++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 server/initializers/migrations/0220-video-state.ts (limited to 'server/initializers') diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 79e4bb7f0..8dbc1b060 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -1,6 +1,6 @@ import { IConfig } from 'config' import { dirname, join } from 'path' -import { JobType, VideoRateType } from '../../shared/models' +import { JobType, VideoRateType, VideoState } from '../../shared/models' import { ActivityPubActorType } from '../../shared/models/activitypub' import { FollowState } from '../../shared/models/actors' import { VideoPrivacy } from '../../shared/models/videos' @@ -14,7 +14,7 @@ let config: IConfig = require('config') // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 215 +const LAST_MIGRATION_VERSION = 220 // --------------------------------------------------------------------------- @@ -326,6 +326,11 @@ const VIDEO_PRIVACIES = { [VideoPrivacy.PRIVATE]: 'Private' } +const VIDEO_STATES = { + [VideoState.PUBLISHED]: 'Published', + [VideoState.TO_TRANSCODE]: 'To transcode' +} + const VIDEO_MIMETYPE_EXT = { 'video/webm': '.webm', 'video/ogg': '.ogv', @@ -493,6 +498,7 @@ export { VIDEO_LANGUAGES, VIDEO_PRIVACIES, VIDEO_LICENCES, + VIDEO_STATES, VIDEO_RATE_TYPES, VIDEO_MIMETYPE_EXT, VIDEO_TRANSCODING_FPS, diff --git a/server/initializers/migrations/0220-video-state.ts b/server/initializers/migrations/0220-video-state.ts new file mode 100644 index 000000000..491702157 --- /dev/null +++ b/server/initializers/migrations/0220-video-state.ts @@ -0,0 +1,62 @@ +import * as Sequelize from 'sequelize' + +async function up (utils: { + transaction: Sequelize.Transaction + queryInterface: Sequelize.QueryInterface + sequelize: Sequelize.Sequelize +}): Promise { + // waitingTranscoding column + { + const data = { + type: Sequelize.BOOLEAN, + allowNull: true, + defaultValue: null + } + await utils.queryInterface.addColumn('video', 'waitTranscoding', data) + } + + { + const query = 'UPDATE video SET "waitTranscoding" = false' + await utils.sequelize.query(query) + } + + { + const data = { + type: Sequelize.BOOLEAN, + allowNull: false, + defaultValue: null + } + await utils.queryInterface.changeColumn('video', 'waitTranscoding', data) + } + + // state + { + const data = { + type: Sequelize.INTEGER, + allowNull: true, + defaultValue: null + } + await utils.queryInterface.addColumn('video', 'state', data) + } + + { + // Published + const query = 'UPDATE video SET "state" = 1' + await utils.sequelize.query(query) + } + + { + const data = { + type: Sequelize.INTEGER, + allowNull: false, + defaultValue: null + } + await utils.queryInterface.changeColumn('video', 'state', data) + } +} + +function down (options) { + throw new Error('Not implemented.') +} + +export { up, down } -- cgit v1.2.3