diff --git a/food-tracking/SKILL.md b/food-tracking/SKILL.md index cad8df4..b481c15 100644 --- a/food-tracking/SKILL.md +++ b/food-tracking/SKILL.md @@ -89,6 +89,9 @@ uv run --with pymongo "$SCRIPT" update --id "6a11a937..." --set-amount 2 --set-u # Unset a field uv run --with pymongo "$SCRIPT" update --id "6a11a937..." --unset unit + +# Delete an entry +uv run --with pymongo "$SCRIPT" delete --id "6a11a937..." ``` ## Workflow Notes diff --git a/food-tracking/scripts/food_log.py b/food-tracking/scripts/food_log.py index 309ea56..2fc5dd8 100644 --- a/food-tracking/scripts/food_log.py +++ b/food-tracking/scripts/food_log.py @@ -125,6 +125,18 @@ def cmd_update(args): print("No matching entry found.") client.close() +def cmd_delete(args): + from bson import ObjectId + coll, client = get_collection() + + if not args.id: + print("Error: --id is required for delete", file=sys.stderr) + sys.exit(1) + + result = coll.delete_one({"_id": ObjectId(args.id)}) + print(f"Deleted: {result.deleted_count}") + client.close() + def main(): parser = argparse.ArgumentParser(description="Manage food log entries in lists.food_log") sub = parser.add_subparsers(dest="command", required=True) @@ -155,8 +167,12 @@ def main(): p_upd.add_argument("--set-extra", dest="set_extra", help="JSON string with additional fields to set") p_upd.add_argument("--unset", nargs="*", help="Field names to remove") + # delete + p_del = sub.add_parser("delete", help="Delete a food log entry") + p_del.add_argument("--id", required=True, help="ObjectId to delete") + args = parser.parse_args() - {"add": cmd_add, "get": cmd_get, "update": cmd_update}[args.command](args) + {"add": cmd_add, "get": cmd_get, "update": cmd_update, "delete": cmd_delete}[args.command](args) if __name__ == "__main__": main()