From df794695ffd208f5607829ea64b2430f1ba56b00 Mon Sep 17 00:00:00 2001 From: TomatoCake <60300461+DEVTomatoCake@users.noreply.github.com> Date: Tue, 13 Aug 2024 21:43:19 +0200 Subject: [PATCH] Icon for discovery categories & fix "primary_only" --- src/api/routes/discovery.ts | 10 +++++----- src/util/entities/Categories.ts | 10 +++++++--- .../1723577874393-discoveryCategoryIcon.ts | 15 +++++++++++++++ .../mysql/1723577874393-discoveryCategoryIcon.ts | 15 +++++++++++++++ .../1723577874393-discoveryCategoryIcon.ts | 13 +++++++++++++ 5 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 src/util/migration/mariadb/1723577874393-discoveryCategoryIcon.ts create mode 100644 src/util/migration/mysql/1723577874393-discoveryCategoryIcon.ts create mode 100644 src/util/migration/postgres/1723577874393-discoveryCategoryIcon.ts diff --git a/src/api/routes/discovery.ts b/src/api/routes/discovery.ts index a045c191..dd3cc15d 100644 --- a/src/api/routes/discovery.ts +++ b/src/api/routes/discovery.ts @@ -1,17 +1,17 @@ /* Spacebar: A FOSS re-implementation and extension of the Discord.com backend. Copyright (C) 2023 Spacebar and Spacebar Contributors - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ @@ -39,8 +39,8 @@ router.get( const { primary_only } = req.query; const out = primary_only - ? await Categories.find() - : await Categories.find({ where: { is_primary: true } }); + ? await Categories.find({ where: { is_primary: true } }) + : await Categories.find(); res.send(out); }, diff --git a/src/util/entities/Categories.ts b/src/util/entities/Categories.ts index bba1bfa7..13d969de 100644 --- a/src/util/entities/Categories.ts +++ b/src/util/entities/Categories.ts @@ -1,17 +1,17 @@ /* Spacebar: A FOSS re-implementation and extension of the Discord.com backend. Copyright (C) 2023 Spacebar and Spacebar Contributors - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ @@ -46,6 +46,10 @@ export class Categories extends BaseClassWithoutId { @Column({ type: "simple-json" }) localizations: string; + // Whether to show the category prominently (e.g. in a sidebar) instead of only secondary (e.g. in search results) @Column({ nullable: true }) is_primary: boolean; + + @Column({ nullable: true }) + icon?: string; } diff --git a/src/util/migration/mariadb/1723577874393-discoveryCategoryIcon.ts b/src/util/migration/mariadb/1723577874393-discoveryCategoryIcon.ts new file mode 100644 index 00000000..18bc0a77 --- /dev/null +++ b/src/util/migration/mariadb/1723577874393-discoveryCategoryIcon.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class DiscoveryCategoryIcon1723577874393 implements MigrationInterface { + name = "DiscoveryCategoryIcon1723577874393"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + "ALTER TABLE `categories` ADD `icon` text NULL", + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query("ALTER TABLE `categories` DROP COLUMN `icon`"); + } +} diff --git a/src/util/migration/mysql/1723577874393-discoveryCategoryIcon.ts b/src/util/migration/mysql/1723577874393-discoveryCategoryIcon.ts new file mode 100644 index 00000000..18bc0a77 --- /dev/null +++ b/src/util/migration/mysql/1723577874393-discoveryCategoryIcon.ts @@ -0,0 +1,15 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class DiscoveryCategoryIcon1723577874393 implements MigrationInterface { + name = "DiscoveryCategoryIcon1723577874393"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + "ALTER TABLE `categories` ADD `icon` text NULL", + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query("ALTER TABLE `categories` DROP COLUMN `icon`"); + } +} diff --git a/src/util/migration/postgres/1723577874393-discoveryCategoryIcon.ts b/src/util/migration/postgres/1723577874393-discoveryCategoryIcon.ts new file mode 100644 index 00000000..29b4138a --- /dev/null +++ b/src/util/migration/postgres/1723577874393-discoveryCategoryIcon.ts @@ -0,0 +1,13 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class DiscoveryCategoryIcon1723577874393 implements MigrationInterface { + name = "DiscoveryCategoryIcon1723577874393"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query("ALTER TABLE categories ADD icon text NULL"); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query("ALTER TABLE categories DROP COLUMN icon"); + } +}