env-docker-alfresco/scripts/restore-data.bat

82 lines
1.9 KiB
Batchfile

@echo off
call :prepare
call :restore
exit /B 0
:prepare
echo Preparing to restore ...
set THISDIR_REL=%~dp0
set THISDIR=%THISDIR_REL:~0,-1%
set DOCKER_COMPOSE_DIR=%THISDIR%
set DATA_DIR=%DOCKER_COMPOSE_DIR%/data
exit /B
:restore
if exist "%DATA_DIR%" (
echo Restore data directory found
echo Removing existing data ...
docker-compose --project-directory "%DOCKER_COMPOSE_DIR%" down --volumes
setlocal ENABLEDELAYEDEXPANSION
echo Performing a restore ...
endlocal
) else (
echo Restore data directory not found; doing nothing ...
)
exit /B
:restore_database
set CONTAINER_ID=%1
set SQL_SCHEMA_FILENAME=%2
set SQL_DATA_FILENAME=%3
set DB_NAME=%4
set DB_USERNAME=%5
set DISPLAY_NAME=%6
if exist "%DATA_DIR%\%SQL_SCHEMA_FILENAME%" (
echo Restoring the %DISPLAY_NAME% database ...
wait_pgdb %CONTAINER_ID%
echo SET session_replication_role = 'replica'; > c:\Windows\Temp\db-data.sql
type "%DATA_DIR%\%SQL_DATA_FILENAME%" >> c:\Windows\Temp\db-data.sql
echo Uploading %DISPLAY_NAME% database schema to Docker container ...
docker cp "%DATA_DIR%\%SQL_SCHEMA_FILENAME%" %CONTAINER_ID%:/tmp
echo Uploading %DISPLAY_NAME% database data to Docker container ...
docker cp c:\Windows\Temp\db-data.sql %CONTAINER_ID%:/tmp
del c:\Windows\Temp\db-data.sql
echo Restoring %DISPLAY_NAME% database schema ...
docker container exec %CONTAINER_ID% psql -U %DB_USERNAME% -f /tmp/%SQL_SCHEMA_FILENAME% %DB_NAME%
echo Restoring %DISPLAY_NAME% database data ...
docker container exec %CONTAINER_ID% psql -U %DB_USERNAME% -f /tmp/db-data.sql %DB_NAME%
)
exit /B
:restore_binaryData
set CONTAINER_ID=%1
set DATA_DIRECTORY=%2
set CONTAINER_PATH=%3
set DISPLAY_NAME=%4
if exist "%DATA_DIR%\%DATA_DIRECTORY%" (
echo Restoring the %DISPLAY_NAME% binary data ...
echo Copying %DISPLAY_NAME% binary data ...
docker cp "%DATA_DIR%\%DATA_DIRECTORY%" "%CONTAINER_ID%:%CONTAINER_PATH%"
)
exit /B