Project

General

Profile

1
#!/bin/bash -e
2

    
3
if false; then #### run script template:
4
#!/bin/bash -e
5
. "$(dirname "${BASH_SOURCE[0]}")"/path/to/table.run
6

    
7
func_override import__table_run
8
import()
9
{
10
	echo_func
11
	before_import_cmds
12
	self_make import__table_run "$@"
13
	after_import_cmds
14
}
15
fi ####
16

    
17
. "$(dirname "${BASH_SOURCE[0]}")"/import.run
18
.rel subdir.run
19
.rel ../sh/db_make.sh
20

    
21
if self_not_included; then
22

    
23
: "${table=$subdir}"; export table
24

    
25
table_make() { subdir_make "$@"; }
26

    
27
install_log_rel=logs/install.log.sql
28

    
29
table_make_install()
30
{
31
	echo_func; local install_log="${install_log-$top_dir/$install_log_rel}"
32
	local verbosity_min= # install logs require default verbosity
33
	set -- table_make "$@"
34
	if remaking || test ! -e "$install_log"; then "$@" # OK to clobber log
35
	else benign_error=1 noclobber=1 "$@" || true
36
	fi
37
}
38

    
39
datasrc_make_install()
40
{
41
	echo_func
42
	subdir=. install_log="$top_dir/../$install_log_rel" table_make_install "$@"
43
}
44

    
45
postprocess_sql="$top_dir"/postprocess.sql
46

    
47
is_view="$(test -e "$postprocess_sql" \
48
&& grep -F force_update_view "$postprocess_sql" >/dev/null; exit2bool)"
49

    
50
map_table()
51
# note that collisions may prevent all renames from being made at once.
52
# if this is the case, run map_table repeatedly until no more renames are made:
53
# $ while true; do .../run map_table; done
54
# collisions may result if the staging table gets messed up (e.g. due to missing
55
# input columns in map.csv).
56
{
57
	echo_func; set_make_vars
58
	if test "$is_view"; then return 0; fi # do not rename view columns
59
	
60
	table_make map.csv
61
	local map_table="\"~$table.map\"" # sort after other tables to avoid clutter
62
	psql <<EOF
63
SELECT util.reset_map_table('$map_table');
64
ALTER TABLE $map_table DISABLE TRIGGER map_filter_insert;
65
\copy $map_table FROM 'map.csv' CSV HEADER;
66
SELECT util.set_col_names_with_metadata('"$table"', '$map_table'::regclass);
67
EOF
68
}
69

    
70
mk_derived()
71
{ echo_func; set_make_vars; "$root_dir"/schemas/VegCore/mk_derived; }
72

    
73
remake_VegBIEN_mappings()
74
{
75
	echo_func; set_make_vars
76
	public_schema_exists || return 0
77
	if remaking; then in_top_dir rm map.csv; fi # remake it
78
	piped_cmd yes|table_make test
79
}
80

    
81
custom_postprocess() # overridable
82
{
83
	echo_func; set_make_vars
84
	local file="$postprocess_sql"
85
	if test -e "$file"; then psql "$@"; fi
86
}
87

    
88
load_data()
89
{
90
	echo_func; set_make_vars
91
	datasrc_make_install schema
92
	table_make_install ${_remake:+re}install # just the table
93
}
94

    
95
postprocess()
96
{
97
	echo_func; set_make_vars
98
	map_table
99
	custom_postprocess
100
	mk_derived
101
	if test "$can_test"; then remake_VegBIEN_mappings; fi
102
}
103

    
104
import()
105
{
106
	echo_func; set_make_vars
107
	kw_params can_test; local can_test="${can_test-1}"
108
	self_make load_data
109
	postprocess
110
}
111

    
112
fi
(5-5/7)