@chubbyts/chubbyts-api
Version:
[](https://github.com/chubbyts/chubbyts-api/actions?query=workflow%3ACI) [ • 1.18 kB
TypeScript
import type { ServerRequest } from '@chubbyts/chubbyts-http-types/dist/message';
export type Embedded = {
_embedded?: {
[key: string]: unknown;
};
};
export type Link = {
href: string;
templated?: boolean;
[key: string]: unknown;
};
export type Links = {
_links?: {
[key: string]: Link;
};
};
export type Model<C> = {
id: string;
createdAt: Date;
updatedAt?: Date;
} & {
[key in keyof C]: C[key];
};
export type EnrichedModel<C> = Model<C> & Embedded & Links;
export type EnrichModel<C> = (model: Model<C>, context: {
request: ServerRequest;
[key: string]: unknown;
}) => Promise<EnrichedModel<C>>;
type BaseList = {
offset: number;
limit: number;
filters: {
[key: string]: unknown;
};
sort: {
[key: string]: 'asc' | 'desc';
};
count: number;
};
export type List<C> = BaseList & {
items: Array<Model<C>>;
};
export type EnrichedList<C> = BaseList & {
items: Array<EnrichedModel<C>>;
} & Embedded & Links;
export type EnrichList<C> = (list: List<C>, context: {
request: ServerRequest;
[key: string]: unknown;
}) => Promise<EnrichedList<C>>;
export {};