summary refs log tree commit diff
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-04-19 01:24:51 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-04-19 01:24:51 +1000
commit4c6b1e8e16a1f44dc7c5f9abd74c0615d0e4e51c (patch)
treef9d9858cc5e2ffab76aa2f15d8d99a2facd35902
parentEnforce theme_colors to be ints (diff)
downloadserver-4c6b1e8e16a1f44dc7c5f9abd74c0615d0e4e51c.tar.xz
Fix UserRelationsResponse schema
-rw-r--r--assets/openapi.json53
-rw-r--r--assets/schemas.json52
-rw-r--r--src/api/routes/users/#id/relationships.ts5
-rw-r--r--src/util/schemas/UserRelationsResponse.ts27
-rw-r--r--src/util/schemas/responses/UserRelationsResponse.ts16
5 files changed, 63 insertions, 90 deletions
diff --git a/assets/openapi.json b/assets/openapi.json
index 64dc53c0..2dc78741 100644
--- a/assets/openapi.json
+++ b/assets/openapi.json
@@ -7606,33 +7606,34 @@
                 ]
             },
             "UserRelationsResponse": {
-                "type": "object",
-                "properties": {
-                    "object": {
-                        "type": "object",
-                        "properties": {
-                            "id": {
-                                "type": "string"
-                            },
-                            "username": {
-                                "type": "string"
-                            },
-                            "avatar": {
-                                "type": "string"
-                            },
-                            "discriminator": {
-                                "type": "string"
-                            },
-                            "public_flags": {
-                                "type": "integer"
-                            }
+                "type": "array",
+                "items": {
+                    "additionalProperties": false,
+                    "type": "object",
+                    "properties": {
+                        "id": {
+                            "type": "string"
                         },
-                        "additionalProperties": false
-                    }
-                },
-                "required": [
-                    "object"
-                ]
+                        "username": {
+                            "type": "string"
+                        },
+                        "discriminator": {
+                            "type": "string"
+                        },
+                        "avatar": {
+                            "type": "string"
+                        },
+                        "public_flags": {
+                            "type": "integer"
+                        }
+                    },
+                    "required": [
+                        "discriminator",
+                        "id",
+                        "public_flags",
+                        "username"
+                    ]
+                }
             },
             "WebAuthnCreateResponse": {
                 "type": "object",
diff --git a/assets/schemas.json b/assets/schemas.json
index 2c2abe8f..dc25cacd 100644
--- a/assets/schemas.json
+++ b/assets/schemas.json
@@ -485211,34 +485211,34 @@
         "$schema": "http://json-schema.org/draft-07/schema#"
     },
     "UserRelationsResponse": {
-        "type": "object",
-        "properties": {
-            "object": {
-                "type": "object",
-                "properties": {
-                    "id": {
-                        "type": "string"
-                    },
-                    "username": {
-                        "type": "string"
-                    },
-                    "avatar": {
-                        "type": "string"
-                    },
-                    "discriminator": {
-                        "type": "string"
-                    },
-                    "public_flags": {
-                        "type": "integer"
-                    }
+        "type": "array",
+        "items": {
+            "additionalProperties": false,
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "string"
                 },
-                "additionalProperties": false
-            }
+                "username": {
+                    "type": "string"
+                },
+                "discriminator": {
+                    "type": "string"
+                },
+                "avatar": {
+                    "type": "string"
+                },
+                "public_flags": {
+                    "type": "integer"
+                }
+            },
+            "required": [
+                "discriminator",
+                "id",
+                "public_flags",
+                "username"
+            ]
         },
-        "additionalProperties": false,
-        "required": [
-            "object"
-        ],
         "definitions": {
             "ChannelPermissionOverwriteType": {
                 "enum": [
diff --git a/src/api/routes/users/#id/relationships.ts b/src/api/routes/users/#id/relationships.ts
index 7accad3b..3737ca00 100644
--- a/src/api/routes/users/#id/relationships.ts
+++ b/src/api/routes/users/#id/relationships.ts
@@ -17,7 +17,7 @@
 */
 
 import { route } from "@spacebar/api";
-import { User } from "@spacebar/util";
+import { User, UserRelationsResponse } from "@spacebar/util";
 import { Request, Response, Router } from "express";
 
 const router: Router = Router();
@@ -33,7 +33,8 @@ router.get(
 		},
 	}),
 	async (req: Request, res: Response) => {
-		const mutual_relations: object[] = [];
+		const mutual_relations: UserRelationsResponse = [];
+
 		const requested_relations = await User.findOneOrFail({
 			where: { id: req.params.id },
 			relations: ["relationships"],
diff --git a/src/util/schemas/UserRelationsResponse.ts b/src/util/schemas/UserRelationsResponse.ts
deleted file mode 100644
index 38507420..00000000
--- a/src/util/schemas/UserRelationsResponse.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-	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 <https://www.gnu.org/licenses/>.
-*/
-
-export interface UserRelationsResponse {
-	object: {
-		id?: string;
-		username?: string;
-		avatar?: string;
-		discriminator?: string;
-		public_flags?: number;
-	};
-}
diff --git a/src/util/schemas/responses/UserRelationsResponse.ts b/src/util/schemas/responses/UserRelationsResponse.ts
index 1ec15eca..e784cafb 100644
--- a/src/util/schemas/responses/UserRelationsResponse.ts
+++ b/src/util/schemas/responses/UserRelationsResponse.ts
@@ -1,9 +1,7 @@
-export interface UserRelationsResponse {
-	object: {
-		id?: string;
-		username?: string;
-		avatar?: string;
-		discriminator?: string;
-		public_flags?: number;
-	};
-}
+import { User } from "@spacebar/util";
+
+export type UserRelationsResponse = (Pick<User, "id"> &
+	Pick<User, "username"> &
+	Pick<User, "discriminator"> &
+	Pick<User, "avatar"> &
+	Pick<User, "public_flags">)[];