@simpleapps-com/augur-api
Version:
TypeScript client library for Augur microservices API endpoints
70 lines • 3.05 kB
JavaScript
import { z } from 'zod';
import { BaseResponseSchema, EdgeCacheParamsSchema, 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(),
});
// Multi-layer caching parameters - used across all services
// Note: HTTP query parameters are always strings, but we also accept numbers for JavaScript usage
// EdgeCacheParamsSchema imported from ./schemas to avoid duplication
// Re-export for backward compatibility
export { EdgeCacheParamsSchema };
// Local cache for immediate deduplication of calls (memory-only)
export const LocalCacheParamsSchema = z.object({
localCache: z.union([z.number().min(0), z.boolean()]).optional(),
});
// Redis cache for structured caching shared among server instances
export const RedisCacheParamsSchema = z.object({
redisCache: z.union([z.number().min(0), z.boolean()]).optional(),
});
// Cache control parameters
export const CacheControlParamsSchema = z.object({
invalidateCache: z.boolean().optional(),
});
// Combined caching parameters schema
export const CachingParamsSchema = EdgeCacheParamsSchema.merge(LocalCacheParamsSchema)
.merge(RedisCacheParamsSchema)
.merge(CacheControlParamsSchema);
// 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