1use std::{fmt::Debug, result};
2use thiserror::Error;
3
4#[derive(Error, Debug, PartialEq)]
5pub enum Errors {
6 #[error("failed to read from data file")]
7 FailedToReadFromDataFile,
8
9 #[error("failed to write to data file")]
10 FailedToWriteToDataFile,
11
12 #[error("failed to sync to data file")]
13 FailedToSyncToDataFile,
14
15 #[error("failed to open data file error")]
16 FailedToOpenDataFile,
17
18 #[error("the key is empty")]
19 KeyIsEmpty,
20
21 #[error("memory index failed to update")]
22 IndexUpdateFailed,
23
24 #[error("key is not found in database")]
25 KeyNotFound,
26
27 #[error("data file is not found in database")]
28 DataFileNotFound,
29
30 #[error("database dir path can not be empty")]
31 DirPathIsEmpty,
32
33 #[error("database data file size must be greater than 0")]
34 DataFileSizeTooSmall,
35
36 #[error("failed to create the database directory")]
37 FailedToCreateDatabaseDir,
38
39 #[error("failed to read the database directory")]
40 FailedToReadDatabaseDir,
41
42 #[error("database directory may be corrupted")]
43 DatabaseDirectoryCorrupted,
44
45 #[error("read data file eof")]
46 ReadDataFileEOF,
47
48 #[error("invalid crc value, log record maybe corrupted")]
49 InvalidLogRecordCrc,
50
51 #[error("exceed max batch number in one batch write")]
52 ExceedMaxBatchNum,
53
54 #[error("merge is in progress, try again later")]
55 MergeInProgress,
56
57 #[error("cannot use write batch, seq_no does not exist")]
58 UnableToUseWriteBatch,
59
60 #[error("the database directory is used by another process")]
61 DatabaseIsUsing,
62
63 #[error("invalid merge threshold value, must be in range (0, 1)")]
64 InvalidMergeThreshold,
65
66 #[error("merge threshold is unreached")]
67 MergeThresholdUnreached,
68
69 #[error("disk space is not enough for merge")]
70 MergeNoEnoughSpace,
71
72 #[error("failed to copy the database directory")]
73 FailedToCopyDirectory,
74}
75
76pub type Result<T> = result::Result<T, Errors>;