You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
749 B
TypeScript
35 lines
749 B
TypeScript
import { QueryTypes, Sequelize, Transaction } from 'sequelize'
|
|||
|
|||
const updating = new Set<string>()
|
|||
|
|||
// Sequelize always skip the update if we only update updatedAt field
|
|||
async function setAsUpdated (options: {
|
|||
sequelize: Sequelize
|
|||
table: string
|
|||
id: number
|
|||
transaction?: Transaction
|
|||
}) {
|
|||
const { sequelize, table, id, transaction } = options
|
|||
const key = table + '-' + id
|
|||
|
|||
if (updating.has(key)) return
|
|||
updating.add(key)
|
|||
|
|||
try {
|
|||
await sequelize.query(
|
|||
`UPDATE "${table}" SET "updatedAt" = :updatedAt WHERE id = :id`,
|
|||
{
|
|||
replacements: { table, id, updatedAt: new Date() },
|
|||
type: QueryTypes.UPDATE,
|
|||
transaction
|
|||
}
|
|||
)
|
|||
} finally {
|
|||
updating.delete(key)
|
|||
}
|
|||
}
|
|||
|
|||
export {
|
|||
setAsUpdated
|
|||
}
|