From b50e27f4b09a8dcdbf3690a2c827f069efd9d602 Mon Sep 17 00:00:00 2001 From: DecDuck Date: Tue, 17 Dec 2024 20:42:12 +1100 Subject: [PATCH] feat(library admin): client side search --- pages/admin/library/index.vue | 44 +++++++++++++++++++++++++++++-- pages/store/index.vue | 2 ++ server/api/v1/store/developers.ts | 20 ++++++++++++++ server/api/v1/store/publishers.ts | 20 ++++++++++++++ 4 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 server/api/v1/store/developers.ts create mode 100644 server/api/v1/store/publishers.ts diff --git a/pages/admin/library/index.vue b/pages/admin/library/index.vue index 05bae11..d37fe28 100644 --- a/pages/admin/library/index.vue +++ b/pages/admin/library/index.vue @@ -41,12 +41,26 @@ +
+ +
@@ -134,6 +160,7 @@ diff --git a/pages/store/index.vue b/pages/store/index.vue index 33d6167..ef1ee03 100644 --- a/pages/store/index.vue +++ b/pages/store/index.vue @@ -109,6 +109,8 @@ const updated = await $fetch("/api/v1/store/updated", { headers }); const released = await $fetch("/api/v1/store/released", { headers, }); +const developers = await $fetch("/api/v1/store/developers", { headers }); +const publishers = await $fetch("/api/v1/store/publishers", { headers }); useHead({ title: "Store", diff --git a/server/api/v1/store/developers.ts b/server/api/v1/store/developers.ts new file mode 100644 index 0000000..a47f846 --- /dev/null +++ b/server/api/v1/store/developers.ts @@ -0,0 +1,20 @@ +import prisma from "~/server/internal/db/database"; + +export default defineEventHandler(async (h3) => { + const userId = await h3.context.session.getUserId(h3); + if (!userId) throw createError({ statusCode: 403 }); + + const developers = await prisma.developer.findMany({ + include: { + games: true, + }, + orderBy: { + games: { + _count: "desc", + }, + }, + take: 3, + }); + + return developers; +}); diff --git a/server/api/v1/store/publishers.ts b/server/api/v1/store/publishers.ts new file mode 100644 index 0000000..8587336 --- /dev/null +++ b/server/api/v1/store/publishers.ts @@ -0,0 +1,20 @@ +import prisma from "~/server/internal/db/database"; + +export default defineEventHandler(async (h3) => { + const userId = await h3.context.session.getUserId(h3); + if (!userId) throw createError({ statusCode: 403 }); + + const publishers = await prisma.publisher.findMany({ + include: { + games: true, + }, + orderBy: { + games: { + _count: "desc", + }, + }, + take: 4, + }); + + return publishers; +});