Init commit

This commit is contained in:
ShreejitPanchal
2026-05-19 19:56:02 +08:00
commit 6601501eff
4047 changed files with 2185372 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
import { forceNumber } from '@peertube/peertube-core-utils'
import { AggregateOptions, Attributes, Model, ModelStatic, Op, Sequelize, Transaction, WhereOptions } from 'sequelize'
export async function getNextPositionOf<T extends Model> (options: {
model: ModelStatic<T>
columnName: keyof Attributes<T>
where: WhereOptions<Attributes<T>>
transaction: Transaction
}) {
const { columnName, model, where, transaction } = options
const query: AggregateOptions<number> = {
where,
transaction
}
const position = await model.max(columnName, query)
return position
? position + 1
: 1
}
export function reassignPositionOf<T extends Model> (options: {
model: ModelStatic<T>
columnName: keyof Attributes<T>
where: WhereOptions<Attributes<T>>
transaction: Transaction
firstPosition: number
endPosition: number
newPosition: number
}) {
const { firstPosition, endPosition, newPosition, model, where, columnName, transaction } = options
const query = {
where: {
...where,
[columnName]: {
[Op.gte]: firstPosition,
[Op.lte]: endPosition
}
},
transaction,
validate: false // We use a literal to update the position
}
const escapedColumnName = model.sequelize.escape(columnName as string).replace(/'/g, '')
const positionQuery = Sequelize.literal(`${forceNumber(newPosition)} + "${escapedColumnName}" - ${forceNumber(firstPosition)}`)
return model.update({ [columnName]: positionQuery } as Record<typeof columnName, typeof positionQuery>, query)
}
export function increasePositionOf<T extends Model> (options: {
model: ModelStatic<T>
columnName: keyof Attributes<T>
where: WhereOptions<Attributes<T>>
transaction: Transaction
fromPosition: number
by: number
}) {
const { model, where, transaction, fromPosition, by, columnName } = options
const query = {
where: {
...where,
[columnName]: {
[Op.gte]: fromPosition
}
},
transaction
}
return model.increment({ [columnName]: by } as Record<typeof columnName, number>, query)
}