X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Finitializers%2Fdatabase.ts;h=142063a99a3c43b14a2be29fc55e9f3dea1e16e1;hb=3daaa1927474869f8dbaddd6b94b4c071e314e10;hp=40cd659ab8bdf7d0708c8bb9904413297c1631aa;hpb=0b2f03d3712f438f67eccf86b67acd047284f9b4;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/initializers/database.ts b/server/initializers/database.ts index 40cd659ab..142063a99 100644 --- a/server/initializers/database.ts +++ b/server/initializers/database.ts @@ -21,7 +21,7 @@ import { VideoCommentModel } from '../models/video/video-comment' import { VideoFileModel } from '../models/video/video-file' import { VideoShareModel } from '../models/video/video-share' import { VideoTagModel } from '../models/video/video-tag' -import { CONFIG } from './constants' +import { CONFIG } from './config' import { ScheduleVideoUpdateModel } from '../models/video/schedule-video-update' import { VideoCaptionModel } from '../models/video/video-caption' import { VideoImportModel } from '../models/video/video-import' @@ -31,6 +31,13 @@ import { VideoRedundancyModel } from '../models/redundancy/video-redundancy' import { UserVideoHistoryModel } from '../models/account/user-video-history' import { AccountBlocklistModel } from '../models/account/account-blocklist' import { ServerBlocklistModel } from '../models/server/server-blocklist' +import { UserNotificationModel } from '../models/account/user-notification' +import { UserNotificationSettingModel } from '../models/account/user-notification-setting' +import { VideoStreamingPlaylistModel } from '../models/video/video-streaming-playlist' +import { VideoPlaylistModel } from '../models/video/video-playlist' +import { VideoPlaylistElementModel } from '../models/video/video-playlist-element' +import { ThumbnailModel } from '../models/video/thumbnail' +import { QueryTypes, Transaction } from 'sequelize' require('pg').defaults.parseInt8 = true // Avoid BIGINT to be converted to string @@ -52,8 +59,7 @@ const sequelizeTypescript = new SequelizeTypescript({ max: poolMax }, benchmark: isTestInstance(), - isolationLevel: SequelizeTypescript.Transaction.ISOLATION_LEVELS.SERIALIZABLE, - operatorsAliases: false, + isolationLevel: Transaction.ISOLATION_LEVELS.SERIALIZABLE, logging: (message: string, benchmark: number) => { if (process.env.NODE_DB_LOG === 'false') return @@ -80,6 +86,7 @@ async function initDatabaseModels (silent: boolean) { AccountVideoRateModel, UserModel, VideoAbuseModel, + VideoModel, VideoChangeOwnershipModel, VideoChannelModel, VideoShareModel, @@ -87,7 +94,6 @@ async function initDatabaseModels (silent: boolean) { VideoCaptionModel, VideoBlacklistModel, VideoTagModel, - VideoModel, VideoCommentModel, ScheduleVideoUpdateModel, VideoImportModel, @@ -95,7 +101,13 @@ async function initDatabaseModels (silent: boolean) { VideoRedundancyModel, UserVideoHistoryModel, AccountBlocklistModel, - ServerBlocklistModel + ServerBlocklistModel, + UserNotificationModel, + UserNotificationSettingModel, + VideoStreamingPlaylistModel, + VideoPlaylistModel, + VideoPlaylistElementModel, + ThumbnailModel ]) // Check extensions exist in the database @@ -128,11 +140,16 @@ async function checkPostgresExtensions () { } async function checkPostgresExtension (extension: string) { - const query = `SELECT true AS enabled FROM pg_available_extensions WHERE name = '${extension}' AND installed_version IS NOT NULL;` - const [ res ] = await sequelizeTypescript.query(query, { raw: true }) + const query = `SELECT 1 FROM pg_available_extensions WHERE name = '${extension}' AND installed_version IS NOT NULL;` + const options = { + type: QueryTypes.SELECT as QueryTypes.SELECT, + raw: true + } + + const res = await sequelizeTypescript.query(query, options) - if (!res || res.length === 0 || res[ 0 ][ 'enabled' ] !== true) { - // Try to create the extension ourself + if (!res || res.length === 0) { + // Try to create the extension ourselves try { await sequelizeTypescript.query(`CREATE EXTENSION ${extension};`, { raw: true })