Fix last commit
authorChocobozzz <me@florianbigard.com>
Thu, 26 Jul 2018 08:45:10 +0000 (10:45 +0200)
committerChocobozzz <me@florianbigard.com>
Thu, 26 Jul 2018 09:02:04 +0000 (11:02 +0200)
server/helpers/custom-validators/videos.ts
server/helpers/utils.ts
server/initializers/database.ts
server/initializers/migrations/0055-video-uuid.ts
server/lib/activitypub/videos.ts
server/lib/redis.ts
server/models/migrations/index.ts
server/models/utils.ts
server/models/video/video-comment.ts

index 70904af0c74509b8fb4c0b8a3244f7d5ccc3b201..338c96582e49f13750a0dfb6b02275ba8f02018f 100644 (file)
@@ -110,7 +110,7 @@ function isScheduleVideoUpdatePrivacyValid (value: number) {
     )
 }
 
-function isVideoFileInfoHashValid (value: string) {
+function isVideoFileInfoHashValid (value: string | null | undefined) {
   return exists(value) && validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.INFO_HASH)
 }
 
@@ -158,7 +158,7 @@ async function isVideoExist (id: string, res: Response) {
     video = await VideoModel.loadByUUIDAndPopulateAccountAndServerAndTags(id)
   }
 
