dml_tools/
macros.rs

1#[macro_export]
2macro_rules! add_to_proc {
3    ($p:expr, $a:ident, $typ:tt, $met:tt, $($args:expr),*) => {
4        let $a = $typ::$met($($args),*);
5        $p.add(&$a);
6    };
7}
8
9#[macro_export]
10macro_rules! add_grant {
11    // ($p:expr, $a:ident, $($args:expr),*) => {
12    ($p:expr, $($args:expr),*) => {
13        add_to_proc!($p, g, Grant, new, $($args),*);
14    }
15}
16
17#[macro_export]
18macro_rules! add_owner {
19    // ($p:expr, $a:ident, $($args:expr),*) => {
20    ($p:expr, $($args:expr),*) => {
21        add_to_proc!($p, o, Owner, new, $($args),*);
22    }
23}
24
25#[macro_export]
26macro_rules! add_index {
27    // ($p:expr, $a:ident, $($args:expr),*) => {
28    ($p:expr, $($args:expr),*) => {
29        add_to_proc!($p, i, Index, new, $($args),*);
30    }
31}
32
33#[macro_export]
34macro_rules! grant_perms {
35    ($proc:expr, $roles:expr, $opath:expr) => {
36        add_owner!($proc, &($roles).rw, $opath);
37        add_grant!($proc, GrantType::All, &($roles).rw, $opath);
38        add_grant!($proc, GrantType::All, &($roles).upd, $opath);
39        add_grant!($proc, GrantType::Select, &($roles).ro, $opath);
40    }
41}  
42
43pub use add_to_proc;
44pub use add_grant;
45pub use add_owner;
46pub use add_index;
47pub use grant_perms;