import {api_base} from "$shared/lib/configuration"; import {is_guid} from "$shared/lib/helpers"; import {http_delete, http_get, http_post} from "./internal-fetch"; import type {TimeCategoryDto} from "$shared/lib/models/TimeCategoryDto"; import type {TimeLabelDto} from "$shared/lib/models/TimeLabelDto"; import type {TimeEntryDto} from "$shared/lib/models/TimeEntryDto"; import type {TimeEntryQuery} from "$shared/lib/models/TimeEntryQuery"; import type {IInternalFetchResponse} from "$shared/lib/models/IInternalFetchResponse"; // ENTRIES export async function create_time_entry(payload: TimeEntryDto): Promise { return http_post(api_base("v1/entries/create"), payload); } export async function get_time_entry(entryId: string): Promise { if (is_guid(entryId)) { return http_get(api_base("v1/entries/" + entryId)); } throw new Error("entryId is not a valid guid."); } export async function get_time_entries(entryQuery: TimeEntryQuery): Promise { return http_post(api_base("v1/entries/query"), entryQuery); } export async function delete_time_entry(id: string): Promise { if (!is_guid(id)) throw new Error("id is not a valid guid"); return http_delete(api_base("v1/entries/" + id + "/delete")); } export async function update_time_entry(entryDto: TimeEntryDto): Promise { if (!is_guid(entryDto.id ?? "")) throw new Error("id is not a valid guid"); if (!entryDto.category) throw new Error("category is empty"); if (!entryDto.stop) throw new Error("stop is empty"); if (!entryDto.start) throw new Error("start is empty"); return http_post(api_base("v1/entries/update"), entryDto); } // LABELS export async function create_time_label(labelDto: TimeLabelDto): Promise { return http_post(api_base("v1/labels/create"), labelDto); } export async function get_time_labels(): Promise { return http_get(api_base("v1/labels")); } export async function delete_time_label(id: string): Promise { if (!is_guid(id)) throw new Error("id is not a valid guid"); return http_delete(api_base("v1/labels/" + id + "/delete")); } export async function update_time_label(labelDto: TimeLabelDto): Promise { if (!is_guid(labelDto.id ?? "")) throw new Error("id is not a valid guid"); if (!labelDto.name) throw new Error("name is empty"); if (!labelDto.color) throw new Error("color is empty"); return http_post(api_base("v1/labels/update"), labelDto); } // CATEGORIES export async function create_time_category(category: TimeCategoryDto): Promise { if (!category.name) throw new Error("name is empty"); if (!category.color) throw new Error("color is empty"); return http_post(api_base("v1/categories/create"), category); } export async function get_time_categories(): Promise { return http_get(api_base("v1/categories")); } export async function delete_time_category(id: string): Promise { if (!is_guid(id)) throw new Error("id is not a valid guid"); return http_delete(api_base("v1/categories/" + id + "/delete")); } export async function update_time_category(category: TimeCategoryDto): Promise { if (!is_guid(category.id ?? "")) throw new Error("id is not a valid guid"); if (!category.name) throw new Error("name is empty"); if (!category.color) throw new Error("color is empty"); return http_post(api_base("v1/categories/update"), category); }