You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

29 lines
814 B

import { dbGlobal } from "drizzle-pkg/lib/db";
import { users } from "drizzle-pkg/lib/schema/auth";
import { desc } from "drizzle-orm";
import { requireAdmin } from "#server/utils/admin-guard";
export default defineWrappedResponseHandler(async (event) => {
await requireAdmin(event);
const q = getQuery(event);
const limit = Math.min(Number(q.limit ?? 50) || 50, 100);
const offset = Math.max(Number(q.offset ?? 0) || 0, 0);
const rows = await dbGlobal
.select({
id: users.id,
username: users.username,
email: users.email,
role: users.role,
status: users.status,
publicSlug: users.publicSlug,
createdAt: users.createdAt,
})
.from(users)
.orderBy(desc(users.id))
.limit(limit)
.offset(offset);
return R.success({ users: rows });
});