diff --git a/i18n/locales/en_us.json b/i18n/locales/en_us.json index 196128ed..292affba 100644 --- a/i18n/locales/en_us.json +++ b/i18n/locales/en_us.json @@ -160,6 +160,12 @@ "add": "Add", "cannotUndo": "This action cannot be undone.", "close": "Close", + "components": { + "multiitem": { + "new": "Create new: \"{0}\"", + "placeholder": "Start typing..." + } + }, "create": "Create", "date": "Date", "delete": "Delete", @@ -181,13 +187,7 @@ "servers": "Servers", "srLoading": "Loading…", "tags": "Tags", - "today": "Today", - "components": { - "multiitem": { - "placeholder": "Start typing...", - "new": "Create new: \"{0}\"" - } - } + "today": "Today" }, "drop": { "desc": "An open-source game distribution platform built for speed, flexibility and beauty.", diff --git a/server/api/v1/admin/game/[id]/tags.patch.ts b/server/api/v1/admin/game/[id]/tags.patch.ts index 83f14328..c2999cd4 100644 --- a/server/api/v1/admin/game/[id]/tags.patch.ts +++ b/server/api/v1/admin/game/[id]/tags.patch.ts @@ -16,10 +16,19 @@ export default defineEventHandler(async (h3) => { const game = await prisma.game.findUnique({ where: { id }, - select: { id: true }, + select: { id: true, tags: { select: { id: true } } }, }); if (!game) throw createError({ statusCode: 404, message: "Game not found" }); + const tagSet = new Set(game.tags.map((v) => v.id)); + const toConnect = body.tags.filter((v) => !tagSet.has(v)); + + const bodyTagSet = new Set(body.tags); + const toDisconnect = tagSet + .values() + .filter((v) => !bodyTagSet.has(v)) + .toArray(); + // SAFETY: Okay to disable due to check above // eslint-disable-next-line drop/no-prisma-delete await prisma.game.update({ @@ -28,7 +37,8 @@ export default defineEventHandler(async (h3) => { }, data: { tags: { - connect: body.tags.map((e) => ({ id: e })), + connect: toConnect.map((e) => ({ id: e })), + disconnect: toDisconnect.map((e) => ({ id: e })), }, }, }); diff --git a/server/api/v1/auth/odic/callback.get.ts b/server/api/v1/auth/oidc/callback.get.ts similarity index 100% rename from server/api/v1/auth/odic/callback.get.ts rename to server/api/v1/auth/oidc/callback.get.ts diff --git a/server/api/v1/auth/odic/logout.post.ts b/server/api/v1/auth/oidc/logout.post.ts similarity index 100% rename from server/api/v1/auth/odic/logout.post.ts rename to server/api/v1/auth/oidc/logout.post.ts