sendou.ink/app/utils/kysely.server.ts
Kalle dd1adad94b
Some checks are pending
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run
BIome v2 upgrade
2025-06-22 16:49:27 +03:00

38 lines
888 B
TypeScript

import { type ColumnType, sql } from "kysely";
import type { Tables } from "~/db/tables";
export const COMMON_USER_FIELDS = [
"User.id",
"User.username",
"User.discordId",
"User.discordAvatar",
"User.customUrl",
] as const;
export type CommonUser = Pick<
Tables["User"],
"id" | "username" | "discordId" | "discordAvatar" | "customUrl"
>;
export const userChatNameColor = sql<
string | null
>`IIF(COALESCE("User"."patronTier", 0) >= 2, "User"."css" ->> 'chat', null)`.as(
"chatNameColor",
);
/** Prevents ParseJSONResultsPlugin from trying to parse this as JSON */
export function unJsonify<T>(value: T) {
if (typeof value !== "string") {
return value;
}
if (value.match(/^[[{]/) === null) {
return value;
}
return `\\${value}`;
}
export type JSONColumnTypeNullable<SelectType extends object | null> =
ColumnType<SelectType | null, string | null, string | null>;