Refactor admin procedures into separate files
Extract admin procedures from router.ts into dedicated files under procedures/admin/ with consolidated exports via _routes.ts. Adds shared helper functions for response transformation and includes race condition fixes via transaction-scoped existence checks. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
35
apps/api-server/src/procedures/admin/helpers.ts
Normal file
35
apps/api-server/src/procedures/admin/helpers.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Admin procedure helpers - shared transformation functions
|
||||
*/
|
||||
|
||||
import type { Selectable } from "kysely";
|
||||
import type { Orgs, OrgSites, Users } from "@reviq/db-schema";
|
||||
|
||||
/** Transform org record to API response format */
|
||||
export const toOrgResponse = (org: Selectable<Orgs>) => ({
|
||||
id: org.id,
|
||||
slug: org.slug,
|
||||
displayName: org.display_name,
|
||||
logoUrl: org.logo_url,
|
||||
createdAt: org.created_at,
|
||||
});
|
||||
|
||||
/** Transform user record to API response format */
|
||||
export const toUserResponse = (user: Selectable<Users>) => ({
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
displayName: user.display_name,
|
||||
fullName: user.full_name,
|
||||
phoneNumber: user.phone_number,
|
||||
avatarUrl: user.avatar_url,
|
||||
emailVerified: user.email_verified_at !== null,
|
||||
needsSetup: user.display_name === null,
|
||||
isSuperuser: user.is_superuser,
|
||||
});
|
||||
|
||||
/** Transform site record to API response format */
|
||||
export const toSiteResponse = (site: Selectable<OrgSites>) => ({
|
||||
id: site.id,
|
||||
domain: site.domain,
|
||||
createdAt: site.created_at,
|
||||
});
|
||||
Reference in New Issue
Block a user