2021-08-06 15:25:50 +09:00
|
|
|
#!/bin/sh
|
|
|
|
|
export PGPASSWORD=$POSTGRES_PASSWORD
|
|
|
|
|
|
2023-09-22 16:37:13 -07:00
|
|
|
POSTGRES_CREATE_DB=${POSTGRES_CREATE_DB:-true}
|
|
|
|
|
POSTGRES_CREATE_DB_CONNECTION_DB=${POSTGRES_CREATE_DB_CONNECTION_DB:-postgres}
|
2025-10-02 04:53:31 +05:30
|
|
|
CDC_MCL_PROCESSING_ENABLED=${CDC_MCL_PROCESSING_ENABLED:-false}
|
|
|
|
|
CDC_USER=${CDC_USER:-datahub_cdc}
|
|
|
|
|
CDC_PASSWORD=${CDC_PASSWORD:-datahub_cdc}
|
2023-09-22 16:37:13 -07:00
|
|
|
|
2021-08-13 14:24:37 +09:00
|
|
|
# workaround create database if not exists, check https://stackoverflow.com/a/36591842
|
2023-09-22 16:37:13 -07:00
|
|
|
if [ "$POSTGRES_CREATE_DB" = true ]; then
|
|
|
|
|
psql -d "$POSTGRES_CREATE_DB_CONNECTION_DB" -U "$POSTGRES_USERNAME" -h "$POSTGRES_HOST" -p "$POSTGRES_PORT" -tc "SELECT 1 FROM pg_database WHERE datname = '${DATAHUB_DB_NAME}'" | grep -q 1 || psql -d "$POSTGRES_CREATE_DB_CONNECTION_DB" -U "$POSTGRES_USERNAME" -h "$POSTGRES_HOST" -p "$POSTGRES_PORT" -c "CREATE DATABASE ${DATAHUB_DB_NAME}"
|
|
|
|
|
fi
|
2021-08-13 14:24:37 +09:00
|
|
|
|
2025-10-02 04:53:31 +05:30
|
|
|
# Process main init script
|
2021-08-06 15:25:50 +09:00
|
|
|
sed -e "s/DATAHUB_DB_NAME/${DATAHUB_DB_NAME}/g" /init.sql | tee -a /tmp/init-final.sql
|
2025-10-02 04:53:31 +05:30
|
|
|
|
|
|
|
|
# Run main init script with regular user
|
2023-09-22 16:37:13 -07:00
|
|
|
psql -d "$DATAHUB_DB_NAME" -U "$POSTGRES_USERNAME" -h "$POSTGRES_HOST" -p "$POSTGRES_PORT" < /tmp/init-final.sql
|
2025-10-02 04:53:31 +05:30
|
|
|
|
|
|
|
|
# Conditionally create CDC user if enabled
|
|
|
|
|
if [ "${CDC_MCL_PROCESSING_ENABLED}" = "true" ]; then
|
|
|
|
|
echo "CDC MCL processing is enabled. Creating CDC user..."
|
|
|
|
|
|
|
|
|
|
if [ -z "${POSTGRES_PASSWORD}" ]; then
|
|
|
|
|
echo "ERROR: POSTGRES_PASSWORD must be set when CDC_MCL_PROCESSING_ENABLED=true"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Create CDC user script
|
|
|
|
|
sed -e "s/DATAHUB_DB_NAME/${DATAHUB_DB_NAME}/g" \
|
|
|
|
|
-e "s/CDC_USER/${CDC_USER}/g" \
|
|
|
|
|
-e "s/CDC_PASSWORD/${CDC_PASSWORD}/g" /init-cdc.sql > /tmp/init-cdc-final.sql
|
|
|
|
|
|
|
|
|
|
# Execute CDC user creation with regular user (who has sufficient privileges)
|
|
|
|
|
psql -d "$POSTGRES_CREATE_DB_CONNECTION_DB" -U "$POSTGRES_USERNAME" -h "$POSTGRES_HOST" -p "$POSTGRES_PORT" < /tmp/init-cdc-final.sql
|
|
|
|
|
|
|
|
|
|
echo "CDC user '$CDC_USER' created successfully."
|
|
|
|
|
fi
|