diff options
Diffstat (limited to 'makima/frontend/src/lib/api.ts')
| -rw-r--r-- | makima/frontend/src/lib/api.ts | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/makima/frontend/src/lib/api.ts b/makima/frontend/src/lib/api.ts index 2ea1128..100a85a 100644 --- a/makima/frontend/src/lib/api.ts +++ b/makima/frontend/src/lib/api.ts @@ -1973,3 +1973,77 @@ export async function answerQuestion( } return res.json(); } + +// ============================================================================= +// Repository History Types and API +// ============================================================================= + +export interface RepositoryHistoryEntry { + id: string; + ownerId: string; + name: string; + repositoryUrl: string | null; + localPath: string | null; + sourceType: "remote" | "local"; + useCount: number; + lastUsedAt: string; + createdAt: string; +} + +export interface RepositoryHistoryListResponse { + entries: RepositoryHistoryEntry[]; + total: number; +} + +/** + * List all repository history entries. + * Returns entries ordered by use_count DESC, last_used_at DESC. + */ +export async function listRepositoryHistory(): Promise<RepositoryHistoryListResponse> { + const res = await authFetch(`${API_BASE}/api/v1/settings/repository-history`); + if (!res.ok) { + throw new Error(`Failed to list repository history: ${res.statusText}`); + } + return res.json(); +} + +/** + * Get repository suggestions based on history. + * Optionally filter by source type and search query. + */ +export async function getRepositorySuggestions( + sourceType?: "remote" | "local", + query?: string, + limit?: number +): Promise<RepositoryHistoryListResponse> { + const params = new URLSearchParams(); + if (sourceType) params.append("source_type", sourceType); + if (query) params.append("query", query); + if (limit) params.append("limit", limit.toString()); + + const queryString = params.toString(); + const url = `${API_BASE}/api/v1/settings/repository-history/suggestions${ + queryString ? `?${queryString}` : "" + }`; + + const res = await authFetch(url); + if (!res.ok) { + throw new Error(`Failed to get repository suggestions: ${res.statusText}`); + } + return res.json(); +} + +/** + * Delete a repository history entry. + */ +export async function deleteRepositoryHistory(id: string): Promise<void> { + const res = await authFetch( + `${API_BASE}/api/v1/settings/repository-history/${id}`, + { + method: "DELETE", + } + ); + if (!res.ok) { + throw new Error(`Failed to delete repository history: ${res.statusText}`); + } +} |
