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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#[derive(PartialEq, Eq, Clone)]
pub enum CommandType {
Aggregate,
BuildInfo,
Count,
CreateCollection,
CreateIndexes,
CreateUser,
DeleteMany,
DeleteOne,
Distinct,
DropAllUsers,
DropCollection,
DropDatabase,
DropIndexes,
DropUser,
Find,
FindOneAndDelete,
FindOneAndReplace,
FindOneAndUpdate,
GetUser,
GetUsers,
InsertMany,
InsertOne,
IsMaster,
ListCollections,
ListDatabases,
ListIndexes,
Suppressed,
UpdateMany,
UpdateOne,
}
impl CommandType {
pub fn to_str(&self) -> &str {
match *self {
CommandType::Aggregate => "aggregate",
CommandType::BuildInfo => "buildinfo",
CommandType::Count => "count",
CommandType::CreateCollection => "create_collection",
CommandType::CreateIndexes => "create_indexes",
CommandType::CreateUser => "create_user",
CommandType::DeleteMany => "delete_many",
CommandType::DeleteOne => "delete_one",
CommandType::Distinct => "distinct",
CommandType::DropAllUsers => "drop_all_users",
CommandType::DropCollection => "drop_collection",
CommandType::DropDatabase => "drop_database",
CommandType::DropIndexes => "drop_indexes",
CommandType::DropUser => "drop_user",
CommandType::Find => "find",
CommandType::FindOneAndDelete => "find_one_and_delete",
CommandType::FindOneAndReplace => "find_one_and_replace",
CommandType::FindOneAndUpdate => "find_one_and_update",
CommandType::GetUser => "get_user",
CommandType::GetUsers => "get_users",
CommandType::InsertMany => "insert_many",
CommandType::InsertOne => "insert_one",
CommandType::IsMaster => "is_master",
CommandType::ListCollections => "list_collections",
CommandType::ListDatabases => "list_databases",
CommandType::ListIndexes => "list_indexes",
CommandType::Suppressed => "suppressed",
CommandType::UpdateMany => "update_many",
CommandType::UpdateOne => "update_one",
}
}
pub fn is_write_command(&self) -> bool {
match *self {
CommandType::CreateCollection |
CommandType::CreateIndexes |
CommandType::CreateUser |
CommandType::DeleteMany |
CommandType::DeleteOne |
CommandType::DropAllUsers |
CommandType::DropCollection |
CommandType::DropDatabase |
CommandType::DropIndexes |
CommandType::DropUser |
CommandType::FindOneAndDelete |
CommandType::FindOneAndReplace |
CommandType::FindOneAndUpdate |
CommandType::InsertMany |
CommandType::InsertOne |
CommandType::UpdateMany |
CommandType::UpdateOne => true,
CommandType::Aggregate |
CommandType::BuildInfo |
CommandType::Count |
CommandType::Distinct |
CommandType::Find |
CommandType::GetUser |
CommandType::GetUsers |
CommandType::IsMaster |
CommandType::ListCollections |
CommandType::ListDatabases |
CommandType::ListIndexes |
CommandType::Suppressed => false,
}
}
}