dpp/document/
errors.rs

1use platform_value::Value;
2use thiserror::Error;
3
4use crate::errors::consensus::ConsensusError;
5
6use crate::document::accessors::v0::DocumentV0Getters;
7use crate::document::Document;
8#[cfg(feature = "state-transitions")]
9use crate::state_transition::state_transitions::document::batch_transition::batched_transition::document_transition::DocumentTransition;
10
11#[derive(Error, Debug)]
12pub enum DocumentError {
13    #[cfg(feature = "state-transitions")]
14    #[error("Document already exists")]
15    DocumentAlreadyExistsError {
16        document_transition: DocumentTransition,
17    },
18    #[cfg(feature = "state-transitions")]
19    #[error("Document was not provided for apply of state transition")]
20    DocumentNotProvidedError {
21        document_transition: DocumentTransition,
22    },
23    #[error("Invalid Document action number {0}")]
24    InvalidActionError(u8),
25    #[error("Invalid Document action submitted")]
26    InvalidActionNameError { actions: Vec<String> },
27    #[cfg(feature = "state-transitions")]
28    #[error("Invalid Document action '{}'", document_transition)]
29    InvalidDocumentActionError {
30        document_transition: DocumentTransition,
31    },
32    #[error("Invalid document: {}", errors[0])]
33    InvalidDocumentError {
34        errors: Vec<ConsensusError>,
35        raw_document: Value,
36    },
37
38    #[error("Invalid Document initial revision '{}'", document.revision().unwrap_or_default())]
39    InvalidInitialRevisionError { document: Box<Document> },
40
41    #[error("Revision absent on mutable document")]
42    RevisionAbsentError { document: Box<Document> },
43
44    #[error("Trying To Replace Immutable Document")]
45    TryingToReplaceImmutableDocument { document: Box<Document> },
46
47    #[error("Trying to delete indelible document")]
48    TryingToDeleteIndelibleDocument { document: Box<Document> },
49
50    #[error("Documents have mixed owner ids")]
51    MismatchOwnerIdsError { documents: Vec<Document> },
52
53    #[error("No previous revision error")]
54    DocumentNoRevisionError { document: Box<Document> },
55
56    #[error("No documents were supplied to state transition")]
57    NoDocumentsSuppliedError,
58}