-  if (video && video !== null) {
+  if (video === null) {
     res.status(404)
        .json({ error: 'Video not found' })
        .end()
@@ -173,7 +173,7 @@ async function isVideoExist (id: string, res: Response) {
 async function isVideoChannelOfAccountExist (channelId: number, user: UserModel, res: Response) {
   if (user.hasRight(UserRight.UPDATE_ANY_VIDEO) === true) {
     const videoChannel = await VideoChannelModel.loadAndPopulateAccount(channelId)
-    if (videoChannel && videoChannel !== null) {
+    if (videoChannel === null) {
       res.status(400)
          .json({ error: 'Unknown video video channel on this instance.' })
          .end()
@@ -186,7 +186,7 @@ async function isVideoChannelOfAccountExist (channelId: number, user: UserModel,
   }
 
   const videoChannel = await VideoChannelModel.loadByIdAndAccount(channelId, user.Account.id)
-  if (videoChannel && videoChannel !== null) {
+  if (videoChannel === null) {
     res.status(400)
        .json({ error: 'Unknown video video channel for this account.' })
        .end()
index 7ff1556e3c1620f5aec997ff7c138ea90668c622..cfb4275703280bd87e8a968b19b7f49a4ca46b46 100644 (file)
@@ -144,7 +144,8 @@ let serverActor: ActorModel
 async function getServerActor () {
   if (serverActor === undefined) {
     const application = await ApplicationModel.load()
-    if (!application) throw Error('Could not application.')
+    if (!application) throw Error('Could not load Application from database.')
+
     serverActor = application.Account.Actor
   }
 
index d95e34bce5363fc6fd8262a16d53e5644f9ef4f9..1a9ce5a61d9da80307972e51044267633d118956 100644 (file)
@@ -125,10 +125,11 @@ async function checkPostgresExtensions () {
 }
 
 async function createFunctions () {
-  const query = `CREATE OR REPLACE FUNCTION immutable_unaccent(varchar)
-  RETURNS text AS $$
-    SELECT unaccent($1)
-  $$ LANGUAGE sql IMMUTABLE;`
+  const query = `CREATE OR REPLACE FUNCTION immutable_unaccent(text)
+  RETURNS text AS
+$func$
+SELECT public.unaccent('public.unaccent', $1::text)
+$func$  LANGUAGE sql IMMUTABLE;`
 
   return sequelizeTypescript.query(query, { raw: true })
 }
index 6db25f1938142fc3b2cb460148ee6bec10cad65e..e0f90408076ff964b5ea760f962ff0659fbc6a9f 100644 (file)
@@ -1,5 +1,6 @@
 import * as Sequelize from 'sequelize'
 import * as Promise from 'bluebird'
+import { Migration } from '../../models/migrations'
 
 function up (utils: {
   transaction: Sequelize.Transaction,
@@ -12,7 +13,7 @@ function up (utils: {
     type: Sequelize.UUID,
     defaultValue: Sequelize.UUIDV4,
     allowNull: true
-  }
+  } as Migration.UUID
 
   return q.addColumn('Videos', 'uuid', dataUUID)
     .then(() => {
@@ -24,7 +25,7 @@ function up (utils: {
       return utils.sequelize.query(query)
     })
     .then(() => {
-      dataUUID.defaultValue = null // FIXME:default value cannot be null if string
+      dataUUID.defaultValue = null
 
       return q.changeColumn('Videos', 'uuid', dataUUID)
     })
index 2944cb7295de8512892734561caa6ca0c66cd040..b6f57e0abe884cc6c0945e09021760b624e4f804 100644 (file)
@@ -38,7 +38,7 @@ async function federateVideoIfNeeded (video: VideoModel, isNewVideo: boolean, tr
       }) as VideoCaptionModel[]
     }
 
-    if (isNewVideo === true) {
+    if (isNewVideo) {
       // Now we'll add the video's meta data to our followers
       await sendCreateVideo(video, transaction)
       await shareVideoByServerAndChannel(video, transaction)
@@ -153,9 +153,7 @@ function videoFileActivityUrlToDBAttributes (videoCreated: VideoModel, videoObje
     if (!magnet) throw new Error('Cannot find associated magnet uri for file ' + fileUrl.href)
 
     const parsed = magnetUtil.decode(magnet.href)
-    if (!parsed ||
-        (parsed.infoHash &&
-          (isVideoFileInfoHashValid(parsed.infoHash) === false))) {
+    if (!parsed || isVideoFileInfoHashValid(parsed.infoHash) === false) {
       throw new Error('Cannot parse magnet URI ' + magnet.href)
     }
 
index e547537c33ca602755df4bdaef3e1886f3564fc7..941f7d5574021b5f91b38bc3034276d13fbab30a 100644 (file)
@@ -6,8 +6,8 @@ import { CONFIG, USER_PASSWORD_RESET_LIFETIME, VIDEO_VIEW_LIFETIME } from '../in
 
 type CachedRoute = {
   body: string,
-  contentType: string
-  statusCode: string
+  contentType?: string
+  statusCode?: string
 }
 
 class Redis {
index c2b31b05eb9a9cf9cfd75498c68d73f5ad2f8eeb..24badb166840a9a89673827af501994e6a9b876f 100644 (file)
@@ -16,6 +16,10 @@ declare namespace Migration {
   interface BigInteger extends Sequelize.DefineAttributeColumnOptions {
     defaultValue: Sequelize.DataTypeBigInt | number | null
   }
+
+  interface UUID extends Sequelize.DefineAttributeColumnOptions {
+    defaultValue: Sequelize.DataTypeUUIDv4 | null
+  }
 }
 
 export {
index 393f8f03631f073e3e159db0cd86121ad9d1fdb5..99e14658326adb5fb3fdb5d4dafcae8a625c9832 100644 (file)
@@ -76,7 +76,7 @@ export {
 // ---------------------------------------------------------------------------
 
 function searchTrigramNormalizeValue (value: string) {
-  return Sequelize.fn('lower', Sequelize.fn('unaccent', value))
+  return Sequelize.fn('lower', Sequelize.fn('immutable_unaccent', value))
 }
 
 function searchTrigramNormalizeCol (col: string) {
index 03122dc0312ccabf894aa9c2981daf60e50afc7d..f84c1880c6a564fc11c61959514450e25e121e3c 100644 (file)
@@ -417,7 +417,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
   toActivityPubObject (threadParentComments: VideoCommentModel[]): VideoCommentObject {
     let inReplyTo: string
     // New thread, so in AS we reply to the video
-    if ((this.inReplyToCommentId !== null) || (this.InReplyToVideoComment !== null)) {
+    if (this.inReplyToCommentId === null) {
       inReplyTo = this.Video.url
     } else {
       inReplyTo = this.InReplyToVideoComment.url