]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/shared/update.ts
Implement remote runner jobs in server
[github/Chocobozzz/PeerTube.git] / server / models / shared / update.ts
CommitLineData
8c4bbd94 1import { QueryTypes, Sequelize, Transaction } from 'sequelize'
fa47956e 2
0c9668f7
C
3const updating = new Set<string>()
4
fa47956e 5// Sequelize always skip the update if we only update updatedAt field
0c9668f7 6async function setAsUpdated (options: {
8c4bbd94
C
7 sequelize: Sequelize
8 table: string
9 id: number
10 transaction?: Transaction
11}) {
12 const { sequelize, table, id, transaction } = options
0c9668f7
C
13 const key = table + '-' + id
14
15 if (updating.has(key)) return
16 updating.add(key)
8c4bbd94 17
0c9668f7
C
18 try {
19 await sequelize.query(
20 `UPDATE "${table}" SET "updatedAt" = :updatedAt WHERE id = :id`,
21 {
22 replacements: { table, id, updatedAt: new Date() },
23 type: QueryTypes.UPDATE,
24 transaction
25 }
26 )
27 } finally {
28 updating.delete(key)
29 }
fa47956e
C
30}
31
32export {
33 setAsUpdated
34}