private/Initialize-RecipeDatabase.ps1
|
function Initialize-RecipeDatabase { [CmdletBinding()] Param( [Parameter(Mandatory)] [ValidateScript({ Test-Path $_ })] [String] $Schema, [Parameter(Mandatory)] [ValidateScript({ Test-Path $_ })] [String] $Database ) <# .SYNOPSIS Creates the database file if missing and applies schema. .DESCRIPTION This is idempotent: safe to run at startup and on every module import. #> # Apply schema Invoke-UniversalSQLiteQuery -Path $Script:RecipeDbPath -Query $Script:RecipeSchemaSql | Out-Null # ---- Favorites Migration ---- $cols = Invoke-UniversalSQLiteQuery -Path $Script:RecipeDbPath -Query "PRAGMA table_info(Recipes);" if (($cols | Where-Object { $_.name -eq 'IsFavorite' }).Count -eq 0) { $Null = Invoke-UniversalSQLiteQuery -Path $Script:RecipeDbPath -Query 'ALTER TABLE Recipes ADD COLUMN IsFavorite INTEGER NOT NULL DEFAULT 0;' } if (($cols | Where-Object { $_.name -eq 'FavoritedAt' }).Count -eq 0) { $null = Invoke-UniversalSQLiteQuery -Path $Script:RecipeDbPath -Query 'ALTER TABLE Recipes ADD COLUMN FavoritedAt TEXT;' } if(($cols | Where-Object { $_.name -eq 'ImageFileName'}).Count -eq 0) { $null = Invoke-UniversalSQLiteQuery -Path $script:RecipeDbPath -Query 'ALTER TABLE Recipes ADD COLUMN ImageFileName TEXT NULL;' } if(($cols | Where-Object { $_.name -eq 'ImageUpdatedAt'}).Count -eq 0) { $null = Invoke-UniversalSQLiteQuery -Path $script:RecipeDbPath -Query 'ALTER TABLE Recipes ADD COLUMN ImageUpdatedAt TEXT NULL;' } } |