diff --git a/src/schemas/core/callback.schema.ts b/src/schemas/core/callback.schema.ts index e095f17..db3a587 100644 --- a/src/schemas/core/callback.schema.ts +++ b/src/schemas/core/callback.schema.ts @@ -2,16 +2,6 @@ import z from 'zod'; import { OperationStatus } from '@map-colonies/mc-priority-queue'; import { rasterProductTypeSchema, resourceIdSchema, versionSchema } from './job.schema'; -export const callbackUrlSchema = z.string().url(); - -export const callbackUrlsArraySchema = z.array(callbackUrlSchema); - -export const fileMetadataSchema = z.object({ - fileName: z.string().min(1), - fileSize: z.number().nonnegative(), - url: callbackUrlSchema, -}); - // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const createCallbackResponseSchema = (dataSchema?: z.ZodType) => { return z.object({ diff --git a/src/schemas/core/file.schema.ts b/src/schemas/core/file.schema.ts new file mode 100644 index 0000000..30359a6 --- /dev/null +++ b/src/schemas/core/file.schema.ts @@ -0,0 +1,8 @@ +import z from 'zod'; +import { urlSchema } from './link.schema'; + +export const fileMetadataSchema = z.object({ + fileName: z.string().min(1), + fileSize: z.number().nonnegative().int().describe('File size in bytes'), + url: urlSchema, +}); diff --git a/src/schemas/core/index.ts b/src/schemas/core/index.ts index 0ffd356..3a73c9e 100644 --- a/src/schemas/core/index.ts +++ b/src/schemas/core/index.ts @@ -4,3 +4,5 @@ export * from './task.schema'; export * from './mime.schema'; export * from './aggregation.schema'; export * from './callback.schema'; +export * from './link.schema'; +export * from './file.schema'; diff --git a/src/schemas/core/link.schema.ts b/src/schemas/core/link.schema.ts new file mode 100644 index 0000000..5adb789 --- /dev/null +++ b/src/schemas/core/link.schema.ts @@ -0,0 +1,6 @@ +import z from 'zod'; +import { CORE_VALIDATIONS } from '../../constants'; + +export const urlSchema = z.string().regex(new RegExp(CORE_VALIDATIONS.url.pattern)); + +export const urlsArraySchema = z.array(urlSchema); diff --git a/src/schemas/export/job.schema.ts b/src/schemas/export/job.schema.ts index aafd996..f37ba63 100644 --- a/src/schemas/export/job.schema.ts +++ b/src/schemas/export/job.schema.ts @@ -1,13 +1,13 @@ import { z } from 'zod'; import { CORE_VALIDATIONS, TileFormatStrategy, TileOutputFormat } from '../../constants'; import { polygonPartsEntityNameSchema } from '../ingestion'; -import { callbackUrlsArraySchema } from '../core/callback.schema'; +import { urlsArraySchema } from '../core'; import { callbackExportResponseSchema, cleanupDataSchema, roiFeatureCollectionSchema, fileNamesTemplatesSchema } from './export.schema'; export const exportInputParamsSchema = z.object({ crs: z.string(z.literal('EPSG:4326')), roi: roiFeatureCollectionSchema, - callbackUrls: callbackUrlsArraySchema.optional(), + callbackUrls: urlsArraySchema.optional(), }); export const exportAdditionalParamsSchema = z diff --git a/src/schemas/ingestion/job.schema.ts b/src/schemas/ingestion/job.schema.ts index edd1569..a2d1cc7 100644 --- a/src/schemas/ingestion/job.schema.ts +++ b/src/schemas/ingestion/job.schema.ts @@ -1,6 +1,6 @@ import z from 'zod'; import { CORE_VALIDATIONS } from '../../constants'; -import { callbackUrlsArraySchema } from '../core/callback.schema'; +import { urlsArraySchema } from '../core'; import { newAdditionalParamsSchema, swapUpdateAdditionalParamsSchema, updateAdditionalParamsSchema } from './additionalParams.schema'; import { inputFilesSchema } from './inputFiles.schema'; import { newRasterLayerMetadataSchema, updateRasterLayerMetadataSchema } from './metadata.schema'; @@ -18,7 +18,7 @@ export const ingestionBaseJobParamsSchema = z .object({ inputFiles: inputFilesSchema, ingestionResolution: ingestionResolutionSchema, - callbackUrls: callbackUrlsArraySchema.optional(), + callbackUrls: urlsArraySchema.optional(), }) .describe('ingestionBaseJobParamsSchema'); diff --git a/src/schemas/ingestion/task.schema.ts b/src/schemas/ingestion/task.schema.ts index 7f7af7d..9a9d18d 100644 --- a/src/schemas/ingestion/task.schema.ts +++ b/src/schemas/ingestion/task.schema.ts @@ -1,4 +1,5 @@ import z from 'zod'; +import { fileMetadataSchema } from '../core'; export const ingestionNewFinalizeTaskParamsSchema = z .object({ @@ -22,6 +23,7 @@ export const ingestionSwapUpdateTaskParamsSchema = ingestionUpdateFinalizeTaskPa export const ingestionValidationTaskParamsSchema = z .object({ + link: fileMetadataSchema.optional(), isValid: z.boolean(), }) .describe('ingestionValidationTaskParamsSchema'); diff --git a/src/types/core/index.ts b/src/types/core/index.ts index 59f0ebe..bd4373a 100644 --- a/src/types/core/index.ts +++ b/src/types/core/index.ts @@ -3,3 +3,4 @@ export * from './task.type'; export * from './metadata.type'; export * from './layer.type'; export * from './part.type'; +export * from './link.type'; diff --git a/src/types/core/link.type.ts b/src/types/core/link.type.ts new file mode 100644 index 0000000..87b6f3c --- /dev/null +++ b/src/types/core/link.type.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; +import { fileMetadataSchema, urlsArraySchema, urlSchema } from '../../schemas'; + +export type FileMetadata = z.infer; + +export type CallbackUrl = z.infer; +export type CallbackUrlsTargetArray = z.infer; diff --git a/src/types/export/export.type.ts b/src/types/export/export.type.ts index 4028013..5c9a3bf 100644 --- a/src/types/export/export.type.ts +++ b/src/types/export/export.type.ts @@ -10,14 +10,11 @@ import { linksSchema, roiPropertiesSchema, } from '../../schemas/export/export.schema'; -import { callbackUrlsArraySchema, callbackUrlSchema } from '../../schemas/core/callback.schema'; export type RoiProperties = z.infer; export type RoiFeature = Feature; export type RoiFeatureCollection = FeatureCollection; -export type CallbackUrl = z.infer; -export type CallbackUrlsTargetArray = z.infer; export type CallbackExportResponse = z.infer; export type CallbacksStatus = z.infer;