aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/server/api/routers/users.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web/server/api/routers/users.ts')
-rw-r--r--packages/web/server/api/routers/users.ts7
1 files changed, 7 insertions, 0 deletions
diff --git a/packages/web/server/api/routers/users.ts b/packages/web/server/api/routers/users.ts
index 3078a42a..3d5d982d 100644
--- a/packages/web/server/api/routers/users.ts
+++ b/packages/web/server/api/routers/users.ts
@@ -5,6 +5,7 @@ import { z } from "zod";
import { hashPassword } from "@/server/auth";
import { TRPCError } from "@trpc/server";
import { users } from "@hoarder/db/schema";
+import { count } from "drizzle-orm";
export const usersAppRouter = router({
create: publicProcedure
@@ -13,9 +14,13 @@ export const usersAppRouter = router({
z.object({
name: z.string(),
email: z.string(),
+ role: z.enum(["user", "admin"]).nullable(),
}),
)
.mutation(async ({ input, ctx }) => {
+ const [{ count: userCount }] = await ctx.db
+ .select({ count: count() })
+ .from(users);
try {
const result = await ctx.db
.insert(users)
@@ -23,10 +28,12 @@ export const usersAppRouter = router({
name: input.name,
email: input.email,
password: await hashPassword(input.password),
+ role: userCount == 0 ? "admin" : "user",
})
.returning({
name: users.name,
email: users.email,
+ role: users.role,
});
return result[0];
} catch (e) {