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");
+ }
+}