pg-meta-config.ts56 lines · main
1import { z } from 'zod'
2
3import { literal, safeSql, type SafeSqlFragment } from './pg-format'
4import { CONFIG_SQL } from './sql/config'
5
6const pgConfigZod = z.object({
7 name: z.string(),
8 setting: z.string(),
9 category: z.string(),
10 group: z.string(),
11 subgroup: z.string(),
12 unit: z.string().nullable(),
13 short_desc: z.string(),
14 extra_desc: z.string().nullable(),
15 context: z.string(),
16 vartype: z.string(),
17 source: z.string(),
18 min_val: z.string().nullable(),
19 max_val: z.string().nullable(),
20 enumvals: z.array(z.string()).nullable(),
21 boot_val: z.string().nullable(),
22 reset_val: z.string().nullable(),
23 sourcefile: z.string().nullable(),
24 sourceline: z.number().nullable(),
25 pending_restart: z.boolean(),
26})
27
28const pgConfigArrayZod = z.array(pgConfigZod)
29
30function list({
31 limit,
32 offset,
33}: {
34 limit?: number
35 offset?: number
36} = {}): {
37 sql: SafeSqlFragment
38 zod: typeof pgConfigArrayZod
39} {
40 let sql = CONFIG_SQL
41 if (limit) {
42 sql = safeSql`${sql} LIMIT ${literal(limit)}`
43 }
44 if (offset) {
45 sql = safeSql`${sql} OFFSET ${literal(offset)}`
46 }
47 return {
48 sql,
49 zod: pgConfigArrayZod,
50 }
51}
52
53export default {
54 list,
55 zod: pgConfigZod,
56}