mirror of
https://github.com/zulip/zulip.git
synced 2026-06-18 21:01:52 +08:00
This fixes some issues that we've had where commands will fail is confusing ways after the database is rebuilt because data from before the database was dropped is still in the memcached cache.
74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#!/bin/bash -xe
|
|
|
|
ROOT_POSTGRES="sudo -u postgres psql"
|
|
DEFAULT_DB=""
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
ROOT_POSTGRES="psql"
|
|
DEFAULT_DB="postgres"
|
|
fi
|
|
|
|
VAGRANTUSERNAME=$(whoami)
|
|
|
|
if [[ $# == 0 ]]; then
|
|
USERNAME=zulip
|
|
PASSWORD=$("$(dirname "$0")/../bin/get-django-setting" LOCAL_DATABASE_PASSWORD)
|
|
DBNAME=zulip
|
|
SEARCH_PATH="$USERNAME",public
|
|
elif [[ $# == 4 ]]; then
|
|
USERNAME=$1
|
|
PASSWORD=$2
|
|
DBNAME=$3
|
|
SEARCH_PATH=$4
|
|
else
|
|
echo "Usage Instructions"
|
|
echo "Run with either no arguments (sets up devel db for local deploy--zulip with user zulip)"
|
|
echo "or specify <db-username> <password> <db-name> <user-schema-search-path>"
|
|
exit
|
|
fi
|
|
|
|
DBNAME_BASE=${DBNAME}_base
|
|
|
|
$ROOT_POSTGRES "$DEFAULT_DB" << EOF
|
|
CREATE USER $USERNAME;
|
|
ALTER USER $USERNAME PASSWORD '$PASSWORD';
|
|
ALTER USER $USERNAME CREATEDB;
|
|
ALTER ROLE $USERNAME SET search_path TO $SEARCH_PATH;
|
|
|
|
CREATE USER $VAGRANTUSERNAME;
|
|
GRANT $USERNAME TO $VAGRANTUSERNAME;
|
|
ALTER ROLE $VAGRANTUSERNAME SET search_path TO $SEARCH_PATH;
|
|
EOF
|
|
|
|
umask go-rw
|
|
PGPASS_PREFIX="*:*:*:$USERNAME:"
|
|
PGPASS_ESCAPED_PREFIX="*:\*:\*:$USERNAME:"
|
|
if ! grep -q "$PGPASS_ESCAPED_PREFIX" ~/.pgpass; then
|
|
echo "$PGPASS_PREFIX$PASSWORD" >> ~/.pgpass
|
|
else
|
|
sed -i "s/$PGPASS_ESCAPED_PREFIX.*\$/$PGPASS_PREFIX$PASSWORD/" ~/.pgpass
|
|
fi
|
|
chmod go-rw ~/.pgpass
|
|
|
|
psql -h localhost postgres "$USERNAME" <<EOF
|
|
DROP DATABASE IF EXISTS $DBNAME;
|
|
DROP DATABASE IF EXISTS $DBNAME_BASE;
|
|
CREATE DATABASE $DBNAME_BASE
|
|
EOF
|
|
|
|
psql -h localhost "$DBNAME_BASE" "$USERNAME" <<EOF
|
|
CREATE SCHEMA zulip;
|
|
EOF
|
|
|
|
$ROOT_POSTGRES "$DBNAME_BASE" << EOF
|
|
CREATE EXTENSION tsearch_extras SCHEMA zulip;
|
|
EOF
|
|
|
|
psql -h localhost postgres "$USERNAME" <<EOF
|
|
CREATE DATABASE $DBNAME TEMPLATE $DBNAME_BASE;
|
|
EOF
|
|
|
|
sh "$(dirname "$0")/../scripts/setup/flush-memcached"
|
|
|
|
echo "Database created"
|
|
|