📖
PowerShellでLiteDB使うよ
litedb.psm1
Add-Type -Path .\LiteDB.dll
function New-LiteDBConnection {
<#
.SYNOPSIS
LiteDBファイルへの新しい接続を作成します。
.DESCRIPTION
New-LiteDBConnection 関数は、指定されたファイルパスに基づいてLiteDBデータベースへの新しい接続を作成します。
オプションでパスワードと読み取り専用モードを指定することができます。
.PARAMETER FilePath
接続するLiteDBファイルのパス。ファイルが存在しない場合は、新しく作成されます。
.PARAMETER Password
LiteDBファイルのパスワード。パスワードを設定することで、データベースの暗号化が行われます。
.PARAMETER ReadOnly
このスイッチを使用すると、データベースを読み取り専用モードで開きます。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db"
この例では、`mydb.db` というLiteDBデータベースに接続します。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db" -Password "mypassword"
この例では、パスワードを指定して、暗号化されたLiteDBデータベースに接続します。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db" -ReadOnly
この例では、データベースを読み取り専用モードで開きます。
.NOTES
LiteDBバージョンに依存する場合があります。
.LINK
https://github.com/mbdavid/LiteDB
#>
[OutputType([LiteDB.LiteDatabase])]
param (
[Parameter(Mandatory = $true)]
[string]$FilePath,
[Parameter(Mandatory = $false)]
[string]$Password,
[Parameter(Mandatory = $false)]
[switch]$ReadOnly
)
$cs = [LiteDB.ConnectionString]::new()
$cs.Filename = $FilePath
if ($Password -ne "") { $cs.Password = $Password }
if ($ReadOnly) { $cs.ReadOnly = $true }
try {
return , ([LiteDB.LiteDatabase]::new($cs))
}
catch {
Write-Error "LiteDBデータベースへの接続中に失敗しました。: " + $_
}
}
function Get-LiteDBCollection {
<#
.SYNOPSIS
LiteDBデータベースから特定のコレクションを取得します。
.DESCRIPTION
Get-LiteDBCollection 関数は、指定されたLiteDBオブジェクトから指定された名前のコレクションを取得します。
コレクションが存在しない場合は、新しく作成されます。
.PARAMETER LiteDB
LiteDBデータベースオブジェクト。New-LiteDBConnection関数などを使用して作成されたデータベース接続です。
.PARAMETER CollectionName
取得するコレクションの名前。コレクションが存在しない場合は自動的に作成されます。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db"
$collection = Get-LiteDBCollection -LiteDB $db -CollectionName "Users"
この例では、`Users`という名前のコレクションを取得します。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db"
$collection = Get-LiteDBCollection -LiteDB $db -CollectionName "Products"
この例では、`Products`コレクションを取得し、データを操作します。
.NOTES
LiteDBバージョンに依存する場合があります。
.LINK
https://github.com/mbdavid/LiteDB
#>
[OutputType([LiteDB.LiteCollection`1])]
param (
[Parameter(Mandatory = $true)]
[LiteDB.LiteDatabase]$LiteDB,
[Parameter(Mandatory = $true)]
[string]$CollectionName
)
try {
return , ($LiteDB.GetCollection($CollectionName))
}
catch {
Write-Error "コレクション '$CollectionName' をLiteDBから取得できませんでした:" + $_
}
}
function Remove-LiteDBCollection {
param (
[Parameter(Mandatory = $true)]
$Collection
)
$Collection
}
function Get-LiteDBCollectionNames {
<#
.SYNOPSIS
LiteDBデータベースからすべてのコレクション名を取得します。
.DESCRIPTION
Get-LiteDBCollectionNames 関数は、指定されたLiteDBデータベースからすべてのコレクション名を取得して返します。
データベースに存在するコレクション名が文字列配列として返されます。
.PARAMETER LiteDB
LiteDBデータベースオブジェクト。New-LiteDBConnection関数などで作成されたデータベース接続オブジェクトを指定します。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db"
$collections = Get-LiteDBCollectionNames -LiteDB $db
この例では、`mydb.db` からすべてのコレクション名を取得し、変数 `$collections` に保存します。
.NOTES
LiteDBのバージョンに依存する場合があります。
.LINK
https://github.com/mbdavid/LiteDB
#>
[OutputType([String[]], $null)]
param (
[Parameter(Mandatory = $true)]
[LiteDB.LiteDatabase]$LiteDB
)
try {
return $LiteDB.GetCollectionNames()
}
catch {
Write-Error "LiteDBデータベースからコレクション名を取得できませんでした: $_"
}
}
function Get-LiteDBDocuments {
<#
.SYNOPSIS
LiteDBコレクションからすべてのドキュメントを取得します。
.DESCRIPTION
Get-LiteDBDocuments 関数は、指定されたLiteDBコレクションからすべてのドキュメントを取得し、それらをPowerShellの
PSCustomObject として返します。各ドキュメントはPSCustomObjectとして処理されるため、PowerShellスクリプト内で扱いやすくなります。
.PARAMETER Collection
LiteDBのコレクションオブジェクト。Get-LiteDBCollection関数などで取得したコレクションを指定します。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db"
$collection = Get-LiteDBCollection -LiteDB $db -CollectionName "Users"
$documents = Get-LiteDBDocuments -Collection $collection
この例では、`Users`コレクションからすべてのドキュメントを取得します。
.NOTES
LiteDBのバージョンに依存する場合があります。
.LINK
https://github.com/mbdavid/LiteDB
#>
[OutputType([pscustomobject], $null)]
param (
[Parameter(Mandatory = $true)]
$Collection
)
$res = @()
try {
$Collection.FindAll() | ForEach-Object {
$row = [PSCustomObject]@{}
$_ | ForEach-Object {
$row | Add-Member -NotePropertyName $_.Key -NotePropertyValue $_.Value
}
$res += $row
}
return $res
}
catch {
Write-Error "ドキュメントの取得中にエラーが発生しました: $_"
}
}
function Add-LiteDBDocument {
<#
.SYNOPSIS
PSCustomObject データを LiteDB コレクションに挿入します。
.DESCRIPTION
Add-LiteDBDocument 関数は、指定された LiteDB コレクションに対して、PowerShellの PSCustomObject をドキュメントとして挿入します。
データは BSON 形式に変換されて LiteDB に保存されます。
.PARAMETER Collection
LiteDB コレクションオブジェクト。Get-LiteDBCollection 関数などで取得したコレクションを指定します。
.PARAMETER Data
挿入するデータを PSCustomObject 形式で指定します。このデータは BSON 形式に変換され、LiteDB に挿入されます。
.EXAMPLE
$db = New-LiteDBConnection -FilePath "C:\data\mydb.db"
$collection = Get-LiteDBCollection -LiteDB $db -CollectionName "Users"
$user = [PSCustomObject]@{ Name = "John Doe"; Age = 30 }
Add-LiteDBDocument -Collection $collection -Data $user
この例では、`Users` コレクションに `Name` と `Age` を持つドキュメントを挿入します。
.NOTES
LiteDBのバージョンに依存する場合があります。
.LINK
https://github.com/mbdavid/LiteDB
#>
param (
[Parameter(Mandatory = $true)]
$Collection,
[Parameter(Mandatory = $true)]
[pscustomobject]$Data
)
try {
# BSONMapper を使用して PSCustomObject を BSON ドキュメントに変換し、コレクションに挿入
$BSONMapper = [LiteDB.BSONMapper]::new()
$Collection.Insert($BSONMapper.ToDocument($Data)) | Out-Null
}
catch {
# エラー発生時にエラーメッセージを表示
Write-Error "ドキュメントの挿入中にエラーが発生しました: $_"
}
}
function Remove-LiteDBDocument {
param (
[Parameter(Mandatory = $true)]
$Collection,
[Parameter(Mandatory = $true)]
[LiteDB.BsonValue]$ID
)
$Collection.Delete($ID)
}
function Clear-LiteDBCollection {
param (
[Parameter(Mandatory = $true)]
$Collection
)
$Collection.DeleteAll()
}
Export-ModuleMember -Function *
Discussion