Skip to content

Commit

Permalink
fix: re-add constraints (#597)
Browse files Browse the repository at this point in the history
  • Loading branch information
vasco-santos authored Nov 10, 2021
1 parent f1df5dc commit 596e65c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 35 deletions.
4 changes: 3 additions & 1 deletion packages/db/postgres/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,9 @@ export class PostgresClient {
.upsert(pinSyncRequests.map(psr => ({
pin_id: psr,
inserted_at: new Date().toISOString()
}))) // TODO: On conflict pin ID
})), {
onConflict: 'pin_id'
})

if (error) {
throw new DBError(error)
Expand Down
53 changes: 23 additions & 30 deletions packages/db/postgres/functions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -74,39 +74,32 @@ BEGIN
IF (pin ->> 'status')::pin_status_type != ('Pinned')::pin_status_type THEN
insert into pin_sync_request (pin_id, inserted_at)
values (pin_result_id,
(data ->> 'inserted_at')::timestamptz);
-- ON CONFLICT ( pin_id ) DO NOTHING;
(data ->> 'inserted_at')::timestamptz)
ON CONFLICT ( pin_id ) DO NOTHING;
END IF;
end loop;

inserted_upload_id := (select id
from upload u
where u.user_id = (data ->> 'user_id')::BIGINT
AND u.content_cid = data ->> 'content_cid'
limit 1);

IF (inserted_upload_id IS NULL) THEN
insert into upload (user_id,
auth_key_id,
content_cid,
source_cid,
type,
name,
inserted_at,
updated_at)
values ((data ->> 'user_id')::BIGINT,
(data ->> 'auth_key_id')::BIGINT,
data ->> 'content_cid',
data ->> 'source_cid',
(data ->> 'type')::upload_type,
data ->> 'name',
(data ->> 'inserted_at')::timestamptz,
(data ->> 'updated_at')::timestamptz)
-- ON CONFLICT ( user_id, source_cid ) DO UPDATE
-- SET "updated_at" = (data ->> 'updated_at')::timestamptz,
-- "deleted_at" = null
returning id into inserted_upload_id;
END IF;
insert into upload (user_id,
auth_key_id,
content_cid,
source_cid,
type,
name,
inserted_at,
updated_at)
values ((data ->> 'user_id')::BIGINT,
(data ->> 'auth_key_id')::BIGINT,
data ->> 'content_cid',
data ->> 'source_cid',
(data ->> 'type')::upload_type,
data ->> 'name',
(data ->> 'inserted_at')::timestamptz,
(data ->> 'updated_at')::timestamptz)
ON CONFLICT ( user_id, source_cid ) DO UPDATE
SET "updated_at" = (data ->> 'updated_at')::timestamptz,
"name" = data ->> 'name',
"deleted_at" = null
returning id into inserted_upload_id;

foreach backup_url in array json_arr_to_text_arr(data -> 'backup_urls')
loop
Expand Down
8 changes: 4 additions & 4 deletions packages/db/postgres/tables.sql
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ CREATE TABLE IF NOT EXISTS upload
name TEXT,
inserted_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL,
deleted_at TIMESTAMP WITH TIME ZONE
-- UNIQUE (user_id, source_cid)
deleted_at TIMESTAMP WITH TIME ZONE,
UNIQUE (user_id, source_cid)
);

CREATE INDEX IF NOT EXISTS upload_updated_at_idx ON upload (updated_at);
Expand All @@ -151,7 +151,7 @@ CREATE TABLE IF NOT EXISTS backup
-- Upload that resulted in this backup.
upload_id BIGINT NOT NULL REFERENCES upload (id) ON DELETE CASCADE,
-- Backup url location.
url TEXT NOT NULL,
url TEXT NOT NULL UNIQUE,
inserted_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

Expand All @@ -171,7 +171,7 @@ CREATE TABLE IF NOT EXISTS pin_sync_request
(
id BIGSERIAL PRIMARY KEY,
-- Identifier for the pin to keep in sync.
pin_id BIGINT NOT NULL REFERENCES pin (id),
pin_id BIGINT NOT NULL UNIQUE REFERENCES pin (id),
inserted_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
);

Expand Down

0 comments on commit 596e65c

Please sign in to comment.