lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

postgresql.sh (1241B)


      1 #!/bin/sh
      2 
      3 PSQL="/usr/bin/psql"
      4 
      5 free_megs() {
      6 	fsdir=$1
      7 	while [ ! -d "$fsdir" ]; do
      8 		fsdir=$(dirname $fsdir)
      9 	done
     10 	df -m $fsdir | while read fs bl us av cap mnt; do [ "$av" = "Available" ] || echo $av; done
     11 }
     12 
     13 pg_init_data() {
     14 	# make sure we got at least 50MB of free space
     15 	[ $(free_megs $1) -lt 50 ] && return 1
     16 	pg_ctl initdb -U postgres -D $1
     17 }
     18 
     19 pg_server_ready() {
     20 	t=0
     21 	while [ $t -le 90 ]; do
     22 		pg_ctl status -U postgres -D $1 2>/dev/null >/dev/null && return 0
     23 		t=$((t+1))
     24 		sleep 1
     25 	done
     26 	return 1
     27 }
     28 
     29 # $1: dbname, $2: username, $3: password
     30 pg_require_db() {
     31 	pg_test_db $@ && return 0
     32 	( echo "CREATE DATABASE $1;"
     33 	echo -n "CREATE USER $2"
     34 	[ "$3" ] && echo -n " WITH PASSWORD '$3'"
     35 	echo ";"
     36 	echo "GRANT ALL PRIVILEGES ON DATABASE \"$1\" to $2;" ) |
     37 		$PSQL -U postgres -d template1 -e
     38 	return $?
     39 }
     40 
     41 pg_test_db() {
     42 	PGPASSWORD=$3
     43 	echo "SHOW ALL;" | $PSQL -U $2 -d $1 -q 2>/dev/null >/dev/null
     44 	return $?
     45 }
     46 
     47 uci_require_db() {
     48 	local dbname dbuser dbpass
     49 	config_get dbname $1 name
     50 	config_get dbuser $1 user
     51 	config_get dbpass $1 pass
     52 	pg_require_db $dbname $dbuser $dbpass
     53 }
     54 
     55 [ "$1" = "init" ] && {
     56 	. /lib/functions.sh
     57 	pg_server_ready $2 || exit 1
     58 	config_load postgresql
     59 	config_foreach uci_require_db postgres-db
     60 }