When serving sessions instead of passing the ServerUser directly, convert it to the ApiAccount format.
56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
/*
|
|
SPDX-FileCopyrightText: © 2025 Hornwitser <code@hornwitser.no>
|
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
import type { ServerUser } from "~/server/database"
|
|
import type { ApiAccount, ApiTombstone, ApiUser, ApiUserDetails } from "~/shared/types/api";
|
|
|
|
export function serverUserToApi(user: ServerUser): ApiUser | ApiTombstone {
|
|
if (user.deleted) {
|
|
return {
|
|
id: user.id,
|
|
updatedAt: user.updatedAt,
|
|
deleted: true,
|
|
}
|
|
}
|
|
return {
|
|
id: user.id,
|
|
updatedAt: user.updatedAt,
|
|
type: user.type,
|
|
name: user.name,
|
|
}
|
|
}
|
|
|
|
export function serverUserToApiDetails(user: ServerUser): ApiUserDetails | ApiTombstone {
|
|
if (user.deleted) {
|
|
return {
|
|
id: user.id,
|
|
updatedAt: user.updatedAt,
|
|
deleted: true,
|
|
}
|
|
}
|
|
return {
|
|
id: user.id,
|
|
updatedAt: user.updatedAt,
|
|
interestedEventIds: user.interestedEventIds,
|
|
interestedEventSlotIds: user.interestedEventSlotIds,
|
|
timezone: user.timezone,
|
|
locale: user.locale,
|
|
}
|
|
}
|
|
|
|
export function serverUserToApiAccount(user?: ServerUser): ApiAccount | undefined {
|
|
if (!user || user.deleted) {
|
|
return undefined;
|
|
}
|
|
return {
|
|
id: user.id,
|
|
updatedAt: user.updatedAt,
|
|
type: user.type,
|
|
name: user.name,
|
|
interestedEventIds: user.interestedEventIds,
|
|
interestedEventSlotIds: user.interestedEventSlotIds,
|
|
timezone: user.timezone,
|
|
locale: user.locale,
|
|
}
|
|
}
|