feat(05-01): template query functions and updated budget item queries with item_tier
- Add BudgetExistsError struct and ErrBudgetExists sentinel - Update GetBudgetWithItems, CopyBudgetItems to include item_tier - Update CreateBudgetItem/UpdateBudgetItem signatures to accept itemTier (default one_off) - Add GetTemplate, UpdateTemplateName, CreateTemplateItem, UpdateTemplateItem, DeleteTemplateItem - Add ReorderTemplateItems with transaction - Add GenerateBudgetFromTemplate with duplicate-month detection and locale-aware naming - Update handlers to pass ItemTier from request body (Rule 3 fix - blocking compile)
This commit is contained in:
@@ -385,13 +385,14 @@ func (h *Handlers) CreateBudgetItem(w http.ResponseWriter, r *http.Request) {
|
||||
BudgetedAmount decimal.Decimal `json:"budgeted_amount"`
|
||||
ActualAmount decimal.Decimal `json:"actual_amount"`
|
||||
Notes string `json:"notes"`
|
||||
ItemTier models.ItemTier `json:"item_tier"`
|
||||
}
|
||||
if err := decodeJSON(r, &req); err != nil {
|
||||
writeError(w, http.StatusBadRequest, "invalid request body")
|
||||
return
|
||||
}
|
||||
|
||||
item, err := h.queries.CreateBudgetItem(r.Context(), budgetID, req.CategoryID, req.BudgetedAmount, req.ActualAmount, req.Notes)
|
||||
item, err := h.queries.CreateBudgetItem(r.Context(), budgetID, req.CategoryID, req.BudgetedAmount, req.ActualAmount, req.Notes, req.ItemTier)
|
||||
if err != nil {
|
||||
writeError(w, http.StatusInternalServerError, "failed to create budget item")
|
||||
return
|
||||
@@ -415,13 +416,14 @@ func (h *Handlers) UpdateBudgetItem(w http.ResponseWriter, r *http.Request) {
|
||||
BudgetedAmount decimal.Decimal `json:"budgeted_amount"`
|
||||
ActualAmount decimal.Decimal `json:"actual_amount"`
|
||||
Notes string `json:"notes"`
|
||||
ItemTier models.ItemTier `json:"item_tier"`
|
||||
}
|
||||
if err := decodeJSON(r, &req); err != nil {
|
||||
writeError(w, http.StatusBadRequest, "invalid request body")
|
||||
return
|
||||
}
|
||||
|
||||
item, err := h.queries.UpdateBudgetItem(r.Context(), itemID, budgetID, req.BudgetedAmount, req.ActualAmount, req.Notes)
|
||||
item, err := h.queries.UpdateBudgetItem(r.Context(), itemID, budgetID, req.BudgetedAmount, req.ActualAmount, req.Notes, req.ItemTier)
|
||||
if err != nil {
|
||||
writeError(w, http.StatusNotFound, "budget item not found")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user