style: format all files with Prettier

This commit is contained in:
erio
2026-03-14 03:45:37 +08:00
parent 78ecd206de
commit 886389939e
33 changed files with 1082 additions and 588 deletions

View File

@@ -60,7 +60,15 @@ export async function createOrder(input: CreateOrderInput): Promise<CreateOrderR
const orderType = input.orderType ?? 'balance';
// ── 订阅订单前置校验 ──
let subscriptionPlan: { id: string; groupId: number; price: Prisma.Decimal; validityDays: number; validityUnit: string; name: string; productName: string | null } | null = null;
let subscriptionPlan: {
id: string;
groupId: number;
price: Prisma.Decimal;
validityDays: number;
validityUnit: string;
name: string;
productName: string | null;
} | null = null;
let subscriptionGroupName = '';
// R6: 余额充值禁用检查
@@ -77,11 +85,19 @@ export async function createOrder(input: CreateOrderInput): Promise<CreateOrderR
if (orderType === 'subscription') {
if (!input.planId) {
throw new OrderError('INVALID_INPUT', message(locale, '订阅订单必须指定套餐', 'Subscription order requires a plan'), 400);
throw new OrderError(
'INVALID_INPUT',
message(locale, '订阅订单必须指定套餐', 'Subscription order requires a plan'),
400,
);
}
const plan = await prisma.subscriptionPlan.findUnique({ where: { id: input.planId } });
if (!plan || !plan.forSale) {
throw new OrderError('PLAN_NOT_AVAILABLE', message(locale, '该套餐不存在或未上架', 'Plan not found or not for sale'), 404);
throw new OrderError(
'PLAN_NOT_AVAILABLE',
message(locale, '该套餐不存在或未上架', 'Plan not found or not for sale'),
404,
);
}
// 校验 Sub2API 分组仍然存在
const group = await getGroup(plan.groupId);
@@ -284,7 +300,11 @@ export async function createOrder(input: CreateOrderInput): Promise<CreateOrderR
amount: input.amount,
paymentType: input.paymentType,
orderType,
...(subscriptionPlan && { planId: subscriptionPlan.id, planName: subscriptionPlan.name, groupId: subscriptionPlan.groupId }),
...(subscriptionPlan && {
planId: subscriptionPlan.id,
planName: subscriptionPlan.name,
groupId: subscriptionPlan.groupId,
}),
}),
operator: `user:${input.userId}`,
},
@@ -683,9 +703,7 @@ export async function executeSubscriptionFulfillment(orderId: string): Promise<v
data: {
status: ORDER_STATUS.FAILED,
failedAt: new Date(),
failedReason: isGroupGone
? `SUBSCRIPTION_GROUP_GONE: ${reason}`
: reason,
failedReason: isGroupGone ? `SUBSCRIPTION_GROUP_GONE: ${reason}` : reason,
},
});

View File

