From ad80bd287260b6ee7c5dc5e3423d66dc271bc1b5 Mon Sep 17 00:00:00 2001 From: JlincFM Date: Wed, 13 May 2026 20:01:34 +0000 Subject: [PATCH] public agreement support for transparency --- src/db/migrations/000013 - public-agreement.sql | 1 + src/modules/core/data/agreement.js | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 src/db/migrations/000013 - public-agreement.sql diff --git a/src/db/migrations/000013 - public-agreement.sql b/src/db/migrations/000013 - public-agreement.sql new file mode 100644 index 0000000..e5fd543 --- /dev/null +++ b/src/db/migrations/000013 - public-agreement.sql @@ -0,0 +1 @@ +ALTER TABLE public.agreement ADD COLUMN public BOOLEAN DEFAULT FALSE; \ No newline at end of file diff --git a/src/modules/core/data/agreement.js b/src/modules/core/data/agreement.js index 4be13e0..05068bd 100644 --- a/src/modules/core/data/agreement.js +++ b/src/modules/core/data/agreement.js @@ -72,8 +72,11 @@ async function getAgreement(client, userId, id, key) { FROM agreement a WHERE ${whereClause} AND ( - a.user_id = $2 - OR a.user_id IS NULL + ( + a.user_id = $2 + OR a.user_id IS NULL + ) + OR a.public IS TRUE ) ` const res = await client.query(sql, [ @@ -169,8 +172,9 @@ async function get(input, userId) { return response; } -async function save(client, userId, agreement) { +async function save(client, userId, agreement, publicAgreement) { await client.query(`BEGIN`); + const isPublic = publicAgreement ? true : false; const res = await client.query(` INSERT INTO agreement ( user_id, @@ -178,6 +182,7 @@ async function save(client, userId, agreement) { parent, agreement_id_uuid, context, + public, created, created_as_ts ) VALUES ( @@ -187,7 +192,8 @@ async function save(client, userId, agreement) { $4, $5, $6, - $7 + $7, + $8 ) RETURNING id; `, [ userId, @@ -195,6 +201,7 @@ async function save(client, userId, agreement) { agreement.parent, agreement.agreementId, agreement["@context"], + isPublic, agreement.created, new Date(agreement.created).toISOString(), ]); @@ -431,7 +438,7 @@ async function create(input, userId, _client, uuid) { if (uuid) { agreement.agreementId = uuid; } - await save(client, userId, agreement); + await save(client, userId, agreement, input.public); response = { message: `created and saved: ${agreement.agreementId}`, data: agreement,