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}