diff --git a/src/renderer/src/types/ocr/index.ts b/src/renderer/src/types/ocr/index.ts new file mode 100644 index 0000000000..2fb43eccb6 --- /dev/null +++ b/src/renderer/src/types/ocr/index.ts @@ -0,0 +1 @@ +export * from './ocr' diff --git a/src/renderer/src/types/ocr.ts b/src/renderer/src/types/ocr/ocr.ts similarity index 81% rename from src/renderer/src/types/ocr.ts rename to src/renderer/src/types/ocr/ocr.ts index a0355f1428..15cfb67838 100644 --- a/src/renderer/src/types/ocr.ts +++ b/src/renderer/src/types/ocr/ocr.ts @@ -1,8 +1,8 @@ import type Tesseract from 'tesseract.js' import * as z from 'zod' -import type { FileMetadata, ImageFileMetadata, TranslateLanguageCode } from '.' -import { isImageFileMetadata, objectValues, TranslateLanguageCodeSchema } from '.' +import type { FileMetadata, ImageFileMetadata, TranslateLanguageCode } from '..' +import { isImageFileMetadata, objectValues, TranslateLanguageCodeSchema } from '..' export const BuiltinOcrProviderIdMap = { tesseract: 'tesseract', @@ -258,7 +258,7 @@ export const isOcrOVProvider = (p: OcrProvider): p is OcrOvProvider => { } // ========================================================== -// Data-API OCR Types (notable) +// API layer Types // ========================================================== const TimestampExtendShape = { @@ -288,19 +288,25 @@ export const GetOcrProviderResponseSchema = z.object({ export type GetOcrProviderResponse = z.infer -export const PatchOcrProviderRequestSchema = z.object({ +/** + * Request payload for updating an OCR provider. + * Only the following fields are modifiable: + * - `name`: provider display name + * - `config`: provider-specific configuration object (all properties optional) + */ +export const UpdateOcrProviderRequestSchema = z.object({ id: OcrProviderIdSchema, name: OcrProviderNameSchema.optional(), config: OcrProviderConfigSchema.partial().optional() }) -export type PatchOcrProviderRequest = z.infer +export type UpdateOcrProviderRequest = z.infer -export const PatchOcrProviderResponseSchema = z.object({ +export const UpdateOcrProviderResponseSchema = z.object({ data: DbOcrProviderSchema }) -export type PatchOcrProviderResponse = z.infer +export type UpdateOcrProviderResponse = z.infer export const CreateOcrProviderRequestSchema = OcrProviderSchema @@ -312,12 +318,56 @@ export const CreateOcrProviderResponseSchema = z.object({ export type CreateOcrProviderResponse = z.infer -export const PutOcrProviderRequestSchema = OcrProviderSchema +export const ReplaceOcrProviderRequestSchema = OcrProviderSchema -export type PutOcrProviderRequest = z.infer +export type ReplaceOcrProviderRequest = z.infer -export const PutOcrProviderResponseSchema = z.object({ +export const ReplaceOcrProviderResponseSchema = z.object({ data: DbOcrProviderSchema }) -export type PutOcrProviderResponse = z.infer +export type ReplaceOcrProviderResponse = z.infer + +// ========================================================== +// Business layer Types +// ========================================================== + +/** + * Business-level representation of an OCR provider. + * Mirrors the data layer but is intended for use in domain/business logic. + */ +export type OcrProviderBusiness = DbOcrProvider + +/** + * Business-level representation of an OCR provider creation payload. + */ +export type OcrProviderCreateBusiness = DbOcrProviderCreate + +/** + * Business-level representation of an OCR provider update payload. + */ +export type OcrProviderUpdateBusiness = DbOcrProviderUpdate + +/** + * Business-level representation of an OCR provider replacement payload. + */ +export type OcrProviderReplaceBusiness = DbOcrProviderReplace + +/** + * Business-level key type for identifying an OCR provider. + */ +export type OcrProviderKeyBusiness = DbOcrProviderKey + +// ========================================================== +// Data layer Types +// +// NOTE: Timestamp operations are not exposed to outside. +// ========================================================== + +export type DbOcrProviderCreate = OcrProvider + +export type DbOcrProviderUpdate = UpdateOcrProviderRequest + +export type DbOcrProviderReplace = OcrProvider + +export type DbOcrProviderKey = DbOcrProvider['id'] diff --git a/tsconfig.node.json b/tsconfig.node.json index 9f3768e016..a213ad6330 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -5,13 +5,13 @@ "src/main/**/*", "src/preload/**/*", "src/main/env.d.ts", - "src/renderer/src/types/*", + "src/renderer/src/types/**/*", "packages/shared/**/*", "scripts", "packages/mcp-trace/**/*", "src/renderer/src/services/traceApi.ts", "tests/__mocks__/**/*" - ], +, "src/renderer/src/types/ocr/ocr.ts" ], "compilerOptions": { "composite": true, "incremental": true,