initial commit
This commit is contained in:
44
server/src/serverResponse.ts
Normal file
44
server/src/serverResponse.ts
Normal file
@ -0,0 +1,44 @@
|
||||
export interface ApiItem<T> {
|
||||
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<T extends DatabaseEntry>({ id }: T) {
|
||||
return { id };
|
||||
}
|
||||
|
||||
export function itemResponse<T>(data: T & DatabaseEntry): ApiItem<T> {
|
||||
const { id, created, modified, deleted, ...rest } = data;
|
||||
const res: ApiItem<T> = {
|
||||
id: id,
|
||||
created: created.toISOString(),
|
||||
modified: modified.toISOString(),
|
||||
};
|
||||
|
||||
if (deleted) {
|
||||
res.deleted = deleted.toISOString();
|
||||
}
|
||||
|
||||
res.item = rest as T;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
export function itemsResponse<T>(data: (T & DatabaseEntry)[]): ApiItem<T>[] {
|
||||
const res: ApiItem<T>[] = [];
|
||||
for (const item of data) {
|
||||
res.push(itemResponse(item));
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
Reference in New Issue
Block a user