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
mod serialization;
pub mod structs;

extern "C" {
    fn __asml_abi_invoke(
        mem: *const u8,
        name_ptr: *const u8,
        name_len: usize,
        input_ptr: *const u8,
        input_len: usize,
    ) -> i32;
}

pub mod database {
    use paste;
    use serde_json;

    use assemblylift_core_event_guest::Event;
    use assemblylift_core_guest::*;

    use crate::structs::{
        DeleteItemInput, DeleteItemOutput, GetItemInput, GetItemOutput, ListTablesInput,
        ListTablesOutput, PutItemInput, PutItemOutput, UpdateItemInput, UpdateItemOutput,
    };

    call!(aws => dynamodb => list_tables, ListTablesInput => ListTablesOutput);
    call!(aws => dynamodb => put_item, PutItemInput => PutItemOutput);
    call!(aws => dynamodb => get_item, GetItemInput => GetItemOutput);
    call!(aws => dynamodb => delete_item, DeleteItemInput => DeleteItemOutput);
    call!(aws => dynamodb => update_item, UpdateItemInput => UpdateItemOutput);

    #[macro_export]
    macro_rules! val {
        (B => $val:expr) => {{
            let mut attr = AttributeValue::default();
            attr.b = Some($val);
            attr
        }};
        (S => $val:expr) => {{
            let mut attr = AttributeValue::default();
            attr.s = Some($val.to_string());
            attr
        }};
        (N => $val:expr) => {{
            let mut attr = AttributeValue::default();
            attr.n = Some($val.to_string());
            attr
        }};
    }
}