Skip to content

Commit

Permalink
added board categories table, updated relevant queries and tests
Browse files Browse the repository at this point in the history
* transferring overb board categories definitions and queries

* named unnamed category
  • Loading branch information
Reptapog authored Oct 11, 2023
1 parent bfdba50 commit dde9b0c
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 13 deletions.
8 changes: 8 additions & 0 deletions db/init/000_init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,13 @@ CREATE TABLE IF NOT EXISTS content_warnings
);
CREATE UNIQUE INDEX content_warnings_warning on content_warnings(warning);

CREATE TABLE IF NOT EXISTS board_categories
(
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL,
string_id TEXT NOT NULL,
name TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS boards
(
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL,
Expand All @@ -100,6 +107,7 @@ CREATE TABLE IF NOT EXISTS boards
/* Reference to the id of the image on external storage provider. */
avatar_reference_id TEXT,
parent_realm_id BIGINT REFERENCES realms(id) ON DELETE RESTRICT NOT NULL,
board_category_id BIGINT REFERENCES board_categories(id) ON DELETE RESTRICT NOT NULL,
settings JSONB NOT NULL
);
CREATE UNIQUE INDEX boards_string_id on boards(string_id);
Expand Down
29 changes: 18 additions & 11 deletions db/test_db_init/000_insert.sql
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,25 @@ OVERRIDING SYSTEM VALUE VALUES
'We''re very nice here.',
NULL);

INSERT INTO Boards(id, string_id, slug, tagline, avatar_reference_id, parent_realm_id, settings)
INSERT INTO board_categories (id, string_id, name)
OVERRIDING SYSTEM VALUE VALUES
(1, '9449bcab-fa55-4b0e-9ce0-438501e5fa79', 'main'),
(2, 'dc3e5824-5395-4cad-ae90-9bf7efeb3896', 'fandom'),
(3, '6443b26c-9247-4b23-b5df-8752356796ce', 'tests'),
(4, '02852b3d-47d6-42cc-a47e-6924b8a13d28', 'admin');

