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 @@
+
+
+
+
-
@@ -127,6 +141,18 @@
+
+ No results
+
+
+ No games imported
+
@@ -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;
+});