mirror of
https://github.com/LemmyNet/lemmy.git
synced 2025-01-10 12:05:57 +00:00
0bfbd74e59
* Combined tables try 2
* Finishing up combined report table.
* Fix ts optionals.
* Adding tests, triggers, and history updates for report_combined.
* Adding profile.
* Add cursor pagination to report_combined view (#5244)
* add pagination cursor
* store timestamp instead of id in cursor (partial)
* Revert "store timestamp instead of id in cursor (partial)"
This reverts commit 89359dde4b
.
* use paginated query builder
* Fixing migration and paged API.
* Using dullbananas trigger procedure
* Removing pointless list routes, reorganizing tests.
* Fixing column XOR check.
* Forgot to remove list report actions.
* Cleanup.
* Use internal tagging.
* Fixing api tests.
* Adding a few indexes.
* Fixing migration name.
* Fixing unique constraints.
* Addressing PR comments.
* Start working on profile combined
* Adding views and replaceable schema.
* A few changes to profile view.
- Separating the profile fetch from its combined content fetch.
- Starting to separate saved_only into its own combined view.
* Finishing up combined person_saved and person_content.
* Fixing api tests.
* Moving to api-v4 routes.
* Fixing imports.
* Update crates/db_views/src/report_combined_view.rs
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
* Update crates/db_views/src/report_combined_view.rs
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
* Update crates/db_views/src/report_combined_view.rs
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
* Update migrations/2024-12-02-181601_add_report_combined_table/up.sql
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
* Update migrations/2024-12-02-181601_add_report_combined_table/up.sql
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
* Fixing import and fmt.
* Fixing null types in postgres.
* Comment out err.
* Fixing TS issues.
* Using dullbananas trigger procedure
* Addressing PR comments.
* Removing serialization
* Removing serialization
* Fixing duped trigger.
* Remove saved_only test.
* Remove pointless post_tags types.
* Remove pointless index.
* Changing published to saved for person_saved_combined.
---------
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
67 lines
1.8 KiB
SQL
67 lines
1.8 KiB
SQL
-- Creates combined tables for
|
|
-- person_content: (comment, post)
|
|
-- person_saved: (comment, post)
|
|
CREATE TABLE person_content_combined (
|
|
id serial PRIMARY KEY,
|
|
published timestamptz NOT NULL,
|
|
post_id int UNIQUE REFERENCES post ON UPDATE CASCADE ON DELETE CASCADE,
|
|
comment_id int UNIQUE REFERENCES COMMENT ON UPDATE CASCADE ON DELETE CASCADE,
|
|
-- Make sure only one of the columns is not null
|
|
CHECK (num_nonnulls (post_id, comment_id) = 1)
|
|
);
|
|
|
|
CREATE INDEX idx_person_content_combined_published ON person_content_combined (published DESC, id DESC);
|
|
|
|
-- Updating the history
|
|
INSERT INTO person_content_combined (published, post_id, comment_id)
|
|
SELECT
|
|
published,
|
|
id,
|
|
NULL::int
|
|
FROM
|
|
post
|
|
UNION ALL
|
|
SELECT
|
|
published,
|
|
NULL::int,
|
|
id
|
|
FROM
|
|
comment;
|
|
|
|
-- This one is special, because you use the saved date, not the ordinary published
|
|
CREATE TABLE person_saved_combined (
|
|
id serial PRIMARY KEY,
|
|
saved timestamptz NOT NULL,
|
|
person_id int NOT NULL REFERENCES person ON UPDATE CASCADE ON DELETE CASCADE,
|
|
post_id int UNIQUE REFERENCES post ON UPDATE CASCADE ON DELETE CASCADE,
|
|
comment_id int UNIQUE REFERENCES COMMENT ON UPDATE CASCADE ON DELETE CASCADE,
|
|
-- Make sure only one of the columns is not null
|
|
CHECK (num_nonnulls (post_id, comment_id) = 1)
|
|
);
|
|
|
|
CREATE INDEX idx_person_saved_combined_published ON person_saved_combined (saved DESC, id DESC);
|
|
|
|
CREATE INDEX idx_person_saved_combined ON person_saved_combined (person_id);
|
|
|
|
-- Updating the history
|
|
INSERT INTO person_saved_combined (saved, person_id, post_id, comment_id)
|
|
SELECT
|
|
saved,
|
|
person_id,
|
|
post_id,
|
|
NULL::int
|
|
FROM
|
|
post_actions
|
|
WHERE
|
|
saved IS NOT NULL
|
|
UNION ALL
|
|
SELECT
|
|
saved,
|
|
person_id,
|
|
NULL::int,
|
|
comment_id
|
|
FROM
|
|
comment_actions
|
|
WHERE
|
|
saved IS NOT NULL;
|
|
|