using System.Management.Automation;
namespace Noz.PowerShell.Cmdlets;
/// List notes from the noz server.
///
/// Get-NozNote
/// Get-NozNote -Topic psychologie
/// Get-NozNote -Status seed -Lang de
/// Get-NozNote | Group-Object Topic | Sort-Object Count -Descending
/// Get-NozNote | Export-Csv ~/notes.csv
///
[Cmdlet(VerbsCommon.Get, "NozNote")]
[OutputType(typeof(NozNote))]
public sealed class GetNozNoteCmdlet : NozCmdletBase
{
[Parameter(Position = 0)]
public string? Topic { get; set; }
[Parameter]
[ValidateSet("seed", "budding", "evergreen")]
public string? Status { get; set; }
[Parameter]
[ValidateSet("de", "en")]
public string? Lang { get; set; }
protected override void ProcessRecord()
{
var notes = Run(Api.GetNotesAsync());
var filtered = notes.AsEnumerable();
if (Topic is not null) filtered = filtered.Where(n => n.Topic == Topic);
if (Status is not null) filtered = filtered.Where(n => n.Status == Status);
if (Lang is not null) filtered = filtered.Where(n => n.Lang == Lang);
foreach (var note in filtered.OrderBy(n => n.Slug))
WriteObject(NozNote.From(note));
}
}