From ddbda095b53b5a761664748903b7d334dff2170b Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Thu, 19 Jan 2017 23:09:56 +0100 Subject: [PATCH] Implement NewBudget in BudgetService --- budget.go | 1 + postgres/budgetservice.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/budget.go b/budget.go index 7f995d1..a2d8808 100644 --- a/budget.go +++ b/budget.go @@ -21,4 +21,5 @@ type UserBudget struct { type BudgetService interface { Budget(id string) (*Budget, error) BudgetsForUser(id string) ([]*Budget, error) + NewBudget(name string, userID string) (*Budget, error) } diff --git a/postgres/budgetservice.go b/postgres/budgetservice.go index 3da9cb3..33ed58c 100644 --- a/postgres/budgetservice.go +++ b/postgres/budgetservice.go @@ -25,3 +25,19 @@ func (s *Repository) BudgetsForUser(id string) ([]*budgeteer.Budget, error) { return user.Budgets, nil } + +func (s *Repository) NewBudget(name string, userID string) (*budgeteer.Budget, error) { + b := &budgeteer.Budget{ID: s.IDGenerator.New(), Name: name} + err := s.DB.Insert(b) + if err != nil { + return nil, err + } + + ub := &budgeteer.UserBudget{UserID: userID, BudgetID: b.ID} + err = s.DB.Insert(ub) + if err != nil { + return nil, err + } + + return b, nil +}