Files
dash/backend/service/api_tracking_service.go
Martin Pander 8addda35ea V2
2023-12-09 19:34:45 +01:00

80 lines
2.3 KiB
Go

/*
* Dash API
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* API version: 0.1
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
*/
package service
import (
"context"
"net/http"
dashapi "github.com/moustachioed/dash/backend/dashapi"
"github.com/moustachioed/dash/backend/mapping"
)
// TrackingApiService is a service that implements the logic for the TrackingApiServicer
// This service should implement the business logic for every endpoint for the TrackingApi API.
// Include any external packages or services that will be required by this service.
type TrackingApiService struct {
ds DataStore
mapper mapping.Mapper
}
// NewTrackingApiService creates a default api service
func NewTrackingApiService(ds DataStore, mapper mapping.Mapper) dashapi.TrackingApiServicer {
return &TrackingApiService{
ds: ds,
mapper: mapper,
}
}
// GetTrackingCategories -
func (s *TrackingApiService) GetTrackingCategories(ctx context.Context) (dashapi.ImplResponse, error) {
dbcategories, err := s.ds.GetTrackingCategories()
if err != nil {
return dashapi.Response(http.StatusInternalServerError, nil), err
}
categories := s.mapper.TrackingCategoriesDbToApi(dbcategories).(dashapi.TrackingCategories)
return dashapi.Response(http.StatusOK, categories), nil
}
// GetTrackingEntryForDate -
func (s *TrackingApiService) GetTrackingEntryForDate(ctx context.Context, date string) (dashapi.ImplResponse, error) {
d, err := s.mapper.StringToDate(date)
if err != nil {
return dashapi.Response(http.StatusInternalServerError, nil), err
}
dbentry, err := s.ds.GetTrackingItemsForDate(d)
if err != nil {
return dashapi.Response(http.StatusInternalServerError, nil), err
}
entry := s.mapper.TrackingEntryDbToApi(dbentry).(dashapi.TrackingEntry)
if entry.Date == "" {
entry.Date = date
entry.Items = []dashapi.TrackingItem{}
}
return dashapi.Response(http.StatusOK, entry), nil
}
// WriteTrackingEntry -
func (s *TrackingApiService) WriteTrackingEntry(ctx context.Context, trackingEntry dashapi.TrackingEntry) (dashapi.ImplResponse, error) {
entry := s.mapper.TrackingEntryApiToDb(trackingEntry)
err := s.ds.WriteTrackingItems(entry)
if err != nil {
return dashapi.Response(http.StatusInternalServerError, nil), err
}
return dashapi.Response(http.StatusOK, nil), nil
}