2021-10-13 19:30:03 +02:00
|
|
|
#!/usr/bin/env pwsh
|
|
|
|
# Creates the vault_dev database, and runs all the migrations.
|
|
|
|
|
2021-11-24 19:08:36 +01:00
|
|
|
# Due to azure-edge-sql not containing the mssql-tools on ARM, we manually use
|
|
|
|
# the mssql-tools container which runs under x86_64. We should monitor this
|
|
|
|
# in the future and investigate if we can migrate back.
|
|
|
|
# docker-compose --profile mssql exec mssql bash /mnt/helpers/run_migrations.sh @args
|
|
|
|
|
2023-01-31 19:41:11 +01:00
|
|
|
param(
|
|
|
|
[switch]$all = $false,
|
|
|
|
[switch]$postgres = $false,
|
|
|
|
[switch]$mysql = $false,
|
|
|
|
[switch]$mssql = $false,
|
|
|
|
[switch]$sqlite = $false,
|
|
|
|
[switch]$selfhost = $false,
|
|
|
|
[switch]$pipeline = $false
|
|
|
|
)
|
2022-10-21 18:32:10 +02:00
|
|
|
|
2023-01-12 14:59:00 +01:00
|
|
|
if (!$all -and !$postgres -and !$mysql -and !$sqlite) {
|
2022-10-21 18:32:10 +02:00
|
|
|
$mssql = $true;
|
|
|
|
}
|
|
|
|
|
2023-01-12 14:59:00 +01:00
|
|
|
if ($all -or $postgres -or $mysql -or $sqlite) {
|
2022-10-21 18:32:10 +02:00
|
|
|
dotnet ef *> $null
|
|
|
|
if ($LASTEXITCODE -ne 0) {
|
|
|
|
Write-Host "Entity Framework Core tools were not found in the dotnet global tools. Attempting to install"
|
|
|
|
dotnet tool install dotnet-ef -g
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($all -or $mssql) {
|
2023-01-31 19:41:11 +01:00
|
|
|
if ($selfhost) {
|
|
|
|
$migrationArgs = "-s"
|
|
|
|
} elseif ($pipeline) {
|
|
|
|
$migrationArgs = "-p"
|
|
|
|
}
|
|
|
|
|
2022-10-21 18:32:10 +02:00
|
|
|
Write-Host "Starting Microsoft SQL Server Migrations"
|
|
|
|
docker run `
|
|
|
|
-v "$(pwd)/helpers/mssql:/mnt/helpers" `
|
|
|
|
-v "$(pwd)/../util/Migrator:/mnt/migrator/" `
|
|
|
|
-v "$(pwd)/.data/mssql:/mnt/data" `
|
|
|
|
--env-file .env `
|
|
|
|
--network=bitwardenserver_default `
|
|
|
|
--rm `
|
|
|
|
mcr.microsoft.com/mssql-tools `
|
2023-01-31 19:41:11 +01:00
|
|
|
/mnt/helpers/run_migrations.sh $migrationArgs
|
2022-10-21 18:32:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
$currentDir = Get-Location
|
|
|
|
|
2023-01-12 14:59:00 +01:00
|
|
|
Foreach ($item in @(@($mysql, "MySQL", "MySqlMigrations"), @($postgres, "PostgreSQL", "PostgresMigrations"), @($sqlite, "SQLite", "SqliteMigrations"))) {
|
|
|
|
if (!$item[0] -and !$all) {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Host "Starting $($item[1]) Migrations"
|
|
|
|
Set-Location "$currentDir/../util/$($item[2])/"
|
2022-10-21 18:32:10 +02:00
|
|
|
dotnet ef database update
|
|
|
|
}
|
|
|
|
|
|
|
|
Set-Location "$currentDir"
|