musdk_common/outgoing_message/
db.rs

1use std::borrow::Cow;
2
3use borsh::{BorshDeserialize, BorshSerialize};
4
5#[derive(Debug, BorshSerialize, BorshDeserialize)]
6pub struct Put<'a> {
7    pub table: Cow<'a, [u8]>,
8    pub key: Cow<'a, [u8]>,
9    pub value: Cow<'a, [u8]>,
10    pub is_atomic: bool,
11}
12
13#[derive(Debug, BorshSerialize, BorshDeserialize)]
14pub struct Get<'a> {
15    pub table: Cow<'a, [u8]>,
16    pub key: Cow<'a, [u8]>,
17}
18
19#[derive(Debug, BorshSerialize, BorshDeserialize)]
20pub struct Delete<'a> {
21    pub table: Cow<'a, [u8]>,
22    pub key: Cow<'a, [u8]>,
23    pub is_atomic: bool,
24}
25
26#[derive(Debug, BorshSerialize, BorshDeserialize)]
27pub struct DeleteByPrefix<'a> {
28    pub table: Cow<'a, [u8]>,
29    pub key_prefix: Cow<'a, [u8]>,
30}
31
32#[derive(Debug, BorshSerialize, BorshDeserialize)]
33pub struct Scan<'a> {
34    pub table: Cow<'a, [u8]>,
35    pub key_prefix: Cow<'a, [u8]>,
36    pub limit: u32,
37}
38
39#[derive(Debug, BorshSerialize, BorshDeserialize)]
40pub struct ScanKeys<'a> {
41    pub table: Cow<'a, [u8]>,
42    pub key_prefix: Cow<'a, [u8]>,
43    pub limit: u32,
44}
45
46#[derive(Debug, BorshSerialize, BorshDeserialize)]
47pub struct CompareAndSwap<'a> {
48    pub table: Cow<'a, [u8]>,
49    pub key: Cow<'a, [u8]>,
50    pub new_value: Cow<'a, [u8]>,
51    pub previous_value: Option<Cow<'a, [u8]>>,
52}
53
54type TableName<'a> = Cow<'a, [u8]>;
55type Key<'a> = Cow<'a, [u8]>;
56type Value<'a> = Cow<'a, [u8]>;
57
58#[derive(Debug, BorshSerialize, BorshDeserialize)]
59pub struct BatchPut<'a> {
60    pub table_key_value_triples: Vec<(TableName<'a>, Key<'a>, Value<'a>)>,
61    pub is_atomic: bool,
62}
63
64#[derive(Debug, BorshSerialize, BorshDeserialize)]
65pub struct BatchGet<'a> {
66    pub table_key_tuples: Vec<(TableName<'a>, Key<'a>)>,
67}
68
69#[derive(Debug, BorshSerialize, BorshDeserialize)]
70pub struct BatchDelete<'a> {
71    pub table_key_tuples: Vec<(TableName<'a>, Key<'a>)>,
72}
73
74#[derive(Debug, BorshSerialize, BorshDeserialize)]
75pub struct BatchScan<'a> {
76    pub table_key_prefix_tuples: Vec<(TableName<'a>, Key<'a>)>,
77    pub each_limit: u32,
78}
79
80#[derive(Debug, BorshSerialize, BorshDeserialize)]
81pub struct BatchScanKeys<'a> {
82    pub table_key_prefix_tuples: Vec<(TableName<'a>, Key<'a>)>,
83    pub each_limit: u32,
84}
85
86#[derive(Debug, BorshSerialize, BorshDeserialize)]
87pub struct TableList<'a> {
88    pub table_prefix: Cow<'a, [u8]>,
89}