use serde_json::Value;
use uuid::Uuid;
pub mod compiler;
pub mod enforcer;
pub use compiler::{ConstraintCompileError, compile_to_access_scope};
pub use enforcer::{AccessRequest, EnforcerError, PolicyEnforcer, ResourceType};
pub trait IntoPropertyValue {
fn into_filter_value(self) -> Value;
}
impl IntoPropertyValue for Uuid {
#[inline]
fn into_filter_value(self) -> Value {
Value::String(self.to_string())
}
}
impl IntoPropertyValue for &Uuid {
#[inline]
fn into_filter_value(self) -> Value {
Value::String(self.to_string())
}
}
impl IntoPropertyValue for String {
#[inline]
fn into_filter_value(self) -> Value {
Value::String(self)
}
}
impl IntoPropertyValue for &str {
#[inline]
fn into_filter_value(self) -> Value {
Value::String(self.to_owned())
}
}
impl IntoPropertyValue for i64 {
#[inline]
fn into_filter_value(self) -> Value {
Value::Number(self.into())
}
}
impl IntoPropertyValue for bool {
#[inline]
fn into_filter_value(self) -> Value {
Value::Bool(self)
}
}
impl IntoPropertyValue for Value {
#[inline]
fn into_filter_value(self) -> Value {
self
}
}