INSERT INTO Boards(id, string_id, slug, board_category_id, tagline, avatar_reference_id, parent_realm_id, settings)
OVERRIDING SYSTEM VALUE VALUES
(1, '2fb151eb-c600-4fe4-a542-4662487e5496', 'main_street', 'For BobaBoard-related discussions.', 'villains.png', 1, '{ "accentColor": "#ff5252" }'),
(2, 'c6d3d10e-8e49-4d73-b28a-9d652b41beec', 'gore', 'Blood! Blood! Blood!', 'gore.png', 1, '{ "accentColor": "#f96680" }'),
(3, '4b30fb7c-2aca-4333-aa56-ae8623a92b65', 'anime', 'I wish I had a funny one for this.', 'anime.png', 1, '{ "accentColor": "#24d282"}'),
(4, 'db8dc5b3-5b4a-4bfe-a303-e176c9b00b83', 'long', 'A board to test with many posts.', 'onceler-board.png', 1, '{ "accentColor": "#00b8ff"}'),
(5, '0e0d1ee6-f996-4415-89c1-c9dc1fe991dc', 'memes', 'A board to test collections view.', 'kink-meme.png', 1, '{ "accentColor": "#7b00ff"}'),
(6, '2bdce2fa-12e0-461b-b0fb-1a2e67227434', 'muted', 'A board to test for thread muting.', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2Feded338a-e0e5-4a97-a368-5ae525c0eec4?alt=media&token=914f84b7-a581-430e-bb09-695f653e8e02', 1, '{ "accentColor": "#9b433b" }'),
(7, '58a10fba-dd66-4862-83fd-c0a233c59599', 'ssshh', 'A board to test for board muting.', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2F7a4c4b8c-dce4-49ad-b292-f799473fbcd6?alt=media&token=f0aa1b5a-80ba-4c32-8bc3-5aa5633cf4e4', 1, '{ "accentColor": "#00A0B0" }'),
(8, '76ebaab0-6c3e-4d7b-900f-f450625a5ed3','restricted', 'A board to test for logged-in only view', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fgore%2Fe4e263cf-ee98-4902-9c14-c10299210e01.png?alt=media&token=7c170411-9401-4d4e-9f66-5d6dfee2fccd', 1, '{ "accentColor": "#234a69"}'),
(9, 'bb62b150-62ae-40a8-8ce2-7e5cdeae9d0b','delisted', 'A board to test for link-only view', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2Fc3b86805-4df7-4b1a-9fa2-b96b5165a636?alt=media&token=7652d44a-38cb-40cc-82ef-908cd4265840', 1, '{ "accentColor": "#fa8628"}'),
(10, '2895f9c8-8419-4ab8-b33d-3ad18e77a589','MODS', 'HELP! I NEED AN ADULT!', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2Fc3b86805-4df7-4b1a-9fa2-b96b5165a636?alt=media&token=7652d44a-38cb-40cc-82ef-908cd4265840', 2, '{ "accentColor": "#fa8628"}');
(1, '2fb151eb-c600-4fe4-a542-4662487e5496', 'main_street', 1, 'For BobaBoard-related discussions.', 'villains.png', 1, '{ "accentColor": "#ff5252" }'),
(2, 'c6d3d10e-8e49-4d73-b28a-9d652b41beec', 'gore', 2, 'Blood! Blood! Blood!', 'gore.png', 1, '{ "accentColor": "#f96680" }'),
(3, '4b30fb7c-2aca-4333-aa56-ae8623a92b65', 'anime', 2, 'I wish I had a funny one for this.', 'anime.png', 1, '{ "accentColor": "#24d282"}'),
(4, 'db8dc5b3-5b4a-4bfe-a303-e176c9b00b83', 'long', 3, 'A board to test with many posts.', 'onceler-board.png', 1, '{ "accentColor": "#00b8ff"}'),
(5, '0e0d1ee6-f996-4415-89c1-c9dc1fe991dc', 'memes', 2, 'A board to test collections view.', 'kink-meme.png', 1, '{ "accentColor": "#7b00ff"}'),
(6, '2bdce2fa-12e0-461b-b0fb-1a2e67227434', 'muted', 3, 'A board to test for thread muting.', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2Feded338a-e0e5-4a97-a368-5ae525c0eec4?alt=media&token=914f84b7-a581-430e-bb09-695f653e8e02', 1, '{ "accentColor": "#9b433b" }'),
(7, '58a10fba-dd66-4862-83fd-c0a233c59599', 'ssshh', 3, 'A board to test for board muting.', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2F7a4c4b8c-dce4-49ad-b292-f799473fbcd6?alt=media&token=f0aa1b5a-80ba-4c32-8bc3-5aa5633cf4e4', 1, '{ "accentColor": "#00A0B0" }'),
(8, '76ebaab0-6c3e-4d7b-900f-f450625a5ed3','restricted', 3, 'A board to test for logged-in only view', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fgore%2Fe4e263cf-ee98-4902-9c14-c10299210e01.png?alt=media&token=7c170411-9401-4d4e-9f66-5d6dfee2fccd', 1, '{ "accentColor": "#234a69"}'),
(9, 'bb62b150-62ae-40a8-8ce2-7e5cdeae9d0b','delisted', 3, 'A board to test for link-only view', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2Fc3b86805-4df7-4b1a-9fa2-b96b5165a636?alt=media&token=7652d44a-38cb-40cc-82ef-908cd4265840', 1, '{ "accentColor": "#fa8628"}'),
(10, '2895f9c8-8419-4ab8-b33d-3ad18e77a589','MODS', 4, 'HELP! I NEED AN ADULT!', 'https://firebasestorage.googleapis.com/v0/b/bobaboard-fb.appspot.com/o/images%2Fbobaland%2Fc26e8ce9-a547-4ff4-9486-7a2faca4d873%2Fc3b86805-4df7-4b1a-9fa2-b96b5165a636?alt=media&token=7652d44a-38cb-40cc-82ef-908cd4265840', 2, '{ "accentColor": "#fa8628"}');

INSERT INTO board_description_sections (id, string_id, board_id,title, description, "type", "index")
OVERRIDING SYSTEM VALUE VALUES
Expand Down
5 changes: 4 additions & 1 deletion server/boards/sql/all-boards.sql
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ SELECT
boards.tagline,
boards.avatar_reference_id,
boards.settings,
board_categories.string_id as board_categories_external_id,
MAX(posts.last_activity) as last_post_at,
MAX(comments.last_activity) as last_comment_at,
GREATEST(MAX(COMMENTS.last_activity), MAX(posts.last_activity)) AS last_activity_at,
Expand Down Expand Up @@ -107,5 +108,7 @@ LEFT JOIN LATERAL (
AND user_hidden_threads.thread_id IS NULL
AND comments.parent_thread = threads.id) as comments
ON 1=1
JOIN board_categories
on boards.board_category_id = board_categories.id
WHERE $/realm_external_id/ IS NULL OR realms.string_id = $/realm_external_id/
GROUP BY boards.id, user_muted_boards.board_id, ordered_pinned_boards.INDEX, logged_out_restrictions, logged_in_base_restrictions, logged_in_user.id, realms.string_id
GROUP BY boards.id, user_muted_boards.board_id, ordered_pinned_boards.INDEX, logged_out_restrictions, logged_in_base_restrictions, logged_in_user.id, realms.string_id, board_categories.string_id
5 changes: 4 additions & 1 deletion server/boards/sql/board-by-external-id.sql
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ SELECT
boards.tagline,
boards.avatar_reference_id as avatar_url,
boards.settings,
board_categories.string_id as board_categories_external_id,
realms.string_id as realm_external_id,
COALESCE(json_agg(DISTINCT jsonb_build_object(
'id', bds.string_id,
Expand Down Expand Up @@ -80,5 +81,7 @@ FROM boards
ON boards.id = br.board_id
LEFT JOIN logged_in_user
ON 1=1
JOIN board_categories
on boards.board_category_id = board_categories.id
WHERE boards.string_id=${board_id}
GROUP BY boards.id, realms.string_id, umb.user_id, opb.index, br.logged_out_restrictions, br.logged_in_base_restrictions, logged_in_user.id
GROUP BY boards.id, realms.string_id, umb.user_id, opb.index, br.logged_out_restrictions, br.logged_in_base_restrictions, logged_in_user.id, board_categories.string_id
11 changes: 11 additions & 0 deletions server/boards/tests/data-all.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const extractBoardDetails = (boardData: any) => {
slug: boardData.slug,
external_id: boardData.string_id,
realm_external_id: boardData.realm_external_id,
board_categories_external_id: boardData.board_categories_external_id,
tagline: boardData.tagline,
};
};
Expand Down Expand Up @@ -55,6 +56,7 @@ describe("Tests boards queries", () => {
slug: "main_street",
external_id: "2fb151eb-c600-4fe4-a542-4662487e5496",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "9449bcab-fa55-4b0e-9ce0-438501e5fa79",
tagline: "For BobaBoard-related discussions.",
},
{
Expand All @@ -65,6 +67,7 @@ describe("Tests boards queries", () => {
slug: "gore",
external_id: "c6d3d10e-8e49-4d73-b28a-9d652b41beec",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "dc3e5824-5395-4cad-ae90-9bf7efeb3896",
tagline: "Blood! Blood! Blood!",
},
{
Expand All @@ -75,6 +78,7 @@ describe("Tests boards queries", () => {
slug: "anime",
external_id: "4b30fb7c-2aca-4333-aa56-ae8623a92b65",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "dc3e5824-5395-4cad-ae90-9bf7efeb3896",
tagline: "I wish I had a funny one for this.",
},
{
Expand All @@ -85,6 +89,7 @@ describe("Tests boards queries", () => {
slug: "long",
external_id: "db8dc5b3-5b4a-4bfe-a303-e176c9b00b83",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "6443b26c-9247-4b23-b5df-8752356796ce",
tagline: "A board to test with many posts.",
},
{
Expand All @@ -95,6 +100,7 @@ describe("Tests boards queries", () => {
slug: "memes",
external_id: "0e0d1ee6-f996-4415-89c1-c9dc1fe991dc",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "dc3e5824-5395-4cad-ae90-9bf7efeb3896",
tagline: "A board to test collections view.",
},
{
Expand All @@ -106,6 +112,7 @@ describe("Tests boards queries", () => {
slug: "muted",
external_id: "2bdce2fa-12e0-461b-b0fb-1a2e67227434",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "6443b26c-9247-4b23-b5df-8752356796ce",
tagline: "A board to test for thread muting.",
},
{
Expand All @@ -117,6 +124,7 @@ describe("Tests boards queries", () => {
slug: "ssshh",
external_id: "58a10fba-dd66-4862-83fd-c0a233c59599",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "6443b26c-9247-4b23-b5df-8752356796ce",
tagline: "A board to test for board muting.",
},
{
Expand All @@ -128,6 +136,7 @@ describe("Tests boards queries", () => {
slug: "restricted",
external_id: "76ebaab0-6c3e-4d7b-900f-f450625a5ed3",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "6443b26c-9247-4b23-b5df-8752356796ce",
tagline: "A board to test for logged-in only view",
},
{
Expand All @@ -139,6 +148,7 @@ describe("Tests boards queries", () => {
slug: "delisted",
external_id: "bb62b150-62ae-40a8-8ce2-7e5cdeae9d0b",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "6443b26c-9247-4b23-b5df-8752356796ce",
tagline: "A board to test for link-only view",
},
]);
Expand Down Expand Up @@ -650,6 +660,7 @@ describe("Tests boards queries", () => {
slug: "main_street",
string_id: "2fb151eb-c600-4fe4-a542-4662487e5496",
realm_external_id: TWISTED_MINDS_REALM_EXTERNAL_ID,
board_categories_external_id: "9449bcab-fa55-4b0e-9ce0-438501e5fa79",
tagline: "For BobaBoard-related discussions.",
logged_in_base_restrictions: [],
logged_out_restrictions: [],
Expand Down

0 comments on commit dde9b0c

Please sign in to comment.