Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
21 lines
1.1 KiB
SQL
21 lines
1.1 KiB
SQL
-- Per-user comment read receipts for the app-level /comments view. Row present = the user has
|
|
-- read the comment; marking unread deletes the row. `readAt` is stored so a future "edited
|
|
-- comments become unread again" rule (readAt < updatedAt) is a client-only change. Authors'
|
|
-- own comments get no row: the client treats authorId === me as implicitly read. Written via
|
|
-- Zero custom mutators (comment.markRead / comment.markUnread), unlike comment/comment_thread
|
|
-- which are written by the file's Durable Object.
|
|
|
|
CREATE TABLE comment_read (
|
|
"userId" VARCHAR NOT NULL,
|
|
"commentId" VARCHAR NOT NULL,
|
|
"readAt" BIGINT NOT NULL,
|
|
PRIMARY KEY ("userId", "commentId"),
|
|
CONSTRAINT comment_read_user_id_fkey FOREIGN KEY ("userId") REFERENCES public."user"("id") ON DELETE CASCADE,
|
|
CONSTRAINT comment_read_comment_id_fkey FOREIGN KEY ("commentId") REFERENCES public."comment"("id") ON DELETE CASCADE
|
|
);
|
|
|
|
-- covers the cascade path when comments are deleted
|
|
CREATE INDEX comment_read_comment_id_idx ON comment_read("commentId");
|
|
|
|
ALTER PUBLICATION zero_data ADD TABLE public."comment_read";
|