Skip to content

Commit 38a6777

Browse files
committed
Improved logic to select target database on site install
1 parent 4e57440 commit 38a6777

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

commands/host/includes/aljibe_includes

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,20 @@ get_all_installable_sites() {
8383
echo "${INSTALLABLE_SITES_ALIASES_LIST[@]}"
8484
fi
8585
}
86+
87+
## Get the database name for a given site
88+
## $1: site alias
89+
## Returns: database name (db or db_SITENAME)
90+
## Example: get_database_name "self.local"
91+
get_database_name() {
92+
local SITE_ALIAS=$1
93+
local SITE_PATH=$(ddev drush @${SITE_ALIAS} status --field=site)
94+
95+
if [ "$SITE_PATH" == "sites/default" ]; then
96+
echo "db"
97+
else
98+
# Extract site name from path
99+
local SITE_NAME=$(echo "$SITE_PATH" | sed 's|sites/||' | sed 's/[^a-zA-Z0-9]//g')
100+
echo "db_${SITE_NAME}"
101+
fi
102+
}

commands/host/site-install

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,21 @@ chmod u+w ${DDEV_DOCROOT}/${SITE_PATH} -R
7575
mkdir -p ${DDEV_DOCROOT}/${SITE_PATH}/files/behat/errors
7676

7777
# Ensure that the settings.ddev.php file exists and is properly configured
78-
if [ "$SITE" == "default" ] || [ "$SITE" == "self" ]; then
79-
DBNAME="" # Use default db
80-
else
81-
DBNAME=$(echo $SITE | sed 's/[^a-zA-Z0-9]//g')
78+
DBNAME=$(get_database_name "${SITE_ALIAS}")
79+
echo "Using database: ${DBNAME}"
80+
81+
if [ "$SITE_PATH" != "sites/default" ]; then
8282
if [ ! -f ${DDEV_DOCROOT}/${SITE_PATH}/settings.ddev.php ]; then
8383
cp ${DDEV_DOCROOT}/sites/default/settings.ddev.php ${DDEV_DOCROOT}/${SITE_PATH}/settings.ddev.php
84-
sed -i "s/\['database'\] = \"db\"/\['database'\] = \"db_${DBNAME}\"/g" ${DDEV_DOCROOT}/${SITE_PATH}/settings.ddev.php
84+
sed -i "s/\['database'\] = \"db\"/\['database'\] = \"${DBNAME}\"/g" ${DDEV_DOCROOT}/${SITE_PATH}/settings.ddev.php
8585
fi
86-
ddev create-database db_${DBNAME} || exit 1
86+
ddev create-database ${DBNAME} || exit 1
8787
fi
88-
echo "Using database: db${DBNAME:+_$DBNAME}"
8988

9089

9190
# Take care of redis settings if needed
9291
if [ -f ${DDEV_DOCROOT}/sites/default/settings.ddev.redis.php ]; then
93-
cp ${DDEV_DOCROOT}/sites/default/settings.ddev.redis.php ${DDEV_DOCROOT}/${SITE_PATH}/settings.ddev.redis.php
92+
cp -f ${DDEV_DOCROOT}/sites/default/settings.ddev.redis.php ${DDEV_DOCROOT}/${SITE_PATH}/settings.ddev.redis.php
9493

9594
SETTINGS_FILE_NAME="${DDEV_DOCROOT}/${SITE_PATH}/settings.php"
9695
if grep "Include settings required for Redis cache" $SETTINGS_FILE_NAME; then
@@ -125,7 +124,7 @@ run_hooks "pre_site_install"
125124
if [ "$INSTALL_MODE" == "db" ]; then
126125
echo -e "\nLoading database from file $DB_FILE"
127126
run_hooks "pre_site_install_db"
128-
ddev import-db --file $DB_FILE --database db${DBNAME:+_$DBNAME} || exit 1
127+
ddev import-db --file $DB_FILE --database ${DBNAME} || exit 1
129128
ddev_drush deploy
130129
run_hooks "post_site_install_db"
131130
elif [ "$INSTALL_MODE" == "config" ]; then

0 commit comments

Comments
 (0)