// Message queue admin API functions - Tauri invoke layer import { invoke } from "@tauri-apps/api/core"; import type { MqClusterInfo, TenantInfo, TenantConfig, NamespaceRef, NamespaceInfo, NamespaceConfig, TopicRef, TopicInfo, ListTopicsOpts, TopicStats, SubscriptionInfo, ResetPosition, SkipCount, ConsumerInfo, ProducerInfo, PolicyScope, PublishRate, DispatchRate, SubscribeRate, BacklogQuota, RetentionPolicy, AuthAction, PermissionMap, MqTokenIssueRequest, MqTokenRecord, MqIssuedToken, BacklogStats, PeekedMessage, MqRawRequest, MqRawResponse, } from "@/types/mq"; // Connectivity export async function mqTestConnection(connectionId: string): Promise { return invoke("mq_test_connection", { connectionId }); } // Tenants export async function mqListTenants(connectionId: string): Promise { return invoke("mq_list_tenants", { connectionId }); } export async function mqGetTenant(connectionId: string, name: string): Promise { return invoke("mq_get_tenant", { connectionId, name }); } export async function mqCreateTenant(connectionId: string, name: string, config: TenantConfig): Promise { return invoke("mq_create_tenant", { connectionId, name, config }); } export async function mqUpdateTenant(connectionId: string, name: string, config: TenantConfig): Promise { return invoke("mq_update_tenant", { connectionId, name, config }); } export async function mqDeleteTenant(connectionId: string, name: string, force: boolean): Promise { return invoke("mq_delete_tenant", { connectionId, name, force }); } // Namespaces export async function mqListNamespaces(connectionId: string, tenant: string): Promise { return invoke("mq_list_namespaces", { connectionId, tenant }); } export async function mqCreateNamespace(connectionId: string, ns: NamespaceRef, config: NamespaceConfig): Promise { return invoke("mq_create_namespace", { connectionId, ns, config }); } export async function mqDeleteNamespace(connectionId: string, ns: NamespaceRef, force: boolean): Promise { return invoke("mq_delete_namespace", { connectionId, ns, force }); } export async function mqGetNamespacePolicies(connectionId: string, ns: NamespaceRef): Promise { return invoke("mq_get_namespace_policies", { connectionId, ns }); } // Topics export async function mqListTopics(connectionId: string, ns: NamespaceRef, opts: ListTopicsOpts): Promise { return invoke("mq_list_topics", { connectionId, ns, opts }); } export async function mqCreateTopic(connectionId: string, topic: TopicRef, partitions?: number): Promise { return invoke("mq_create_topic", { connectionId, topic, partitions }); } export async function mqDeleteTopic(connectionId: string, topic: TopicRef, force: boolean): Promise { return invoke("mq_delete_topic", { connectionId, topic, force }); } export async function mqUpdatePartitions(connectionId: string, topic: TopicRef, partitions: number): Promise { return invoke("mq_update_partitions", { connectionId, topic, partitions }); } export async function mqGetTopicStats(connectionId: string, topic: TopicRef): Promise { return invoke("mq_get_topic_stats", { connectionId, topic }); } export async function mqGetTopicInternalStats(connectionId: string, topic: TopicRef): Promise { return invoke("mq_get_topic_internal_stats", { connectionId, topic }); } // Subscriptions export async function mqListSubscriptions(connectionId: string, topic: TopicRef): Promise { return invoke("mq_list_subscriptions", { connectionId, topic }); } export async function mqCreateSubscription(connectionId: string, topic: TopicRef, sub: string, pos: ResetPosition): Promise { return invoke("mq_create_subscription", { connectionId, topic, sub, pos }); } export async function mqDeleteSubscription(connectionId: string, topic: TopicRef, sub: string, force: boolean): Promise { return invoke("mq_delete_subscription", { connectionId, topic, sub, force }); } export async function mqSkipMessages(connectionId: string, topic: TopicRef, sub: string, count: SkipCount): Promise { return invoke("mq_skip_messages", { connectionId, topic, sub, count }); } export async function mqResetCursor(connectionId: string, topic: TopicRef, sub: string, pos: ResetPosition): Promise { return invoke("mq_reset_cursor", { connectionId, topic, sub, pos }); } export async function mqClearBacklog(connectionId: string, topic: TopicRef, sub: string): Promise { return invoke("mq_clear_backlog", { connectionId, topic, sub }); } export async function mqPeekMessages(connectionId: string, topic: TopicRef, sub: string, count: number): Promise { return invoke("mq_peek_messages", { connectionId, topic, sub, count }); } export async function mqExpireMessages(connectionId: string, topic: TopicRef, sub: string, expireSeconds: number): Promise { return invoke("mq_expire_messages", { connectionId, topic, sub, expireSeconds }); } // Producers / Consumers export async function mqListProducers(connectionId: string, topic: TopicRef): Promise { return invoke("mq_list_producers", { connectionId, topic }); } export async function mqListConsumers(connectionId: string, topic: TopicRef, sub: string): Promise { return invoke("mq_list_consumers", { connectionId, topic, sub }); } export async function mqUnloadTopic(connectionId: string, topic: TopicRef): Promise { return invoke("mq_unload_topic", { connectionId, topic }); } // Policies export async function mqSetPublishRate(connectionId: string, scope: PolicyScope, rate: PublishRate): Promise { return invoke("mq_set_publish_rate", { connectionId, scope, rate }); } export async function mqSetDispatchRate(connectionId: string, scope: PolicyScope, rate: DispatchRate): Promise { return invoke("mq_set_dispatch_rate", { connectionId, scope, rate }); } export async function mqSetSubscribeRate(connectionId: string, scope: PolicyScope, rate: SubscribeRate): Promise { return invoke("mq_set_subscribe_rate", { connectionId, scope, rate }); } export async function mqSetBacklogQuota(connectionId: string, scope: PolicyScope, quota: BacklogQuota): Promise { return invoke("mq_set_backlog_quota", { connectionId, scope, quota }); } export async function mqSetRetention(connectionId: string, scope: PolicyScope, retention: RetentionPolicy): Promise { return invoke("mq_set_retention", { connectionId, scope, retention }); } export async function mqGetEffectivePolicies(connectionId: string, scope: PolicyScope): Promise { return invoke("mq_get_effective_policies", { connectionId, scope }); } // Permissions export async function mqGrantPermission(connectionId: string, scope: PolicyScope, role: string, actions: AuthAction[]): Promise { return invoke("mq_grant_permission", { connectionId, scope, role, actions }); } export async function mqRevokePermission(connectionId: string, scope: PolicyScope, role: string): Promise { return invoke("mq_revoke_permission", { connectionId, scope, role }); } export async function mqListPermissions(connectionId: string, scope: PolicyScope): Promise { return invoke("mq_list_permissions", { connectionId, scope }); } export async function mqIssueToken(connectionId: string, req: MqTokenIssueRequest): Promise { return invoke("mq_issue_token", { connectionId, req }); } export async function mqListTokenRecords(connectionId: string, subject?: string): Promise { return invoke("mq_list_token_records", { connectionId, subject }); } // Monitoring export async function mqGetBacklog(connectionId: string, topic: TopicRef, sub?: string): Promise { return invoke("mq_get_backlog", { connectionId, topic, sub }); } // Raw request export async function mqRawRequest(connectionId: string, req: MqRawRequest): Promise { return invoke("mq_raw_request", { connectionId, req }); }