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, $($args:expr),*) => {
13 add_to_proc!($p, g, Grant, new, $($args),*);
14 }
15}
16
17#[macro_export]
18macro_rules! add_owner {
19 ($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, $($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;