use appcore_types::{
CapabilityDescriptor, CapabilityMode, CapabilityName, CapabilityRequirements,
CapabilityVisibility,
};
use serde::{Deserialize, Serialize};
pub const GATEWAY_RUNTIME_CAPABILITY: &str = "runtime.gateway";
pub fn gateway_capability_descriptor() -> crate::GatewayResult<CapabilityDescriptor> {
Ok(CapabilityDescriptor::new(
CapabilityName::new(GATEWAY_RUNTIME_CAPABILITY)?,
env!("CARGO_PKG_VERSION"),
CapabilityMode::Stream,
CapabilityVisibility::Tenant,
)
.with_requirements(CapabilityRequirements {
requires_leader: false,
read_only: false,
idempotency_required: false,
}))
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct GatewayCapability {
pub name: CapabilityName,
pub version: String,
}
impl GatewayCapability {
pub fn new(name: CapabilityName, version: impl Into<String>) -> Self {
Self {
name,
version: version.into(),
}
}
}