Skip to content

Commit

Permalink
Refactoring DB interface
Browse files Browse the repository at this point in the history
Co-authored-by: Gustavo Noronha Silva <[email protected]>
  • Loading branch information
marcelometal and kov committed Aug 29, 2020
1 parent efe4ffa commit 31dbd7b
Show file tree
Hide file tree
Showing 35 changed files with 514 additions and 819 deletions.
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ curl \
http://localhost:8889/api/v1/portfolios \
-X POST \
-H 'Content-Type: application/json' \
-d '{"id": "default", "name": "Default"}'
-d '{"name": "Default", "slug": "default"}'
```

* Adding brokers:
Expand All @@ -38,7 +38,7 @@ curl \
http://localhost:8889/api/v1/brokers \
-X POST \
-H 'Content-Type: application/json' \
-d '{"id": "clear", "name": "CLEAR"}'
-d '{"name": "CLEAR", "slug": "clear"}'
```

* Adding stocks operations:
Expand All @@ -48,8 +48,9 @@ curl \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"portfolioId": "default", "symbol": "PETR4", "type": "purchase", "brokerId": "clear",
"shares": 500, "price": 10, "date": "2020-04-24T00:00:00Z"}'
"portfolioSlug": "default", "symbol": "PETR4", "type": "purchase",
"brokerSlug": "clear", "shares": 500, "price": 10,
"date": "2020-04-24T00:00:00Z"}'
```

```curlrc
Expand All @@ -58,8 +59,9 @@ curl \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"portfolioId": "default", "symbol": "PETR4", "type": "sale", "brokerId": "clear",
"shares": 100, "price": 15, "date": "2020-06-30T00:00:00Z"}'
"portfolioSlug": "default", "symbol": "PETR4", "type": "sale",
"brokerSlug": "clear", "shares": 100, "price": 15,
"date": "2020-06-30T00:00:00Z"}'
```

## Third Party
Expand Down
24 changes: 12 additions & 12 deletions api/brokers.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ import (
// @Router /brokers/{id} [get]
// @Param id path string true "Broker id"
func (s *server) broker(c echo.Context) error {
id := c.Param("id")
log.Debugf("[API] Retrieving broker id: %s", id)
result, err := s.db.GetBrokerByID(id)
if err != nil {
errMsg := fmt.Sprintf("Error on retrieve broker id '%s': %v", id, err)
slug := c.Param("id")
log.Debugf("[API] Retrieving broker slug: %s", slug)
result := &wallet.Broker{}
if err := s.db.GetBySlug(slug, result); err != nil {
errMsg := fmt.Sprintf("Error on retrieve broker id '%s': %v", slug, err)
return logAndReturnError(c, errMsg)
}
if result == nil {
errMsg := fmt.Sprintf("Broker '%s' not found", id)
if result.Name == "" {
errMsg := fmt.Sprintf("Broker '%s' not found", slug)
return c.JSON(http.StatusNotFound, errorMessage(errMsg))
}
return c.JSON(http.StatusOK, result)
Expand All @@ -48,7 +48,7 @@ func (s *server) broker(c echo.Context) error {
// @Router /brokers [get]
func (s *server) brokers(c echo.Context) error {
log.Debug("Retrieving all brokers")
result, err := s.db.GetAllBrokers()
result, err := s.db.GetAll(&wallet.Broker{})
if err != nil {
errMsg := fmt.Sprintf("Error on retrieve brokers: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -74,14 +74,14 @@ func (s *server) brokersAdd(c echo.Context) error {
return logAndReturnError(c, errMsg)
}

broker.ID = slug.Make(broker.Name)
broker.Slug = slug.Make(broker.Name)

if err := c.Validate(broker); err != nil {
errMsg := fmt.Sprintf("Error on validate broker: %v", err)
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.InsertBroker(broker)
result, err := s.db.Create(broker)
if err != nil {
errMsg := fmt.Sprintf("Error on insert broker: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -103,7 +103,7 @@ func (s *server) brokersAdd(c echo.Context) error {
func (s *server) brokersDelete(c echo.Context) error {
id := c.Param("id")
log.Debugf("Deleting %s data", id)
result, err := s.db.DeleteBrokerByID(id)
result, err := s.db.Delete("brokers", id)
if err != nil {
errMsg := fmt.Sprintf("Error on delete broker '%s': %v", id, err)
return logAndReturnError(c, errMsg)
Expand Down Expand Up @@ -137,7 +137,7 @@ func (s *server) brokersUpdate(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.UpdateBroker(id, broker)
result, err := s.db.Update(id, broker)
if err != nil {
errMsg := fmt.Sprintf("Error on update broker: %v", err)
return logAndReturnError(c, errMsg)
Expand Down
10 changes: 5 additions & 5 deletions api/certificates_of_deposit_operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func (s *server) getAllCertificatesOfDepositOperations(c echo.Context) error {
log.Debug("[API] Retrieving all certificates of deposit operations")
result, err := s.db.GetAllCertificatesOfDepositsOperations()
result, err := s.db.GetAll(wallet.CertificateOfDeposit{})
if err != nil {
errMsg := fmt.Sprintf("Error on retrieve certificates of deposit operations: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -35,8 +35,8 @@ func (s *server) getAllCertificatesOfDepositOperations(c echo.Context) error {
func (s *server) getCertificateOfDepositOperationByID(c echo.Context) error {
id := c.Param("id")
log.Debugf("[API] Retrieving certificate of deposit operation with id: %s", id)
result, err := s.db.GetCertificateOfDepositOperationByID(id)
if err != nil {
result := &wallet.CertificateOfDeposit{}
if err := s.db.Get(id, result); err != nil {
errMsg := fmt.Sprintf("Error on retrieve '%s' operations: %v", id, err)
return logAndReturnError(c, errMsg)
}
Expand Down Expand Up @@ -71,7 +71,7 @@ func (s *server) insertCertificateOfDepositOperation(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.InsertCertificateOfDepositOperation(data)
result, err := s.db.Create(data)
if err != nil {
errMsg := fmt.Sprintf("Error on insert certificate of deposit: %v", err)
return logAndReturnError(c, errMsg)
Expand Down Expand Up @@ -107,7 +107,7 @@ func (s *server) updateCertificateOfDepositOperationByID(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.UpdateCertificateOfDepositOperationByID(id, data)
result, err := s.db.Update(id, data)
if err != nil {
errMsg := fmt.Sprintf("Error on update certificate of deposit: %v", err)
return logAndReturnError(c, errMsg)
Expand Down
10 changes: 5 additions & 5 deletions api/ficfi_operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func (s *server) getAllFICFIOperations(c echo.Context) error {
log.Debug("[API] Retrieving all FICFI operations")
result, err := s.db.GetAllFICFIOperations()
result, err := s.db.GetAll(wallet.FICFI{})
if err != nil {
errMsg := fmt.Sprintf("Error on retrieve FICFI operations: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -35,8 +35,8 @@ func (s *server) getAllFICFIOperations(c echo.Context) error {
func (s *server) getFICFIOperationByID(c echo.Context) error {
id := c.Param("id")
log.Debugf("[API] Retrieving FICFI operation with id: %s", id)
result, err := s.db.GetFICFIOperationByID(id)
if err != nil {
result := &wallet.FICFI{}
if err := s.db.Get(id, result); err != nil {
errMsg := fmt.Sprintf("Error on retrieve '%s' operations: %v", id, err)
return logAndReturnError(c, errMsg)
}
Expand Down Expand Up @@ -71,7 +71,7 @@ func (s *server) insertFICFIOperation(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.InsertFICFIOperation(data)
result, err := s.db.Create(data)
if err != nil {
errMsg := fmt.Sprintf("Error on insert FICFI: %v", err)
return logAndReturnError(c, errMsg)
Expand Down Expand Up @@ -107,7 +107,7 @@ func (s *server) updateFICFIOperationByID(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.UpdateFICFIOperationByID(id, data)
result, err := s.db.Update(id, data)
if err != nil {
errMsg := fmt.Sprintf("Error on update FICFI: %v", err)
return logAndReturnError(c, errMsg)
Expand Down
10 changes: 5 additions & 5 deletions api/fiis_operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func (s *server) getAllFIIOperations(c echo.Context) error {
log.Debug("[API] Retrieving all stocks operations")
result, err := s.db.GetAllFIIsOperations()
result, err := s.db.GetAll(wallet.FII{})
if err != nil {
errMsg := fmt.Sprintf("Error on retrieve operations: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -35,8 +35,8 @@ func (s *server) getAllFIIOperations(c echo.Context) error {
func (s *server) getFIIOperationByID(c echo.Context) error {
id := c.Param("id")
log.Debugf("[API] Retrieving stock operation with id: %s", id)
result, err := s.db.GetFIIOperationByID(id)
if err != nil {
result := &wallet.FII{}
if err := s.db.Get(id, result); err != nil {
errMsg := fmt.Sprintf("Error on retrieve '%s' operations: %v", id, err)
return logAndReturnError(c, errMsg)
}
Expand Down Expand Up @@ -71,7 +71,7 @@ func (s *server) insertFIIOperation(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.InsertFIIOperation(data)
result, err := s.db.Create(data)
if err != nil {
errMsg := fmt.Sprintf("Error on insert FII: %v", err)
return logAndReturnError(c, errMsg)
Expand Down Expand Up @@ -107,7 +107,7 @@ func (s *server) updateFIIOperationByID(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.UpdateFIIOperationByID(id, data)
result, err := s.db.Update(id, data)
if err != nil {
errMsg := fmt.Sprintf("Error on update FII: %v", err)
return logAndReturnError(c, errMsg)
Expand Down
2 changes: 1 addition & 1 deletion api/operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ func (s *server) getAllSales(c echo.Context) error {
func (s *server) deleteOperationByID(c echo.Context) error {
id := c.Param("id")
log.Debugf("Deleting %s data", id)
result, err := s.db.DeleteOperationByID(id)
result, err := s.db.Delete("operations", id)
if err != nil {
errMsg := fmt.Sprintf("Error on delete operation '%s': %v", id, err)
return logAndReturnError(c, errMsg)
Expand Down
39 changes: 19 additions & 20 deletions api/portfolios.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ import (
// @Success 200 {object} wallet.Portfolio
// @Failure 404 {object} api.ErrorMessage
// @Failure 500 {object} api.ErrorMessage
// @Router /portfolios/{id} [get]
// @Param id path string true "Broker id"
// @Router /portfolios/{slug} [get]
// @Param slug path string true "Broker slug"
// @Param year query string false "filter by year"
func (s *server) portfolio(c echo.Context) error {
id := c.Param("id")
log.Debugf("[API] Retrieving %s data...", id)
slug := c.Param("id")
log.Debugf("[API] Retrieving %s data...", slug)

// FIXME
yearString := c.QueryParam("year")
Expand All @@ -38,21 +38,21 @@ func (s *server) portfolio(c echo.Context) error {
year = 2020
}

result, err := s.db.GetPortfolioByID(id)
if err != nil {
errMsg := fmt.Sprintf("Error on get portfolio '%s': %v", id, err)
result := &wallet.Portfolio{}
if err := s.db.GetBySlug(slug, result); err != nil {
errMsg := fmt.Sprintf("Error on get portfolio '%s': %v", slug, err)
return logAndReturnError(c, errMsg)
}

if result == nil {
errMsg := fmt.Sprintf("Portfolio '%s' not found", id)
if result.Name == "" {
errMsg := fmt.Sprintf("Portfolio '%s' not found", slug)
return c.JSON(http.StatusNotFound, errorMessage(errMsg))
}

// FIXME
err = s.db.GetPortfolioItems(result, year)
if err != nil {
errMsg := fmt.Sprintf("Error on get portfolio '%s' items: %v", id, err)
errMsg := fmt.Sprintf("Error on get portfolio '%s' items: %v", slug, err)
return logAndReturnError(c, errMsg)
}

Expand All @@ -79,22 +79,21 @@ func (s *server) portfolios(c echo.Context) error {
year = 2020
}

allPortfolios, err := s.db.GetAllPortfolios()
allPortfolios, err := s.db.GetAll(&wallet.Portfolio{})
if err != nil {
errMsg := fmt.Sprintf("Error on get all portfolios: %v", err)
return logAndReturnError(c, errMsg)
}

portfolios := make([]wallet.Portfolio, len(allPortfolios))
for idx, portfolio := range allPortfolios {
// FIXME
err := s.db.GetPortfolioItems(&portfolio, year)
for idx, p := range allPortfolios {
portfolio := p.(*wallet.Portfolio)
err := s.db.GetPortfolioItems(portfolio, year)
if err != nil {
errMsg := fmt.Sprintf("Error on get portfolio items: %v", err)
return logAndReturnError(c, errMsg)
}

portfolios[idx] = portfolio
portfolios[idx] = *portfolio
}
return c.JSON(http.StatusOK, portfolios)
}
Expand All @@ -117,14 +116,14 @@ func (s *server) portfoliosAdd(c echo.Context) error {
return logAndReturnError(c, errMsg)
}

portfolio.ID = slug.Make(portfolio.Name)
portfolio.Slug = slug.Make(portfolio.Name)

if err := c.Validate(portfolio); err != nil {
errMsg := fmt.Sprintf("Error on validate portfolio: %v", err)
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.InsertPortfolio(portfolio)
result, err := s.db.Create(portfolio)
if err != nil {
errMsg := fmt.Sprintf("Error on insert portfolio: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -146,7 +145,7 @@ func (s *server) portfoliosAdd(c echo.Context) error {
func (s *server) portfoliosDelete(c echo.Context) error {
id := c.Param("id")
log.Debugf("Deleting %s data", id)
result, err := s.db.DeletePortfolioByID(id)
result, err := s.db.Delete("portfolios", id)
if err != nil {
errMsg := fmt.Sprintf("Error on delete portolio '%s': %v", id, err)
return logAndReturnError(c, errMsg)
Expand Down Expand Up @@ -180,7 +179,7 @@ func (s *server) portfoliosUpdate(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.UpdatePortfolio(id, portfolio)
result, err := s.db.Update(id, portfolio)
if err != nil {
errMsg := fmt.Sprintf("Error on update portfolio: %v", err)
return logAndReturnError(c, errMsg)
Expand Down
10 changes: 5 additions & 5 deletions api/stocks_funds_operations.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

func (s *server) getAllStockFundsOperations(c echo.Context) error {
log.Debug("[API] Retrieving all stocks funds operations")
result, err := s.db.GetAllStocksFundsOperations()
result, err := s.db.GetAll(wallet.StockFund{})
if err != nil {
errMsg := fmt.Sprintf("Error on retrieve stocks funds operations: %v", err)
return logAndReturnError(c, errMsg)
Expand All @@ -35,8 +35,8 @@ func (s *server) getAllStockFundsOperations(c echo.Context) error {
func (s *server) getStockFundOperationByID(c echo.Context) error {
id := c.Param("id")
log.Debugf("[API] Retrieving stock fund operation with id: %s", id)
result, err := s.db.GetStockFundOperationByID(id)
if err != nil {
result := &wallet.StockFund{}
if err := s.db.Get(id, result); err != nil {
errMsg := fmt.Sprintf("Error on retrieve '%s' operations: %v", id, err)
return logAndReturnError(c, errMsg)
}
Expand Down Expand Up @@ -71,7 +71,7 @@ func (s *server) insertStockFundOperation(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.InsertStockFundOperation(data)
result, err := s.db.Create(data)
if err != nil {
errMsg := fmt.Sprintf("Error on insert stock fund: %v", err)
return logAndReturnError(c, errMsg)
Expand Down Expand Up @@ -107,7 +107,7 @@ func (s *server) updateStockFundOperationByID(c echo.Context) error {
return c.JSON(http.StatusUnprocessableEntity, errorMessage(errMsg))
}

result, err := s.db.UpdateStockFundOperationByID(id, data)
result, err := s.db.Update(id, data)
if err != nil {
errMsg := fmt.Sprintf("Error on update stock fund: %v", err)
return logAndReturnError(c, errMsg)
Expand Down
Loading

0 comments on commit 31dbd7b

Please sign in to comment.