feat(cli): implement remove-expired to automatically remove expired items
This commit is contained in:
parent
4e4904cede
commit
1635a588e7
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue