@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
70 lines • 2.66 kB
JavaScript
import { z } from 'zod';
import { BaseResponseSchema, HealthCheckDataSchema, PingDataSchema } from './schemas';
import { mysqlDatetimeSchema } from './schema-utils';
/**
* Common schemas shared across all microservices
*
* This module contains frequently used schemas to reduce duplication
* and ensure consistency across all API clients.
*/
// Health check schemas - standardized across all services
export const CommonHealthCheckResponseSchema = BaseResponseSchema(HealthCheckDataSchema);
export const CommonPingResponseSchema = BaseResponseSchema(PingDataSchema);
// Common pagination patterns
// Note: HTTP query parameters are always strings, so we use coercion for numbers
export const StandardPaginationParamsSchema = z.object({
limit: z.coerce.number().min(1).max(1000).optional().default(10),
offset: z.coerce.number().min(0).optional().default(0),
orderBy: z.string().optional(),
});
export const SearchablePaginationParamsSchema = StandardPaginationParamsSchema.extend({
q: z.string().optional(),
});
// Edge caching parameters - used across all services
// Note: HTTP query parameters are always strings, but we also accept numbers for JavaScript usage
export const EdgeCacheParamsSchema = z.object({
edgeCache: z
.union([
z.literal(1),
z.literal(2),
z.literal(3),
z.literal(4),
z.literal(5),
z.literal(8), // numbers
z.literal('1'),
z.literal('2'),
z.literal('3'),
z.literal('4'),
z.literal('5'),
z.literal('8'), // strings
])
.transform(val => (typeof val === 'string' ? parseInt(val) : val))
.optional(),
});
// Common response patterns
export const BooleanResponseSchema = BaseResponseSchema(z.boolean());
export const StringResponseSchema = BaseResponseSchema(z.string());
export const NumberResponseSchema = BaseResponseSchema(z.number());
// Common error response schema
export const ErrorResponseSchema = z.object({
status: z.number(),
message: z.string(),
code: z.string().optional(),
details: z.unknown().optional(),
timestamp: z.string().optional(),
});
// Common field patterns
export const TimestampFieldsSchema = z.object({
dateCreated: mysqlDatetimeSchema().optional(),
dateLastModified: mysqlDatetimeSchema().optional(),
});
export const StatusFieldsSchema = z.object({
statusCd: z.number(),
createCd: z.string(),
updateCd: z.string(),
});
// ID patterns
export const NumericIdSchema = z.number().min(1);
export const StringIdSchema = z.string().min(1);
export const UuidSchema = z.string().uuid();
//# sourceMappingURL=common-schemas.js.map