vk_jobs.cjs
881 Bytes
const tableName = 'vk_jobs'
function buildTable(t) {
t.string('id', 64).primary()
t.string('kind', 32).notNullable()
t.string('ref_id', 64).nullable()
t.datetime('run_at', { precision: 3 }).notNullable()
t.string('status', 16).notNullable()
t.datetime('lease_until', { precision: 3 }).nullable()
t.tinyint('attempts').unsigned().notNullable()
t.string('dedupe_key', 191).notNullable()
t.text('last_error').nullable()
t.datetime('created_at', { precision: 3 }).notNullable()
t.datetime('updated_at', { precision: 3 }).nullable()
t.unique(['dedupe_key'], { indexName: 'uq_vk_jobs_dedupe' })
t.index(['status', 'run_at'], 'idx_vk_jobs_due')
t.check("status in ('pending','running','done','failed')", [], 'ck_vk_jobs_status')
t.check("status <> 'running' or lease_until is not null", [], 'ck_vk_jobs_lease')
}
module.exports = { tableName, buildTable }