From 98ba10b48f16563b163cfbf9f23c845cdedfe474 Mon Sep 17 00:00:00 2001 From: almog8k Date: Sun, 7 Dec 2025 11:29:47 +0200 Subject: [PATCH 1/2] feat: add checksum schema and integrate into ingestion validation schema --- src/constants/core/constants.ts | 3 +++ src/schemas/core/file.schema.ts | 7 +++++++ src/schemas/ingestion/task.schema.ts | 5 +++-- src/types/core/file.type.ts | 5 +++++ src/types/core/index.ts | 1 + src/types/core/link.type.ts | 4 +--- 6 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 src/types/core/file.type.ts diff --git a/src/constants/core/constants.ts b/src/constants/core/constants.ts index 3c3b715..9f2f477 100644 --- a/src/constants/core/constants.ts +++ b/src/constants/core/constants.ts @@ -51,3 +51,6 @@ export const CORE_VALIDATIONS = { } satisfies ValidationRules; /* eslint-enable @typescript-eslint/no-magic-numbers */ /* eslint-enable @typescript-eslint/naming-convention */ + +export const HASH_ALGORITHMS = ['XXH64'] as const; +export type HashAlgorithm = (typeof HASH_ALGORITHMS)[number]; diff --git a/src/schemas/core/file.schema.ts b/src/schemas/core/file.schema.ts index 30359a6..6d3e8fd 100644 --- a/src/schemas/core/file.schema.ts +++ b/src/schemas/core/file.schema.ts @@ -1,4 +1,5 @@ import z from 'zod'; +import { HASH_ALGORITHMS } from '../../constants/core'; import { urlSchema } from './link.schema'; export const fileMetadataSchema = z.object({ @@ -6,3 +7,9 @@ export const fileMetadataSchema = z.object({ fileSize: z.number().nonnegative().int().describe('File size in bytes'), url: urlSchema, }); + +export const checksumSchema = z.object({ + algorithm: z.enum(HASH_ALGORITHMS), + checksum: z.string(), + fileName: z.string(), +}); diff --git a/src/schemas/ingestion/task.schema.ts b/src/schemas/ingestion/task.schema.ts index 74c8211..abe9b2e 100644 --- a/src/schemas/ingestion/task.schema.ts +++ b/src/schemas/ingestion/task.schema.ts @@ -1,5 +1,5 @@ import z from 'zod'; -import { fileMetadataSchema } from '../core'; +import { checksumSchema, fileMetadataSchema } from '../core'; export const ingestionNewFinalizeTaskParamsSchema = z .object({ @@ -23,7 +23,8 @@ export const ingestionSwapUpdateTaskParamsSchema = ingestionUpdateFinalizeTaskPa export const ingestionValidationTaskParamsSchema = z .object({ + checksums: z.array(checksumSchema), + isValid: z.boolean().optional(), report: fileMetadataSchema.optional(), - isValid: z.boolean(), }) .describe('ingestionValidationTaskParamsSchema'); diff --git a/src/types/core/file.type.ts b/src/types/core/file.type.ts new file mode 100644 index 0000000..32ef7b9 --- /dev/null +++ b/src/types/core/file.type.ts @@ -0,0 +1,5 @@ +import z from 'zod'; +import { checksumSchema, fileMetadataSchema } from '../../schemas/core'; + +export type FileMetadata = z.infer; +export type Checksum = z.infer; diff --git a/src/types/core/index.ts b/src/types/core/index.ts index bd4373a..c7e5471 100644 --- a/src/types/core/index.ts +++ b/src/types/core/index.ts @@ -4,3 +4,4 @@ export * from './metadata.type'; export * from './layer.type'; export * from './part.type'; export * from './link.type'; +export * from './file.type'; diff --git a/src/types/core/link.type.ts b/src/types/core/link.type.ts index 87b6f3c..6c059fe 100644 --- a/src/types/core/link.type.ts +++ b/src/types/core/link.type.ts @@ -1,7 +1,5 @@ import { z } from 'zod'; -import { fileMetadataSchema, urlsArraySchema, urlSchema } from '../../schemas'; - -export type FileMetadata = z.infer; +import { urlsArraySchema, urlSchema } from '../../schemas'; export type CallbackUrl = z.infer; export type CallbackUrlsTargetArray = z.infer; From 09685fc9a068f679b3b5c6bbdcd6a43f268ce64c Mon Sep 17 00:00:00 2001 From: almog8k Date: Sun, 7 Dec 2025 11:49:32 +0200 Subject: [PATCH 2/2] chore: export callback type from core index --- src/types/core/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/core/index.ts b/src/types/core/index.ts index c7e5471..044b5f9 100644 --- a/src/types/core/index.ts +++ b/src/types/core/index.ts @@ -5,3 +5,4 @@ export * from './layer.type'; export * from './part.type'; export * from './link.type'; export * from './file.type'; +export * from './callback.type';