1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use interrupt_support::Interrupted;
#[derive(Debug)]
pub enum QuotaReason {
TotalBytes,
ItemBytes,
MaxItems,
}
#[derive(Debug, thiserror::Error)]
pub enum ErrorKind {
#[error("Quota exceeded: {0:?}")]
QuotaError(QuotaReason),
#[error("Error parsing JSON data: {0}")]
JsonError(#[from] serde_json::Error),
#[error("Error executing SQL: {0}")]
SqlError(#[from] rusqlite::Error),
#[error("A connection of this type is already open")]
ConnectionAlreadyOpen,
#[error("An invalid connection type was specified")]
InvalidConnectionType,
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("Operation interrupted")]
InterruptedError(#[from] Interrupted),
#[error("Tried to close connection on wrong StorageApi instance")]
WrongApiForClose,
// This will happen if you provide something absurd like
// "/" or "" as your database path. For more subtley broken paths,
// we'll likely return an IoError.
#[error("Illegal database path: {0:?}")]
IllegalDatabasePath(std::path::PathBuf),
#[error("UTF8 Error: {0}")]
Utf8Error(#[from] std::str::Utf8Error),
#[error("Error opening database: {0}")]
OpenDatabaseError(#[from] sql_support::open_database::Error),
// When trying to close a connection but we aren't the exclusive owner of the containing Arc<>
#[error("Other shared references to this connection are alive")]
OtherConnectionReferencesExist,
#[error("The storage database has been closed")]
DatabaseConnectionClosed,
#[error("Sync Error: {0}")]
SyncError(String),
}
error_support::define_error! {
ErrorKind {
(JsonError, serde_json::Error),
(SqlError, rusqlite::Error),
(IoError, std::io::Error),
(InterruptedError, Interrupted),
(Utf8Error, std::str::Utf8Error),
(OpenDatabaseError, sql_support::open_database::Error),
}
}
|