1use rskit_errors::AppResult;
4use serde_json::Value;
5
6use crate::{Json, ValidationLimits, limits::check_json_limits};
7
8#[derive(Debug, Clone, PartialEq)]
10pub struct SchemaDocument {
11 value: Json,
12}
13
14impl SchemaDocument {
15 pub fn new(value: Json) -> AppResult<Self> {
17 Self::with_limits(value, ValidationLimits::default())
18 }
19
20 pub fn with_limits(value: Json, limits: ValidationLimits) -> AppResult<Self> {
22 check_json_limits("schema", &value, limits)?;
23 Ok(Self { value })
24 }
25
26 pub fn as_json(&self) -> &Value {
28 &self.value
29 }
30
31 #[must_use]
33 pub fn into_json(self) -> Json {
34 self.value
35 }
36}