From 9b3fa8d8441e4dee3bc4a66b722560cf34ac1c39 Mon Sep 17 00:00:00 2001 From: keyan Date: Thu, 31 Mar 2022 11:31:37 -0500 Subject: [PATCH] improve WoT: daily decay and higher interaction divisor --- .gitignore | 1 + worker/trust.js | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index eb9988cb..cdb1c753 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ # misc .DS_Store *.pem +db.sql # debug npm-debug.log* diff --git a/worker/trust.js b/worker/trust.js index adae82d7..4c788a8e 100644 --- a/worker/trust.js +++ b/worker/trust.js @@ -148,7 +148,8 @@ async function getGraph (models) { from ( select id, json_agg(json_build_object('node', oid, 'trust', trust)) as hops from ( - select "ItemAct"."userId" as id, "Item"."userId" as oid, least(${MAX_TRUST}, count(*)/10.0) as trust + select "ItemAct"."userId" as id, "Item"."userId" as oid, least(${MAX_TRUST}, + sum(POWER(.99, EXTRACT(DAY FROM (NOW_UTC() - "ItemAct".created_at))))/42.0) as trust from "ItemAct" join "Item" on "itemId" = "Item".id and "ItemAct"."userId" <> "Item"."userId" where "ItemAct".act = 'VOTE' group by "ItemAct"."userId", "Item"."userId" @@ -167,11 +168,13 @@ async function storeTrust (models, nodeTrust) { } // update the trust of each user in graph - await models.$executeRaw( - `UPDATE users - SET trust = g.trust - FROM (values ${values}) g(id, trust) - WHERE users.id = g.id`) + await models.$transaction([ + models.$executeRaw`UPDATE users SET trust = 0`, + models.$executeRaw( + `UPDATE users + SET trust = g.trust + FROM (values ${values}) g(id, trust) + WHERE users.id = g.id`)]) } module.exports = { trust }