1
10import { z } from "zod";
11
12import { DB_EXTRACT_MAX_TEXT_CHARS, DB_GEN_MAX_SAMPLE_RECORDS, DB_FORMULA_MAX_SAMPLE_ROWS } from "@factory/ai";
13
14
15export const AiGenerateDatabaseDto = z.object({
16
17 prompt: z.string().trim().min(1).max(2000),
18
19 parentId: z.string().min(1).optional(),
20});
21export type AiGenerateDatabaseInput = z.infer<typeof AiGenerateDatabaseDto>;
22
23
24export const AiExtractDto = z.object({
25 databaseId: z.string().min(1),
26
27 text: z.string().min(1).max(DB_EXTRACT_MAX_TEXT_CHARS),
28});
29export type AiExtractInput = z.infer<typeof AiExtractDto>;
30
31
32export const AiExtractPreviewDto = z.object({
33 databaseId: z.string().min(1),
34 text: z.string().min(1).max(DB_EXTRACT_MAX_TEXT_CHARS),
35});
36export type AiExtractPreviewInput = z.infer<typeof AiExtractPreviewDto>;
37
38
39export const AiGenerateFormulaDto = z.object({
40 databaseId: z.string().min(1),
41 description: z.string().trim().min(1).max(500),
42
43 name: z.string().trim().min(1).max(100).optional(),
44
45 sampleRowIds: z.array(z.string().min(1)).max(DB_FORMULA_MAX_SAMPLE_ROWS).optional(),
46});
47export type AiGenerateFormulaInput = z.infer<typeof AiGenerateFormulaDto>;
48
49export { DB_GEN_MAX_SAMPLE_RECORDS };
50