diff --git a/api/paidAction/boost.js b/api/paidAction/boost.js index af96b4c8..1721a22c 100644 --- a/api/paidAction/boost.js +++ b/api/paidAction/boost.js @@ -67,9 +67,9 @@ export async function onPaid ({ invoice, actId }, { tx }) { }) await tx.$executeRaw` - INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, expirein) + INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, keepuntil) VALUES ('expireBoost', jsonb_build_object('id', ${itemAct.itemId}::INTEGER), 21, true, - now() + interval '30 days', interval '40 days')` + now() + interval '30 days', now() + interval '40 days')` } export async function onFail ({ invoice }, { tx }) { diff --git a/api/paidAction/index.js b/api/paidAction/index.js index 7e65c4eb..caed362a 100644 --- a/api/paidAction/index.js +++ b/api/paidAction/index.js @@ -461,11 +461,11 @@ async function createDbInvoice (actionType, args, context) { // insert a job to check the invoice after it's set to expire await db.$executeRaw` - INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, expirein, priority) + INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, keepuntil, priority) VALUES ('checkInvoice', jsonb_build_object('hash', ${invoice.hash}::TEXT), 21, true, ${expiresAt}::TIMESTAMP WITH TIME ZONE, - ${expiresAt}::TIMESTAMP WITH TIME ZONE - now() + interval '10m', 100)` + ${expiresAt}::TIMESTAMP WITH TIME ZONE + interval '10m', 100)` // the HMAC is only returned during invoice creation // this makes sure that only the person who created this invoice diff --git a/api/paidAction/itemCreate.js b/api/paidAction/itemCreate.js index 0573b80b..7bc0518e 100644 --- a/api/paidAction/itemCreate.js +++ b/api/paidAction/itemCreate.js @@ -216,9 +216,9 @@ export async function onPaid ({ invoice, id }, context) { if (item.boost > 0) { await tx.$executeRaw` - INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, expirein) + INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, keepuntil) VALUES ('expireBoost', jsonb_build_object('id', ${item.id}::INTEGER), 21, true, - now() + interval '30 days', interval '40 days')` + now() + interval '30 days', now() + interval '40 days')` } if (item.parentId) { diff --git a/api/paidAction/itemUpdate.js b/api/paidAction/itemUpdate.js index b27968ce..dc80aefc 100644 --- a/api/paidAction/itemUpdate.js +++ b/api/paidAction/itemUpdate.js @@ -137,15 +137,15 @@ export async function perform (args, context) { }) await tx.$executeRaw` - INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, expirein) + INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, keepuntil) VALUES ('imgproxy', jsonb_build_object('id', ${id}::INTEGER), 21, true, - now() + interval '5 seconds', interval '1 day')` + now() + interval '5 seconds', now() + interval '1 day')` if (newBoost > 0) { await tx.$executeRaw` - INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, expirein) + INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, keepuntil) VALUES ('expireBoost', jsonb_build_object('id', ${id}::INTEGER), 21, true, - now() + interval '30 days', interval '40 days')` + now() + interval '30 days', now() + interval '40 days')` } await performBotBehavior(args, context) diff --git a/api/paidAction/lib/item.js b/api/paidAction/lib/item.js index b7a17a63..879b1cb5 100644 --- a/api/paidAction/lib/item.js +++ b/api/paidAction/lib/item.js @@ -60,23 +60,23 @@ export async function performBotBehavior ({ text, id }, { me, tx }) { const deleteAt = getDeleteAt(text) if (deleteAt) { await tx.$queryRaw` - INSERT INTO pgboss.job (name, data, startafter, expirein) + INSERT INTO pgboss.job (name, data, startafter, keepuntil) VALUES ( 'deleteItem', jsonb_build_object('id', ${id}::INTEGER), ${deleteAt}::TIMESTAMP WITH TIME ZONE, - ${deleteAt}::TIMESTAMP WITH TIME ZONE - now() + interval '1 minute')` + ${deleteAt}::TIMESTAMP WITH TIME ZONE + interval '1 minute')` } const remindAt = getRemindAt(text) if (remindAt) { await tx.$queryRaw` - INSERT INTO pgboss.job (name, data, startafter, expirein) + INSERT INTO pgboss.job (name, data, startafter, keepuntil) VALUES ( 'reminder', jsonb_build_object('itemId', ${id}::INTEGER, 'userId', ${userId}::INTEGER), ${remindAt}::TIMESTAMP WITH TIME ZONE, - ${remindAt}::TIMESTAMP WITH TIME ZONE - now() + interval '1 minute')` + ${remindAt}::TIMESTAMP WITH TIME ZONE + interval '1 minute')` await tx.reminder.create({ data: { userId, diff --git a/prisma/migrations/20250103011357_fix_expireboost_keepuntil/migration.sql b/prisma/migrations/20250103011357_fix_expireboost_keepuntil/migration.sql new file mode 100644 index 00000000..a67aac42 --- /dev/null +++ b/prisma/migrations/20250103011357_fix_expireboost_keepuntil/migration.sql @@ -0,0 +1,4 @@ +-- fix existing boost jobs +UPDATE pgboss.job +SET keepuntil = startafter + interval '10 days' +WHERE name = 'expireBoost' AND state = 'created'; \ No newline at end of file