fix: tighten decision center query paths
This commit is contained in:
@@ -258,6 +258,7 @@ function recordQuery(args: string[], options: { requirementOnly?: boolean } = {}
|
||||
if (tag !== undefined) params.set("tag", tag);
|
||||
if (queryText !== undefined) params.set("q", queryText);
|
||||
if (limit !== undefined) params.set("limit", limit);
|
||||
if (args.includes("--include-body")) params.set("includeBody", "true");
|
||||
return params.toString();
|
||||
}
|
||||
|
||||
@@ -302,14 +303,22 @@ async function listDiaryMonthsAsync(fetcher: (path: string, init?: { method?: st
|
||||
return unwrapProxyResponse(await decisionProxyAsync(fetcher, "/api/diary/months"));
|
||||
}
|
||||
|
||||
function showDiary(key: string | undefined): unknown {
|
||||
if (!key) throw new Error("decision diary show requires entry id or YYYY-MM-DD date");
|
||||
return unwrapProxyResponse(decisionProxy(`/api/diary/entries/${encodeURIComponent(key)}`));
|
||||
function diaryShowQuery(args: string[]): string {
|
||||
const params = new URLSearchParams();
|
||||
const sourceFile = optionValue(args, ["--source-file", "--source-path", "--source"]);
|
||||
if (sourceFile !== undefined) params.set("sourceFile", sourceFile);
|
||||
const query = params.toString();
|
||||
return query ? `?${query}` : "";
|
||||
}
|
||||
|
||||
async function showDiaryAsync(key: string | undefined, fetcher: (path: string, init?: { method?: string; body?: unknown }) => Promise<unknown>): Promise<unknown> {
|
||||
function showDiary(key: string | undefined, args: string[] = []): unknown {
|
||||
if (!key) throw new Error("decision diary show requires entry id or YYYY-MM-DD date");
|
||||
return unwrapProxyResponse(await decisionProxyAsync(fetcher, `/api/diary/entries/${encodeURIComponent(key)}`));
|
||||
return unwrapProxyResponse(decisionProxy(`/api/diary/entries/${encodeURIComponent(key)}${diaryShowQuery(args)}`));
|
||||
}
|
||||
|
||||
async function showDiaryAsync(key: string | undefined, fetcher: (path: string, init?: { method?: string; body?: unknown }) => Promise<unknown>, args: string[] = []): Promise<unknown> {
|
||||
if (!key) throw new Error("decision diary show requires entry id or YYYY-MM-DD date");
|
||||
return unwrapProxyResponse(await decisionProxyAsync(fetcher, `/api/diary/entries/${encodeURIComponent(key)}${diaryShowQuery(args)}`));
|
||||
}
|
||||
|
||||
function todayDiary(): unknown {
|
||||
@@ -460,7 +469,7 @@ export async function runDecisionCenterCommand(_config: UniDeskConfig, args: str
|
||||
if (diaryAction === "history") return diaryHistory(args.slice(2));
|
||||
if (diaryAction === "months") return listDiaryMonths();
|
||||
if (diaryAction === "today") return args.includes("--edit") ? editTodayDiary(args.slice(2).filter((arg) => arg !== "--edit")) : todayDiary();
|
||||
if (diaryAction === "show") return showDiary(diaryId);
|
||||
if (diaryAction === "show") return showDiary(diaryId, args.slice(3));
|
||||
if (diaryAction === "edit" || diaryAction === "upsert") return editDiary(args.slice(2));
|
||||
throw new Error("decision diary command must be one of: import, list, history, months, today, show, edit, upsert");
|
||||
}
|
||||
@@ -496,7 +505,7 @@ export async function runDecisionCenterCommandAsync(
|
||||
if (diaryAction === "history") return diaryHistoryAsync(args.slice(2), fetcher);
|
||||
if (diaryAction === "months") return listDiaryMonthsAsync(fetcher);
|
||||
if (diaryAction === "today") return args.includes("--edit") ? editTodayDiaryAsync(args.slice(2).filter((arg) => arg !== "--edit"), fetcher) : todayDiaryAsync(fetcher);
|
||||
if (diaryAction === "show") return showDiaryAsync(diaryId, fetcher);
|
||||
if (diaryAction === "show") return showDiaryAsync(diaryId, fetcher, args.slice(3));
|
||||
if (diaryAction === "edit" || diaryAction === "upsert") return editDiaryAsync(args.slice(2), fetcher);
|
||||
throw new Error("decision diary command must be one of: import, list, history, months, today, show, edit, upsert");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user