export interface ApiItem { created: string; deleted?: string; id: number; item?: T; modified: string; } export interface DatabaseEntry { created: Date; deleted: Date | null; id: number; modified: Date; } export function createdResponse({ id }: T) { return { id }; } export function itemResponse(data: T & DatabaseEntry): ApiItem { const { id, created, modified, deleted, ...rest } = data; const res: ApiItem = { id: id, created: created.toISOString(), modified: modified.toISOString(), }; if (deleted) { res.deleted = deleted.toISOString(); } res.item = rest as T; return res; } export function itemsResponse(data: (T & DatabaseEntry)[]): ApiItem[] { const res: ApiItem[] = []; for (const item of data) { res.push(itemResponse(item)); } return res; }