54 lines
1.5 KiB
PL/PgSQL
54 lines
1.5 KiB
PL/PgSQL
-- AlterTable
|
|
ALTER TABLE "Item" ADD COLUMN "oldBoost" INTEGER NOT NULL DEFAULT 0;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION expire_boost_jobs()
|
|
RETURNS INTEGER
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
BEGIN
|
|
INSERT INTO pgboss.job (name, data, retrylimit, retrybackoff, startafter, expirein)
|
|
SELECT 'expireBoost', jsonb_build_object('id', "Item".id), 21, true, now(), interval '1 days'
|
|
FROM "Item"
|
|
WHERE "Item".boost > 0 ON CONFLICT DO NOTHING;
|
|
return 0;
|
|
EXCEPTION WHEN OTHERS THEN
|
|
return 0;
|
|
END;
|
|
$$;
|
|
|
|
SELECT expire_boost_jobs();
|
|
DROP FUNCTION IF EXISTS expire_boost_jobs;
|
|
|
|
-- fold all STREAM "ItemAct" into a single row per item (it's defunct)
|
|
INSERT INTO "ItemAct" (created_at, updated_at, msats, act, "itemId", "userId")
|
|
SELECT MAX("ItemAct".created_at), MAX("ItemAct".updated_at), sum("ItemAct".msats), 'BOOST', "ItemAct"."itemId", "ItemAct"."userId"
|
|
FROM "ItemAct"
|
|
WHERE "ItemAct".act = 'STREAM'
|
|
GROUP BY "ItemAct"."itemId", "ItemAct"."userId";
|
|
|
|
-- drop all STREAM "ItemAct" rows
|
|
DELETE FROM "ItemAct"
|
|
WHERE "ItemAct".act = 'STREAM';
|
|
|
|
-- AlterEnum
|
|
ALTER TYPE "InvoiceActionType" ADD VALUE 'BOOST';
|
|
|
|
-- increase boost per vote
|
|
CREATE OR REPLACE VIEW zap_rank_personal_constants AS
|
|
SELECT
|
|
10000.0 AS boost_per_vote,
|
|
1.2 AS vote_power,
|
|
1.3 AS vote_decay,
|
|
3.0 AS age_wait_hours,
|
|
0.5 AS comment_scaler,
|
|
1.2 AS boost_power,
|
|
1.6 AS boost_decay,
|
|
616 AS global_viewer_id,
|
|
interval '7 days' AS item_age_bound,
|
|
interval '7 days' AS user_last_seen_bound,
|
|
0.9 AS max_personal_viewer_vote_ratio,
|
|
0.1 AS min_viewer_votes;
|
|
|
|
DROP FUNCTION IF EXISTS run_auction(item_id INTEGER); |