@@ -20,8 +20,15 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
border: 'border-orange-500/20',
label: 'Claude',
icon: 'M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z',
modelTag: { light: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-600', dark: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-300', dot: 'bg-orange-500' },
button: { light: 'bg-orange-500 hover:bg-orange-600 active:bg-orange-700', dark: 'bg-orange-500/80 hover:bg-orange-500 active:bg-orange-600' },
modelTag: {
light: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-600',
dark: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-300',
dot: 'bg-orange-500',
},
button: {
light: 'bg-orange-500 hover:bg-orange-600 active:bg-orange-700',
dark: 'bg-orange-500/80 hover:bg-orange-500 active:bg-orange-600',
},
accent: { light: 'text-orange-600', dark: 'text-orange-300' },
},
anthropic: {
@@ -29,16 +36,30 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
border: 'border-orange-500/20',
label: 'Anthropic',
icon: 'M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z',
modelTag: { light: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-600', dark: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-300', dot: 'bg-orange-500' },
button: { light: 'bg-orange-500 hover:bg-orange-600 active:bg-orange-700', dark: 'bg-orange-500/80 hover:bg-orange-500 active:bg-orange-600' },
modelTag: {
light: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-600',
dark: 'border-orange-500/20 bg-gradient-to-r from-orange-500/10 to-amber-500/10 text-orange-300',
dot: 'bg-orange-500',
},
button: {
light: 'bg-orange-500 hover:bg-orange-600 active:bg-orange-700',
dark: 'bg-orange-500/80 hover:bg-orange-500 active:bg-orange-600',
},
accent: { light: 'text-orange-600', dark: 'text-orange-300' },
},
openai: {
badge: 'bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/30',
border: 'border-green-500/20',
label: 'OpenAI',
modelTag: { light: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-600', dark: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-300', dot: 'bg-green-500' },
button: { light: 'bg-green-600 hover:bg-green-700 active:bg-green-800', dark: 'bg-green-600/80 hover:bg-green-600 active:bg-green-700' },
modelTag: {
light: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-600',
dark: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-300',
dot: 'bg-green-500',
},
button: {
light: 'bg-green-600 hover:bg-green-700 active:bg-green-800',
dark: 'bg-green-600/80 hover:bg-green-600 active:bg-green-700',
},
accent: { light: 'text-green-600', dark: 'text-green-300' },
icon: 'M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z',
},
@@ -46,8 +67,15 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
badge: 'bg-green-500/10 text-green-600 dark:text-green-400 border-green-500/30',
border: 'border-green-500/20',
label: 'Codex',
modelTag: { light: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-600', dark: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-300', dot: 'bg-green-500' },
button: { light: 'bg-green-600 hover:bg-green-700 active:bg-green-800', dark: 'bg-green-600/80 hover:bg-green-600 active:bg-green-700' },
modelTag: {
light: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-600',
dark: 'border-green-500/20 bg-gradient-to-r from-green-500/10 to-emerald-500/10 text-green-300',
dot: 'bg-green-500',
},
button: {
light: 'bg-green-600 hover:bg-green-700 active:bg-green-800',
dark: 'bg-green-600/80 hover:bg-green-600 active:bg-green-700',
},
accent: { light: 'text-green-600', dark: 'text-green-300' },
icon: 'M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z',
},
@@ -55,8 +83,15 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
badge: 'bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-500/30',
border: 'border-blue-500/20',
label: 'Gemini',
modelTag: { light: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-600', dark: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-300', dot: 'bg-blue-500' },
button: { light: 'bg-blue-500 hover:bg-blue-600 active:bg-blue-700', dark: 'bg-blue-500/80 hover:bg-blue-500 active:bg-blue-600' },
modelTag: {
light: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-600',
dark: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-300',
dot: 'bg-blue-500',
},
button: {
light: 'bg-blue-500 hover:bg-blue-600 active:bg-blue-700',
dark: 'bg-blue-500/80 hover:bg-blue-500 active:bg-blue-600',
},
accent: { light: 'text-blue-600', dark: 'text-blue-300' },
icon: 'M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81',
},
@@ -64,8 +99,15 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
badge: 'bg-blue-500/10 text-blue-600 dark:text-blue-400 border-blue-500/30',
border: 'border-blue-500/20',
label: 'Google',
modelTag: { light: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-600', dark: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-300', dot: 'bg-blue-500' },
button: { light: 'bg-blue-500 hover:bg-blue-600 active:bg-blue-700', dark: 'bg-blue-500/80 hover:bg-blue-500 active:bg-blue-600' },
modelTag: {
light: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-600',
dark: 'border-blue-500/20 bg-gradient-to-r from-blue-500/10 to-indigo-500/10 text-blue-300',
dot: 'bg-blue-500',
},
button: {
light: 'bg-blue-500 hover:bg-blue-600 active:bg-blue-700',
dark: 'bg-blue-500/80 hover:bg-blue-500 active:bg-blue-600',
},
accent: { light: 'text-blue-600', dark: 'text-blue-300' },
icon: 'M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81',
},
@@ -73,8 +115,15 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
badge: 'bg-pink-500/10 text-pink-600 dark:text-pink-400 border-pink-500/30',
border: 'border-pink-500/20',
label: 'Sora',
modelTag: { light: 'border-pink-500/20 bg-gradient-to-r from-pink-500/10 to-rose-500/10 text-pink-600', dark: 'border-pink-500/20 bg-gradient-to-r from-pink-500/10 to-rose-500/10 text-pink-300', dot: 'bg-pink-500' },
button: { light: 'bg-pink-500 hover:bg-pink-600 active:bg-pink-700', dark: 'bg-pink-500/80 hover:bg-pink-500 active:bg-pink-600' },
modelTag: {
light: 'border-pink-500/20 bg-gradient-to-r from-pink-500/10 to-rose-500/10 text-pink-600',
dark: 'border-pink-500/20 bg-gradient-to-r from-pink-500/10 to-rose-500/10 text-pink-300',
dot: 'bg-pink-500',
},
button: {
light: 'bg-pink-500 hover:bg-pink-600 active:bg-pink-700',
dark: 'bg-pink-500/80 hover:bg-pink-500 active:bg-pink-600',
},
accent: { light: 'text-pink-600', dark: 'text-pink-300' },
// four-pointed sparkle star
icon: 'M12 2l2.09 6.26L20.18 10l-6.09 1.74L12 18l-2.09-6.26L3.82 10l6.09-1.74L12 2z',
@@ -83,8 +132,15 @@ const PLATFORM_STYLES: Record<string, PlatformStyleEntry> = {
badge: 'bg-purple-500/10 text-purple-600 dark:text-purple-400 border-purple-500/30',
border: 'border-purple-500/20',
label: 'Antigravity',
modelTag: { light: 'border-purple-500/20 bg-gradient-to-r from-purple-500/10 to-violet-500/10 text-purple-600', dark: 'border-purple-500/20 bg-gradient-to-r from-purple-500/10 to-violet-500/10 text-purple-300', dot: 'bg-purple-500' },
button: { light: 'bg-purple-500 hover:bg-purple-600 active:bg-purple-700', dark: 'bg-purple-500/80 hover:bg-purple-500 active:bg-purple-600' },
modelTag: {
light: 'border-purple-500/20 bg-gradient-to-r from-purple-500/10 to-violet-500/10 text-purple-600',
dark: 'border-purple-500/20 bg-gradient-to-r from-purple-500/10 to-violet-500/10 text-purple-300',
dot: 'bg-purple-500',
},
button: {
light: 'bg-purple-500 hover:bg-purple-600 active:bg-purple-700',
dark: 'bg-purple-500/80 hover:bg-purple-500 active:bg-purple-600',
},
accent: { light: 'text-purple-600', dark: 'text-purple-300' },
// stylised angular "A" cursor shape
icon: 'M12 2L4 22h4l2-5h4l2 5h4L12 2zm0 7l2.5 6h-5L12 9z',
@@ -96,8 +152,15 @@ const FALLBACK_STYLE: PlatformStyleEntry = {
border: 'border-slate-500/20',
label: '',
icon: '',
modelTag: { light: 'border-slate-500/20 bg-gradient-to-r from-slate-500/10 to-slate-400/10 text-slate-600', dark: 'border-slate-500/20 bg-gradient-to-r from-slate-500/10 to-slate-400/10 text-slate-400', dot: 'bg-slate-500' },
button: { light: 'bg-emerald-500 hover:bg-emerald-600 active:bg-emerald-700', dark: 'bg-emerald-500/80 hover:bg-emerald-500 active:bg-emerald-600' },
modelTag: {
light: 'border-slate-500/20 bg-gradient-to-r from-slate-500/10 to-slate-400/10 text-slate-600',
dark: 'border-slate-500/20 bg-gradient-to-r from-slate-500/10 to-slate-400/10 text-slate-400',
dot: 'bg-slate-500',
},
button: {
light: 'bg-emerald-500 hover:bg-emerald-600 active:bg-emerald-700',
dark: 'bg-emerald-500/80 hover:bg-emerald-500 active:bg-emerald-600',
},
accent: { light: 'text-emerald-600', dark: 'text-emerald-300' },
};

View File

@@ -229,7 +229,9 @@ export async function subtractBalance(
// ── 用户搜索 API ──
export async function searchUsers(keyword: string): Promise<{ id: number; email: string; username: string; notes?: string }[]> {
export async function searchUsers(
keyword: string,
): Promise<{ id: number; email: string; username: string; notes?: string }[]> {
const env = getEnv();
const response = await fetch(
`${env.SUB2API_BASE_URL}/api/v1/admin/users?search=${encodeURIComponent(keyword)}&page=1&page_size=30`,

View File

@@ -23,11 +23,7 @@ export function computeValidityDays(value: number, unit: ValidityUnit, fromDate?
* - unit=week, value=2 → 2周 / 2 Weeks
* - unit=day, value=30 → 30天 / 30 Days
*/
export function formatValidityLabel(
value: number,
unit: ValidityUnit,
locale: 'zh' | 'en',
): string {
export function formatValidityLabel(value: number, unit: ValidityUnit, locale: 'zh' | 'en'): string {
const unitLabels: Record<ValidityUnit, { zh: string; en: string; enPlural: string }> = {
day: { zh: '天', en: 'Day', enPlural: 'Days' },
week: { zh: '周', en: 'Week', enPlural: 'Weeks' },
@@ -44,11 +40,7 @@ export function formatValidityLabel(
* - unit=week, value=2 → /2周 / /2wk
* - unit=day, value=30 → /30天 / /30d
*/
export function formatValiditySuffix(
value: number,
unit: ValidityUnit,
locale: 'zh' | 'en',
): string {
export function formatValiditySuffix(value: number, unit: ValidityUnit, locale: 'zh' | 'en'): string {
const unitLabels: Record<ValidityUnit, { zh: string; en: string }> = {
day: { zh: '天', en: 'd' },
week: { zh: '周', en: 'wk' },
@@ -65,11 +57,7 @@ export function formatValiditySuffix(
* - unit=week → "2 周"
* - unit=month → "1 月"
*/
export function formatValidityDisplay(
value: number,
unit: ValidityUnit,
locale: 'zh' | 'en',
): string {
export function formatValidityDisplay(value: number, unit: ValidityUnit, locale: 'zh' | 'en'): string {
const unitLabels: Record<ValidityUnit, { zh: string; en: string }> = {
day: { zh: '天', en: 'day(s)' },
week: { zh: '周', en: 'week(s)' },

View File

@@ -85,12 +85,18 @@ export async function setSystemConfig(key: string, value: string, group?: string
invalidateConfigCache(key);
}
export async function setSystemConfigs(configs: { key: string; value: string; group?: string; label?: string }[]): Promise<void> {
export async function setSystemConfigs(
configs: { key: string; value: string; group?: string; label?: string }[],
): Promise<void> {
await prisma.$transaction(
configs.map((c) =>
prisma.systemConfig.upsert({
where: { key: c.key },
update: { value: c.value, ...(c.group !== undefined && { group: c.group }), ...(c.label !== undefined && { label: c.label }) },
update: {
value: c.value,
...(c.group !== undefined && { group: c.group }),
...(c.label !== undefined && { label: c.label }),
},
create: { key: c.key, value: c.value, group: c.group ?? 'general', label: c.label },
}),
),
@@ -98,7 +104,9 @@ export async function setSystemConfigs(configs: { key: string; value: string; gr
invalidateConfigCache();
}
export async function getSystemConfigsByGroup(group: string): Promise<{ key: string; value: string; label: string | null }[]> {
export async function getSystemConfigsByGroup(
group: string,
): Promise<{ key: string; value: string; label: string | null }[]> {
return prisma.systemConfig.findMany({
where: { group },
select: { key: true, value: true, label: true },
@@ -106,7 +114,9 @@ export async function getSystemConfigsByGroup(group: string): Promise<{ key: str
});
}
export async function getAllSystemConfigs(): Promise<{ key: string; value: string; group: string; label: string | null }[]> {
export async function getAllSystemConfigs(): Promise<
{ key: string; value: string; group: string; label: string | null }[]
> {
return prisma.systemConfig.findMany({
select: { key: true, value: true, group: true, label: true },
orderBy: [{ group: 'asc' }, { key: 'asc' }],