feat(cli): implement remove-expired to automatically remove expired items

This commit is contained in:
rsxri 2025-05-16 18:57:22 +01:00
parent 4e4904cede
commit 1635a588e7
2 changed files with 27 additions and 0 deletions

View file

@ -90,6 +90,24 @@ func (p *Inventory) RemoveItem(name string, quantity float64, expiry *time.Time)
fmt.Printf("Item not found or no matching expiry.\n") fmt.Printf("Item not found or no matching expiry.\n")
} }
func (p *Inventory) RemoveExpired() int {
removed := 0
today := time.Now()
for i := 0; i < len(p.Items); {
item := p.Items[i]
if item.Expiry != nil && item.Expiry.Before(today) {
p.Items = append(p.Items[:i], p.Items[i+1:]...)
fmt.Printf("Removed expired %s (expiry: %s)\n", item.Name, item.Expiry.Format("2006-01-02"))
removed++
} else {
i++
}
}
return removed
}
func (p *Inventory) ListItems() { func (p *Inventory) ListItems() {
if len(p.Items) == 0 { if len(p.Items) == 0 {
fmt.Printf("Pantry is empty\n") fmt.Printf("Pantry is empty\n")

View file

@ -102,6 +102,15 @@ func main() {
fmt.Println("Failed to save inventory:", err) fmt.Println("Failed to save inventory:", err)
} }
case "remove-expired":
removed := inventory.RemoveExpired()
err = core.SaveInventory(dataFile, inventory)
if err != nil {
fmt.Println("Failed to save inventory:", err)
} else {
fmt.Printf("Removed %d expired items\n", removed)
}
case "list": case "list":
inventory.ListItems() inventory.ListItems()