Public/New-SqliteConnection.ps1
|
using namespace Microsoft.Data.Sqlite function New-SqliteConnection { [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "", Justification = "Creates in-memory object only.")] [CmdletBinding(DefaultParameterSetName = 'byConnectionString')] [OutputType([Microsoft.Data.Sqlite.SqliteConnection])] param ( [Parameter(ParameterSetName = 'byConnectionString')] [string] $ConnectionString = 'Data Source=:memory:;Cache=Shared;', [Parameter(ParameterSetName = 'byDatabasePath')] [string] $DatabasePath = (Get-Location).Path, [Parameter(ParameterSetName = 'byDatabasePath', Mandatory = $true)] [string] $DatabaseFile ) switch ($PSCmdlet.ParameterSetName) { 'byConnectionString' { return [SqliteHelper]::NewConnection($ConnectionString) } 'byDatabasePath' { if (!(Test-Path -Path $DatabasePath)) { $null = New-Item -Path $DatabasePath -ItemType Directory -Force } $dataSource = Join-Path -Path $DatabasePath -ChildPath $DatabaseFile if (!(Test-Path -Path $dataSource)) { $null = New-Item -Path $dataSource -ItemType File -Force } return [SqliteHelper]::NewConnection(('Data Source={0};' -f $dataSource)) } } } |