feat(web): 前端逻辑骨架——http/router/stores/queries 与薄壳路由
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import type {
|
||||
LogItem,
|
||||
Paginated,
|
||||
PaymentItem,
|
||||
UnixSec,
|
||||
UsageTotals,
|
||||
} from "@new-api-key-usage/core";
|
||||
import { memberHttp } from "../http.ts";
|
||||
|
||||
export type MemberMe = {
|
||||
id: number;
|
||||
name: string;
|
||||
};
|
||||
|
||||
export type MemberOverview = {
|
||||
member: { id: number | null; name: string | null };
|
||||
usage: UsageTotals;
|
||||
by_source: Array<{
|
||||
billing_source: string;
|
||||
count: number;
|
||||
quota: number;
|
||||
quota_usd: string;
|
||||
}>;
|
||||
keys: Array<{
|
||||
key_id: number;
|
||||
token_name: string;
|
||||
log_synced_at: UnixSec | null;
|
||||
usage: UsageTotals;
|
||||
}>;
|
||||
payments: PaymentItem[];
|
||||
};
|
||||
|
||||
export async function fetchMe(): Promise<MemberMe> {
|
||||
const { data } = await memberHttp.get<MemberMe>("/me");
|
||||
return data;
|
||||
}
|
||||
|
||||
export async function fetchOverview(range: {
|
||||
from: string;
|
||||
to: string;
|
||||
}): Promise<MemberOverview> {
|
||||
const { data } = await memberHttp.get<MemberOverview>("/overview", {
|
||||
params: range,
|
||||
});
|
||||
return data;
|
||||
}
|
||||
|
||||
export async function fetchLogs(
|
||||
range: { from: string; to: string; page: number; page_size: number },
|
||||
): Promise<Paginated<LogItem>> {
|
||||
const { data } = await memberHttp.get<Paginated<LogItem>>("/logs", {
|
||||
params: range,
|
||||
});
|
||||
return data;
|
||||
}
|
||||
Reference in New Issue
Block a user