48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
'use server'
|
|
|
|
import drizzle, { eq, gateway } from '@/lib/drizzle'
|
|
import z from 'zod'
|
|
|
|
export async function findConfigs(params: {
|
|
macaddr: string
|
|
}) {
|
|
try {
|
|
return await drizzle.query.gateway.findMany({
|
|
where: eq(gateway.macaddr, params.macaddr),
|
|
})
|
|
}
|
|
catch (e) {
|
|
throw new Error('查询配置失败: ' + (e as Error).message)
|
|
}
|
|
}
|
|
|
|
const pageConfigsParams = z.object({
|
|
macaddr: z.string().min(1, 'MAC地址不能为空').trim(),
|
|
page: z.number().min(1).default(1),
|
|
size: z.number().min(10).max(250).default(100),
|
|
})
|
|
|
|
export async function pageConfigs(rawParams: z.infer<typeof pageConfigsParams>) {
|
|
try {
|
|
const params = pageConfigsParams.parse(rawParams)
|
|
const offset = (params.page - 1) * params.size
|
|
const limit = params.size
|
|
|
|
const [data, total] = await Promise.all([
|
|
drizzle.select().from(gateway).where(eq(gateway.macaddr, params.macaddr)).offset(offset).limit(limit),
|
|
drizzle.$count(gateway, eq(gateway.macaddr, params.macaddr)),
|
|
])
|
|
|
|
return {
|
|
success: true,
|
|
data,
|
|
total,
|
|
page: params.page,
|
|
size: params.size,
|
|
}
|
|
}
|
|
catch (e) {
|
|
throw new Error('获取配置失败: ' + (e as Error).message)
|
|
}
|
|
}
|