42 lines
1.3 KiB
PowerShell
42 lines
1.3 KiB
PowerShell
param(
|
|
[Parameter(Mandatory = $true)][string]$Database,
|
|
[string]$HostName = "127.0.0.1",
|
|
[int]$Port = 3306,
|
|
[string]$User = "root"
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
if ($Database -notmatch '^[A-Za-z0-9_]+$') {
|
|
throw "Database must match ^[A-Za-z0-9_]+$"
|
|
}
|
|
|
|
$root = Resolve-Path (Join-Path $PSScriptRoot "..\..")
|
|
$schema = Join-Path $root "sql\refactor-v3\00-full-schema.sql"
|
|
$seed = Join-Path $root "sql\refactor-v3\01-seed-core.sql"
|
|
$verify = Join-Path $root "sql\refactor-v3\99-verify.sql"
|
|
|
|
function Invoke-Mysql {
|
|
param(
|
|
[Parameter(Mandatory = $true)][string[]]$Arguments
|
|
)
|
|
|
|
mysql --default-character-set=utf8mb4 @Arguments
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "mysql failed with exit code $LASTEXITCODE"
|
|
}
|
|
}
|
|
|
|
function Invoke-MysqlSource {
|
|
param(
|
|
[Parameter(Mandatory = $true)][string]$Path
|
|
)
|
|
|
|
$sourcePath = (Resolve-Path -LiteralPath $Path).Path.Replace("\", "/")
|
|
Invoke-Mysql -Arguments @("-h", $HostName, "-P", "$Port", "-u", $User, $Database, "--execute=source $sourcePath")
|
|
}
|
|
|
|
Invoke-Mysql -Arguments @("-h", $HostName, "-P", "$Port", "-u", $User, "-e", "DROP DATABASE IF EXISTS ``$Database``; CREATE DATABASE ``$Database`` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;")
|
|
Invoke-MysqlSource -Path $schema
|
|
Invoke-MysqlSource -Path $seed
|
|
Invoke-MysqlSource -Path $verify
|