import { literal, Op, OrderItem, Sequelize } from 'sequelize'
import validator from 'validator'
+import { forceNumber } from '@shared/core-utils'
type SortType = { sortModel: string, sortValue: string }
return getSort(value, lastSort)
}
+function getChannelSyncSort (value: string): OrderItem[] {
+ const { direction, field } = buildDirectionAndField(value)
+ if (field.toLowerCase() === 'videochannel') {
+ return [
+ [ literal('"VideoChannel.name"'), direction ]
+ ]
+ }
+ return [ [ field, direction ] ]
+}
+
function isOutdated (model: { createdAt: Date, updatedAt: Date }, refreshInterval: number) {
if (!model.createdAt || !model.updatedAt) {
- throw new Error('Miss createdAt & updatedAt attribuets to model')
+ throw new Error('Miss createdAt & updatedAt attributes to model')
}
const now = Date.now()
}
function buildServerIdsFollowedBy (actorId: any) {
- const actorIdNumber = parseInt(actorId + '', 10)
+ const actorIdNumber = forceNumber(actorId)
return '(' +
'SELECT "actor"."serverId" FROM "actorFollow" ' +
function parseAggregateResult (result: any) {
if (!result) return 0
- const total = parseInt(result + '', 10)
+ const total = forceNumber(result)
if (isNaN(total)) return 0
return total
return 0
}
-function createSafeIn (sequelize: Sequelize, stringArr: (string | number)[]) {
- return stringArr.map(t => {
+function createSafeIn (sequelize: Sequelize, toEscape: (string | number)[], additionalUnescaped: string[] = []) {
+ return toEscape.map(t => {
return t === null
? null
: sequelize.escape('' + t)
- }).join(', ')
+ }).concat(additionalUnescaped).join(', ')
}
function buildLocalAccountIdsIn () {
getAdminUsersSort,
getVideoSort,
getBlacklistSort,
+ getChannelSyncSort,
createSimilarityAttribute,
throwIfNotValid,
buildServerIdsFollowedBy,