@echo off chcp 437 setlocal enabledelayedexpansion set DEPLOY_DIR=%~dp0..\deploy set DB_NAME=seeyon_fs if "%~1"=="" ( echo Usage: deploy.bat 1/2/3/4 echo 1=MySQL 2=PostgreSQL 3=SQLServer 4=Oracle pause >nul exit /b 1 ) set DB_TYPE=%~1 echo. echo ================================ echo Build DB type: %DB_TYPE% echo ================================ echo. echo Remove old deploy... if exist %DEPLOY_DIR% rmdir /s /q %DEPLOY_DIR% mkdir %DEPLOY_DIR%\data\storage\hot 2>nul mkdir %DEPLOY_DIR%\data\storage\cold 2>nul mkdir %DEPLOY_DIR%\data\storage\public 2>nul mkdir %DEPLOY_DIR%\data\storage\slave 2>nul echo Building... set GOPROXY=https://goproxy.cn go build -ldflags="-s -w" -o %DEPLOY_DIR%\server.exe main.go if errorlevel 1 ( echo Build failed pause >nul exit /b 1 ) copy config.yaml %DEPLOY_DIR%\config.yaml.example >nul xcopy /E /I /Q sql %DEPLOY_DIR%\sql >nul :: -------------- start.bat -------------- ( echo @echo off echo cd %%~dp0 echo if not exist config.yaml ( echo copy config.yaml.example config.yaml echo echo Please edit config.yaml first. echo pause >nul echo exit /b 1 echo ^) echo server.exe echo pause >nul ) > %DEPLOY_DIR%\start.bat :: -------------- start.sh -------------- ( echo #!/bin/bash echo cd "$(dirname "$0")" echo if [ ! -f config.yaml ]; then echo cp config.yaml.example config.yaml echo echo "Please edit config.yaml first." echo exit 1 echo fi echo chmod +x server echo ./server ) > %DEPLOY_DIR%\start.sh :: -------------- init-db.bat -------------- ( echo @echo off echo cd %%~dp0 echo echo Database: %DB_NAME% echo. ) > %DEPLOY_DIR%\init-db.bat if %DB_TYPE%==1 ( echo set /p "pwd=MySQL root password: " echo mysql -uroot -p%%pwd% -e "CREATE DATABASE IF NOT EXISTS %DB_NAME%" echo mysql -uroot -p%%pwd% %DB_NAME% ^< sql\mysql\init.sql ) >> %DEPLOY_DIR%\init-db.bat if %DB_TYPE%==2 ( echo set /p "pwd=Postgres password: " echo set PGPASSWORD=%%pwd% echo psql -U postgres -c "CREATE DATABASE %DB_NAME%" 2^>nul echo psql -U postgres -d%DB_NAME% -f sql\postgres\init.sql ) >> %DEPLOY_DIR%\init-db.bat if %DB_TYPE%==3 ( echo set /p "pwd=SQL Server sa password: " echo sqlcmd -U sa -P %%pwd% -Q "CREATE DATABASE [%DB_NAME%]" echo sqlcmd -U sa -P %%pwd% -d%DB_NAME% -i sql\sqlserver\init.sql ) >> %DEPLOY_DIR%\init-db.bat if %DB_TYPE%==4 ( echo echo Oracle: create user/tablespace then run sql/oracle/init.sql ) >> %DEPLOY_DIR%\init-db.bat ( echo echo. echo Initialize done. echo pause >nul ) >> %DEPLOY_DIR%\init-db.bat :: -------------- init-db.sh -------------- ( echo #!/bin/bash echo cd "$(dirname "$0")" echo echo "Database: %DB_NAME%" echo. ) > %DEPLOY_DIR%\init-db.sh if %DB_TYPE%==1 ( echo read -sp "MySQL password: " pwd echo echo echo mysql -uroot -p"$pwd" -e "CREATE DATABASE IF NOT EXISTS %DB_NAME%" echo mysql -uroot -p"$pwd" %DB_NAME% < sql/mysql/init.sql ) >> %DEPLOY_DIR%\init-db.sh if %DB_TYPE%==2 ( echo read -sp "Postgres password: " pwd echo echo echo export PGPASSWORD="$pwd" echo psql -U postgres -c "CREATE DATABASE %DB_NAME%" 2>/dev/null echo psql -U postgres -d%DB_NAME% -f sql/postgres/init.sql ) >> %DEPLOY_DIR%\init-db.sh if %DB_TYPE%==3 ( echo read -sp "SQL Server sa password: " pwd echo echo echo sqlcmd -U sa -P "$pwd" -Q "CREATE DATABASE [%DB_NAME%]" echo sqlcmd -U sa -P "$pwd" -d%DB_NAME% -i sql/sqlserver/init.sql ) >> %DEPLOY_DIR%\init-db.sh if %DB_TYPE%==4 ( echo echo "Oracle: create user/tablespace then run sql/oracle/init.sql" ) >> %DEPLOY_DIR%\init-db.sh echo. echo Build success: %DEPLOY_DIR% echo. echo Just run: echo init-db.bat # 输入一次密码即可 echo start.bat echo. pause >nul