|
1 | 1 | use crate::error::VssError; |
2 | 2 | use crate::types::{ |
3 | | - DeleteObjectRequest, DeleteObjectResponse, GetObjectRequest, GetObjectResponse, KeyValue, |
| 3 | + DeleteObjectRequest, DeleteObjectResponse, GetObjectRequest, GetObjectResponse, |
4 | 4 | ListKeyVersionsRequest, ListKeyVersionsResponse, PutObjectRequest, PutObjectResponse, |
5 | 5 | }; |
6 | 6 | use async_trait::async_trait; |
| 7 | + |
| 8 | +#[cfg(test)] |
| 9 | +use crate::types::KeyValue; |
7 | 10 | #[cfg(test)] |
8 | 11 | use bytes::Bytes; |
9 | 12 | #[cfg(test)] |
10 | 13 | use rand::distributions::Alphanumeric; |
11 | 14 | #[cfg(test)] |
12 | 15 | use rand::{thread_rng, Rng}; |
13 | 16 |
|
14 | | -pub const GLOBAL_VERSION_KEY: &str = "global_version"; |
15 | | -pub const INITIAL_RECORD_VERSION: i32 = 1; |
| 17 | +pub(crate) const GLOBAL_VERSION_KEY: &str = "global_version"; |
| 18 | +pub(crate) const INITIAL_RECORD_VERSION: i32 = 1; |
| 19 | + |
| 20 | +/// An interface that must be implemented by every backend implementation of VSS. |
16 | 21 | #[async_trait] |
17 | 22 | pub trait KvStore: Send + Sync { |
| 23 | + /// Retrieves an object based on the provided request and user token. |
18 | 24 | async fn get( |
19 | 25 | &self, user_token: String, request: GetObjectRequest, |
20 | 26 | ) -> Result<GetObjectResponse, VssError>; |
| 27 | + |
| 28 | + /// Stores an object with the provided request and user token. |
21 | 29 | async fn put( |
22 | 30 | &self, user_token: String, request: PutObjectRequest, |
23 | 31 | ) -> Result<PutObjectResponse, VssError>; |
| 32 | + |
| 33 | + /// Deletes an object based on the provided request and user token. |
24 | 34 | async fn delete( |
25 | 35 | &self, user_token: String, request: DeleteObjectRequest, |
26 | 36 | ) -> Result<DeleteObjectResponse, VssError>; |
| 37 | + |
| 38 | + /// Lists the versions of keys based on the provided request and user token. |
27 | 39 | async fn list_key_versions( |
28 | 40 | &self, user_token: String, request: ListKeyVersionsRequest, |
29 | 41 | ) -> Result<ListKeyVersionsResponse, VssError>; |
30 | 42 | } |
31 | 43 |
|
| 44 | +/// Defines KvStoreTestSuite which is required for an implementation to be VSS protocol compliant. |
32 | 45 | #[macro_export] |
33 | 46 | macro_rules! define_kv_store_tests { |
34 | 47 | ($test_suite_name:ident, $store_type:path, $create_store_expr: expr) => { |
|
0 commit comments