initial commit

This commit is contained in:
2025-10-17 12:28:08 -07:00
commit 2b64ace453
26 changed files with 5493 additions and 0 deletions

View 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;
}