Untitled
Anonymous
plain_text
03/28/2026 6:47 PM
1.8 KB
10
Indexable
import { z } from 'zod';
export const BaseModelSchema = z.object({
id: z.number().int(),
name: z.string()
});
export const StringIdBaseModelSchema = z.object({
id: z.string(),
name: z.string()
});
export const PaginationSchema = z.object({
perPage: z.number(),
currentPage: z.number()
});
export const MetaDataModelSchema = z.intersection(
PaginationSchema,
z.object({
total: z.number()
})
);
export const StringIdBaseModelMetaDataSchema = z.object({
data: z.array(StringIdBaseModelSchema),
metadata: MetaDataModelSchema
});
export const BaseModelMetaDataSchema = z.object({
data: z.array(BaseModelSchema),
metadata: MetaDataModelSchema
});
export type PaginatedResponse<T> = {
data: T;
metadata: z.infer<typeof MetaDataModelSchema>;
};
type BaseModel = z.infer<typeof BaseModelSchema>;
type StringIdBaseModel = z.infer<typeof StringIdBaseModelSchema>;
type MetaDataModel = z.infer<typeof MetaDataModelSchema>;
type PaginationModel = z.infer<typeof PaginationSchema>;
type StringIdBaseModelMetaDataModel = z.infer<typeof StringIdBaseModelMetaDataSchema>;
type BaseModelMetaDataModel = z.infer<typeof BaseModelMetaDataSchema>;
export type { BaseModel, StringIdBaseModel, PaginationModel, StringIdBaseModelMetaDataModel, BaseModelMetaDataModel, MetaDataModel };
Editor is loading...
Leave a Comment