import { api } from '@/utils/request' import type { PaginatedData, ApiKeyRecord, AdminApiKeyFilters } from '@/types/api' export const useAdminApiKeyStore = defineStore('admin-api-key', () => { const keys = ref([]) const loading = ref(false) const pagination = reactive({ page: 1, per_page: 15, total: 0, }) const filters = reactive({ user_id: undefined, enabled: undefined, }) async function fetchAllKeys() { loading.value = true try { const data = await api.get>('/api/v1/admin/api-keys', { page: pagination.page, per_page: pagination.per_page, user_id: filters.user_id, enabled: filters.enabled, }) keys.value = data.items pagination.total = data.total pagination.page = data.page } catch (err: unknown) { const msg = err instanceof Error ? err.message : '获取 API Key 列表失败' message.error(msg) } finally { loading.value = false } } async function toggleKey(id: number, enabled: boolean) { try { await api.patch(`/api/v1/admin/api-keys/${id}/toggle`, { enabled }) await fetchAllKeys() } catch (err: unknown) { const msg = err instanceof Error ? err.message : '操作失败' message.error(msg) } } async function deleteKey(id: number) { try { await api.delete(`/api/v1/admin/api-keys/${id}`) await fetchAllKeys() message.success('已删除') } catch (err: unknown) { const msg = err instanceof Error ? err.message : '删除失败' message.error(msg) } } async function toggleUserApiKeyEnabled(userId: number, enabled: boolean) { try { await api.patch(`/api/v1/users/${userId}/api-key-enabled`, { enabled }) await fetchAllKeys() } catch (err: unknown) { const msg = err instanceof Error ? err.message : '操作失败' message.error(msg) } } function resetFilters() { filters.user_id = undefined filters.enabled = undefined pagination.page = 1 } return { keys, loading, pagination, filters, fetchAllKeys, toggleKey, deleteKey, toggleUserApiKeyEnabled, resetFilters, } })