Build ErsatzTV Image / CI toolchain image resolves (push) Successful in 14s
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 30s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m36s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m9s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 5m49s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Failing after 15s
Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be>
61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
import type { Complete } from './completeRequest';
|
|
import { ApiError, request } from './client';
|
|
import type { components } from './generated/v1';
|
|
|
|
export type DecoGroup = components['schemas']['DecoGroupResponseModel'];
|
|
export type DecoListItem = components['schemas']['DecoListItemResponseModel'];
|
|
export type Deco = components['schemas']['DecoResponseModel'];
|
|
export type DecoBreakContent = components['schemas']['DecoBreakContentResponseModel'];
|
|
export type CreateDecoGroupRequest = components['schemas']['CreateDecoGroupRequest'];
|
|
export type CreateDecoRequest = components['schemas']['CreateDecoRequest'];
|
|
export type ReplaceDecoRequest = components['schemas']['ReplaceDecoRequest'];
|
|
export type DecoBreakContentRequest = components['schemas']['DecoBreakContentRequest'];
|
|
|
|
// Deco groups
|
|
|
|
export function getDecoGroups(): Promise<DecoGroup[]> {
|
|
return request<DecoGroup[]>('/api/v1/decos/groups');
|
|
}
|
|
|
|
export function createDecoGroup(body: CreateDecoGroupRequest): Promise<DecoGroup> {
|
|
return request<DecoGroup>('/api/v1/decos/groups', { body, method: 'POST' });
|
|
}
|
|
|
|
export function deleteDecoGroup(id: number): Promise<void> {
|
|
return request<void>(`/api/v1/decos/groups/${id}`, { method: 'DELETE' });
|
|
}
|
|
|
|
// Decos
|
|
|
|
export function getDecos(): Promise<DecoListItem[]> {
|
|
return request<DecoListItem[]>('/api/v1/decos');
|
|
}
|
|
|
|
export function getDeco(id: number): Promise<Deco> {
|
|
return request<Deco>(`/api/v1/decos/${id}`);
|
|
}
|
|
|
|
export function createDeco(body: CreateDecoRequest): Promise<Deco> {
|
|
return request<Deco>('/api/v1/decos', { body, method: 'POST' });
|
|
}
|
|
|
|
export function deleteDeco(id: number): Promise<void> {
|
|
return request<void>(`/api/v1/decos/${id}`, { method: 'DELETE' });
|
|
}
|
|
|
|
export function replaceDeco(id: number, body: Complete<ReplaceDecoRequest>): Promise<Deco> {
|
|
return request<Deco>(`/api/v1/decos/${id}`, { body, method: 'PUT' });
|
|
}
|
|
|
|
export function messageFromDecoError(error: unknown, fallback = 'Unable to load decos'): string {
|
|
if (error instanceof ApiError) {
|
|
return error.detail ?? error.message;
|
|
}
|
|
|
|
if (error instanceof Error) {
|
|
return error.message;
|
|
}
|
|
|
|
return fallback;
|
|
}
|