3
3
4
4
import asyncpg
5
5
6
- from pgcachewatch import queries
6
+ from pgcachewatch import models , queries
7
7
8
8
9
9
def cliparser () -> argparse .Namespace :
10
- common_arguments = argparse .ArgumentParser (add_help = False )
10
+ common_arguments = argparse .ArgumentParser (
11
+ add_help = False ,
12
+ prog = "pgcachewatch" ,
13
+ )
11
14
common_arguments .add_argument (
12
15
"--channel-name" ,
13
- default = "ch_pgcachewatch_table_change" ,
16
+ default = models . DEFAULT_PG_CHANNE ,
14
17
help = (
15
18
"The PGNotify channel that will be used by pgcachewatch to listen "
16
19
"for changes on tables, this should be uniq to pgcachewatch clients."
@@ -20,23 +23,24 @@ def cliparser() -> argparse.Namespace:
20
23
"--function-name" ,
21
24
default = "fn_pgcachewatch_table_change" ,
22
25
help = (
23
- "The name of postgres 'helper function' that emits the on change evnets. "
24
- "This must be uniq ."
26
+ "The prefix of the postgres 'helper function' that emits "
27
+ "the on change evnets ."
25
28
),
26
29
)
27
30
common_arguments .add_argument (
28
31
"--trigger-name" ,
29
- default = "tg_pgcachewatch_table_change_ " ,
32
+ default = "tg_pgcachewatch_table_change " ,
30
33
help = "All triggers installed on tables will start with this prefix." ,
31
34
)
32
35
common_arguments .add_argument (
33
36
"--commit" ,
34
37
action = "store_true" ,
35
- help = "Commit changes to DB ." ,
38
+ help = "Commit changes to database ." ,
36
39
)
37
40
38
41
parser = argparse .ArgumentParser (
39
42
formatter_class = argparse .ArgumentDefaultsHelpFormatter ,
43
+ prog = "pgcachewatch" ,
40
44
)
41
45
42
46
subparsers = parser .add_subparsers (dest = "command" , required = True )
@@ -60,29 +64,32 @@ def cliparser() -> argparse.Namespace:
60
64
async def main () -> None :
61
65
parsed = cliparser ()
62
66
67
+ pg_fn_name = f"{ parsed .function_name } _{ parsed .channel_name } "
68
+ pg_tg_name = f"{ parsed .trigger_name } _{ parsed .channel_name } "
69
+
63
70
match parsed .command :
64
71
case "install" :
65
- install = [
66
- queries .create_notify_function (
67
- channel_name = parsed .channel_name ,
68
- function_name = parsed .function_name ,
69
- )
70
- ]
71
-
72
- for table in parsed .tables :
73
- install .append (
72
+ install = "\n " .join (
73
+ [
74
+ queries .create_notify_function (
75
+ channel_name = parsed .channel_name ,
76
+ function_name = pg_fn_name ,
77
+ )
78
+ ]
79
+ + [
74
80
queries .create_after_change_trigger (
81
+ trigger_name = pg_tg_name ,
75
82
table_name = table ,
76
- channel_name = parsed .channel_name ,
77
- function_name = parsed .function_name ,
78
- trigger_name_prefix = parsed .trigger_name ,
83
+ function_name = pg_fn_name ,
79
84
)
80
- )
85
+ for table in parsed .tables
86
+ ]
87
+ )
88
+
89
+ print (install , flush = True )
81
90
82
- combined = "\n " .join (install )
83
- print (combined , flush = True )
84
91
if parsed .commit :
85
- await (await asyncpg .connect ()).execute (combined )
92
+ await (await asyncpg .connect ()).execute (install )
86
93
else :
87
94
print (
88
95
"::: Use '--commit' to write changes to db. :::" ,
@@ -91,15 +98,15 @@ async def main() -> None:
91
98
92
99
case "uninstall" :
93
100
trigger_names = await (await asyncpg .connect ()).fetch (
94
- queries .fetch_trigger_names (parsed . trigger_name ),
101
+ queries .fetch_trigger_names (pg_tg_name ),
95
102
)
96
103
combined = "\n " .join (
97
104
(
98
105
"\n " .join (
99
106
queries .drop_trigger (t ["trigger_name" ], t ["table" ])
100
107
for t in trigger_names
101
108
),
102
- queries .drop_function (parsed . function_name ),
109
+ queries .drop_function (pg_fn_name ),
103
110
)
104
111
)
105
112
print (combined , flush = True )
0 commit comments