diff --git a/context/context.go b/common/context.go similarity index 60% rename from context/context.go rename to common/context.go index d56374c48765d55ec96e7c95be1c7d5e4b8db5f4..6dfdc760695aee066cd173cf21e7c66571640d0c 100644 --- a/context/context.go +++ b/common/context.go @@ -1,8 +1,6 @@ -package context +package common import ( - "dawn-weather/logger" - "github.com/gofiber/fiber/v2" ) @@ -11,13 +9,13 @@ type DawnCtx struct { } func (ctx DawnCtx) INFO(message string) { - logger.INFO(ctx.FiberCtx, message) + INFO(ctx.FiberCtx, message) } func (ctx DawnCtx) DEBUG(message string) { - logger.DEBUG(ctx.FiberCtx, message) + DEBUG(ctx.FiberCtx, message) } func (ctx DawnCtx) TRACE(message string) { - logger.TRACE(ctx.FiberCtx, message) + TRACE(ctx.FiberCtx, message) } diff --git a/errors/dawn_errors.go b/common/dawn_errors.go similarity index 63% rename from errors/dawn_errors.go rename to common/dawn_errors.go index 45289c930769f08b3d99a2cabd341c937028f5a7..453280234da6d944fdb5826fd57e0f5b333cce8e 100644 --- a/errors/dawn_errors.go +++ b/common/dawn_errors.go @@ -1,4 +1,4 @@ -package errors +package common import ( "encoding/json" @@ -77,51 +77,3 @@ func (err *DawnError) LogString(c *fiber.Ctx) { } fmt.Println(output) } - -func INVALID_PRODUCT(passedProduct string) *DawnError { - return &DawnError{ - Name: "INVALID_PRODUCT", - Description: "Product type '" + passedProduct + "' is invalid", - Code: 400, - } -} - -var BAD_REQUEST = &DawnError{ - Name: "BAD_REQUEST", - Description: "Bad request was submitted", - Code: 400, -} - -func SEED_TYPE_MISMATCH(passedSeed string, expectedSeed string) *DawnError { - return &DawnError{ - Name: "SEED_TYPE_MISMATCH", - Description: "Seed '" + passedSeed + "' was not of expected seed type '" + expectedSeed + "'", - Code: 400, - } -} - -var NO_DATA_FOUND = &DawnError{ - Name: "NO_DATA_FOUND", - Description: "No data found for request", - Code: 404, -} - -// 500s - -var INTERNAL_SERVER_STANDARD_ERROR = &DawnError{ - Name: "INTERNAL_SERVER_ERROR", - Description: "Unkown internal server error occurred", - Code: 500, -} - -var DATE_PARSE_FAILURE = &DawnError{ - Name: "DATE_PARSE_FAILURE", - Description: "Date parse failure", - Code: 500, -} - -var FILE_CREATION_ERROR = &DawnError{ - Name: "FILE_CREATION_ERROR", - Description: "Could not create file", - Code: 500, -} diff --git a/logger/logger.go b/common/logger.go similarity index 93% rename from logger/logger.go rename to common/logger.go index cbda320ff71473ce2fa5b980b96d2ef7d948edd7..efa3111653d8620e4fcd90f29eeed6bb858ffd04 100644 --- a/logger/logger.go +++ b/common/logger.go @@ -1,7 +1,6 @@ -package logger +package common import ( - "dawn-weather/errors" "encoding/json" "fmt" "os" @@ -18,7 +17,7 @@ type RequestLog struct { PID string Level string RequestId string - Error *errors.DawnError + Error *DawnError StatusCode string Method string Path string @@ -118,12 +117,12 @@ func New() fiber.Handler { } } -func ErrorHandler(ctx *fiber.Ctx, err error) *errors.DawnError { - var returnError *errors.DawnError - if e, ok := err.(*errors.DawnError); ok { +func ErrorHandler(ctx *fiber.Ctx, err error) *DawnError { + var returnError *DawnError + if e, ok := err.(*DawnError); ok { returnError = e } else { - returnError = errors.Build(err) + returnError = Build(err) } return returnError diff --git a/config/error_codes.go b/config/error_codes.go new file mode 100644 index 0000000000000000000000000000000000000000..dd62656ac1638f3272945f8a78ebbc7bbd8274a5 --- /dev/null +++ b/config/error_codes.go @@ -0,0 +1,51 @@ +package config + +import "dawn-weather/common" + +func INVALID_PRODUCT(passedProduct string) *common.DawnError { + return &common.DawnError{ + Name: "INVALID_PRODUCT", + Description: "Product type '" + passedProduct + "' is invalid", + Code: 400, + } +} + +var BAD_REQUEST = &common.DawnError{ + Name: "BAD_REQUEST", + Description: "Bad request was submitted", + Code: 400, +} + +func SEED_TYPE_MISMATCH(passedSeed string, expectedSeed string) *common.DawnError { + return &common.DawnError{ + Name: "SEED_TYPE_MISMATCH", + Description: "Seed '" + passedSeed + "' was not of expected seed type '" + expectedSeed + "'", + Code: 400, + } +} + +var NO_DATA_FOUND = &common.DawnError{ + Name: "NO_DATA_FOUND", + Description: "No data found for request", + Code: 404, +} + +// 500s + +var INTERNAL_SERVER_STANDARD_ERROR = &common.DawnError{ + Name: "INTERNAL_SERVER_ERROR", + Description: "Unkown internal server error occurred", + Code: 500, +} + +var DATE_PARSE_FAILURE = &common.DawnError{ + Name: "DATE_PARSE_FAILURE", + Description: "Date parse failure", + Code: 500, +} + +var FILE_CREATION_ERROR = &common.DawnError{ + Name: "FILE_CREATION_ERROR", + Description: "Could not create file", + Code: 500, +} diff --git a/config/routes.go b/config/routes.go deleted file mode 100644 index 3fdcfac24ef107189f3f6a29783944dd24714985..0000000000000000000000000000000000000000 --- a/config/routes.go +++ /dev/null @@ -1,23 +0,0 @@ -package config - -import ( - "dawn-weather/controllers" - - "github.com/gofiber/fiber/v2" -) - -func GddRoutes(route fiber.Router) { - route.Get("gdd/daily", controllers.GetDailyGdd) - route.Get("gdd/normals", controllers.GetNormalGdd) - route.Get("gdd/gefs", controllers.GetGefsGDD) - route.Get("gdd/cfs", controllers.GetCfsGDD) - route.Get("gdd/analog", controllers.GetAnalogYear) - route.Get("gdd/confidence", controllers.GetConfidenceInterval) - - route.Get("freezing-dates", controllers.GetFreezingDates) - - route.Get("gdd/csv", controllers.GetCSVFile) - - route.Get("gdd/seeds/corn", controllers.GetCornSeedMaturityDate) - route.Get("gdd/seeds", controllers.GetSeedList) -} diff --git a/controllers/data_download_controller.go b/controllers/data_download_controller.go index 46a58f1f8a3cbd0b02f7a2b7f5565f63744a13f3..b08a87aa6be3c58fdc53224a3a3c7d169b751b0e 100644 --- a/controllers/data_download_controller.go +++ b/controllers/data_download_controller.go @@ -1,7 +1,7 @@ package controllers import ( - "dawn-weather/context" + "dawn-weather/common" "dawn-weather/models" "dawn-weather/services" @@ -37,7 +37,7 @@ import ( // @Router /api/weather/gdd/csv [get] func GetCSVFile(c *fiber.Ctx) error { request := models.CSVRequest{}.Build(c) - ctx := context.DawnCtx{FiberCtx: c} + ctx := common.DawnCtx{FiberCtx: c} fileText := services.GetDataDownload(ctx, request) e := c.Status(fiber.StatusOK).SendString(fileText) return e diff --git a/controllers/gdd_controller.go b/controllers/gdd_controller.go index 67818ab50d03b139c5acccd8c48de2736e01853c..ae8487b0c1cb51404c386cbe8973d4cf9de626b3 100644 --- a/controllers/gdd_controller.go +++ b/controllers/gdd_controller.go @@ -1,7 +1,7 @@ package controllers import ( - "dawn-weather/context" + "dawn-weather/common" "dawn-weather/models" "dawn-weather/services" @@ -25,7 +25,7 @@ var GetGddValues = services.GetGddValues // @Param accumulate query boolean true "Accumulate gdd values" // @Router /api/weather/gdd/daily [get] func GetDailyGdd(c *fiber.Ctx) error { - ctx := context.DawnCtx{FiberCtx: c} + ctx := common.DawnCtx{FiberCtx: c} request := models.BuildGddRequest(ctx.FiberCtx) return c.Status(fiber.StatusOK).JSON(GetGddValues(ctx, request)) } diff --git a/controllers/misc_controller.go b/controllers/misc_controller.go index b93933d591366f2887c32c9c8383955946a4317a..cc974e81c49f72cc6530ce14bc704031b088e065 100644 --- a/controllers/misc_controller.go +++ b/controllers/misc_controller.go @@ -1,7 +1,7 @@ package controllers import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "dawn-weather/models" "dawn-weather/persistence" "dawn-weather/persistence/entities" @@ -27,7 +27,7 @@ func GetAnalogYear(c *fiber.Ctx) error { lon, _ := strconv.ParseFloat(c.Query("longitude", "-10000.0"), 64) err := models.ValidateAnalogRequest(lat, lon) if err != nil { - panic(DawnErrors.BAD_REQUEST) + panic(config.BAD_REQUEST) } location := entities.Location{Type: "Point", Coordinates: []float64{lon, lat}} diff --git a/controllers/routes.go b/controllers/routes.go new file mode 100644 index 0000000000000000000000000000000000000000..2df6c3bc8261237d7d99dc4b5a25ee4a256fca3b --- /dev/null +++ b/controllers/routes.go @@ -0,0 +1,21 @@ +package controllers + +import ( + "github.com/gofiber/fiber/v2" +) + +func GddRoutes(route fiber.Router) { + route.Get("gdd/daily", GetDailyGdd) + route.Get("gdd/normals", GetNormalGdd) + route.Get("gdd/gefs", GetGefsGDD) + route.Get("gdd/cfs", GetCfsGDD) + route.Get("gdd/analog", GetAnalogYear) + route.Get("gdd/confidence", GetConfidenceInterval) + + route.Get("freezing-dates", GetFreezingDates) + + route.Get("gdd/csv", GetCSVFile) + + route.Get("gdd/seeds/corn", GetCornSeedMaturityDate) + route.Get("gdd/seeds", GetSeedList) +} diff --git a/controllers/seed_controllers.go b/controllers/seed_controllers.go index 583274e7e083318e35f45bc9a53f109de4922994..13f926e125e5fbb4a1174a7127f5b4612c89469e 100644 --- a/controllers/seed_controllers.go +++ b/controllers/seed_controllers.go @@ -1,6 +1,7 @@ package controllers import ( + "dawn-weather/common" "dawn-weather/models" "dawn-weather/services" @@ -39,9 +40,9 @@ func GetSeedList(c *fiber.Ctx) error { // @Param date query number true "date planted" // @Router /api/weather/gdd/seeds/corn [get] func GetCornSeedMaturityDate(c *fiber.Ctx) error { - + ctx := common.DawnCtx{FiberCtx: c} request := models.BuildCornMaturityRequest(c) return c.Status(fiber.StatusOK).JSON( - services.GetCornMaturityDate(c, request), + services.GetCornMaturityDate(ctx, request), ) } diff --git a/main.go b/main.go index 7903083b8652b7847241d600ecc588a0890bad7c..343fba43d10cd370215db795c1d4b1ca54d33dc4 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,9 @@ package main import ( + "dawn-weather/common" "dawn-weather/config" - "dawn-weather/errors" - "dawn-weather/logger" + "dawn-weather/controllers" "dawn-weather/persistence" "strconv" @@ -11,6 +11,7 @@ import ( swagger "github.com/arsmn/fiber-swagger/v2" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" + "github.com/gofiber/fiber/v2/middleware/logger" "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/fiber/v2/middleware/requestid" "github.com/gofiber/fiber/v2/utils" @@ -21,7 +22,7 @@ import ( func registerRoutes(app *fiber.App) { api := app.Group(viper.GetString("server.context-path")) - config.GddRoutes(api) + controllers.GddRoutes(api) } func registerSwagger(app *fiber.App) { @@ -62,24 +63,24 @@ func createFiberConfig() fiber.Config { ErrorHandler: func(ctx *fiber.Ctx, err error) error { code := fiber.StatusInternalServerError - message := errors.StandardError{Source: viper.GetString("app.name"), ErrorCode: "INTERNAL_SERVER", + message := common.StandardError{Source: viper.GetString("app.name"), ErrorCode: "INTERNAL_SERVER", Description: "Internal Server Error Occurred", Details: map[string]string{"RequestId": ""}} - if e, ok := err.(*errors.DawnError); ok { + if e, ok := err.(*common.DawnError); ok { code = e.Code - message = err.(*errors.DawnError).BuildStandardError(ctx) + message = err.(*common.DawnError).BuildStandardError(ctx) } else { - err = errors.Build(err) + err = common.Build(err) } - logMessage := logger.BuildMessage(ctx) - logMessage.Error = err.(*errors.DawnError) + logMessage := common.BuildMessage(ctx) + logMessage.Error = err.(*common.DawnError) logMessage.StatusCode = strconv.Itoa(code) - logger.LogRequest(logMessage) + common.LogRequest(logMessage) if code == 500 { - message = errors.INTERNAL_SERVER_STANDARD_ERROR.BuildStandardError(ctx) + message = config.INTERNAL_SERVER_STANDARD_ERROR.BuildStandardError(ctx) } err = ctx.Status(code).JSON(message) diff --git a/models/confidence_interval.go b/models/confidence_interval.go index f7091c1cd58c40ee5a2ec42cf2b607c7d3fe615e..6f07a5ac2f510383edfea8b84d8e4fb4684aed0a 100644 --- a/models/confidence_interval.go +++ b/models/confidence_interval.go @@ -1,7 +1,7 @@ package models import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "dawn-weather/models/enums" "dawn-weather/persistence/entities" "errors" @@ -67,7 +67,7 @@ func (r ConfidenceIntervalRequest) Build(c *fiber.Ctx) ConfidenceIntervalRequest } if rNew.Validate() != nil { - panic(DawnErrors.BAD_REQUEST) + panic(config.BAD_REQUEST) } return rNew diff --git a/models/csv.go b/models/csv.go index 5885c3e1e4f645b1cb6124207bd0b0786fbae6ea..93706e504c6eeca97f27411f216e1a43673288ea 100644 --- a/models/csv.go +++ b/models/csv.go @@ -1,7 +1,7 @@ package models import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "strconv" "time" @@ -86,7 +86,7 @@ func (r CSVRequest) Build(c *fiber.Ctx) CSVRequest { } if e := newRequest.Validate(); e != nil { - panic(DawnErrors.BAD_REQUEST.AddLogDetails(e.Error())) + panic(config.BAD_REQUEST.AddLogDetails(e.Error())) } return newRequest diff --git a/models/enums/product_type.go b/models/enums/product_type.go index 76bd38e07b5a15ac3c26edae213cd5bd0ce60c3f..3e931299c39fc7e682f61ae74ef42007ee389d54 100644 --- a/models/enums/product_type.go +++ b/models/enums/product_type.go @@ -1,7 +1,7 @@ package enums import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "strings" ) @@ -89,5 +89,5 @@ func GetProductFromString(productString string) Product { case strings.ToLower(ProductType.SORGHUM.Name): return ProductType.SORGHUM } - panic(DawnErrors.INVALID_PRODUCT(productString)) + panic(config.INVALID_PRODUCT(productString)) } diff --git a/models/freezing_dates.go b/models/freezing_dates.go index 1458d30a9a09da0138887ba42ee4530cb1ef0331..9d19ed60948cfeb9634e585480a2f0a5563a77e4 100644 --- a/models/freezing_dates.go +++ b/models/freezing_dates.go @@ -1,7 +1,7 @@ package models import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "dawn-weather/persistence/entities" "strconv" "time" @@ -48,7 +48,7 @@ func (r FreezingDateRequest) Build(c *fiber.Ctx) FreezingDateRequest { } if rNew.Validate() != nil { - panic(DawnErrors.BAD_REQUEST) + panic(config.BAD_REQUEST) } return rNew diff --git a/models/gdd.go b/models/gdd.go index 8c818db4bf93d0121299998b6dc7e71b9793a8a0..91798e7339bc8f0c0e1a63739727123f6a0879d1 100644 --- a/models/gdd.go +++ b/models/gdd.go @@ -1,7 +1,7 @@ package models import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "dawn-weather/persistence/entities" "strconv" "time" @@ -59,16 +59,16 @@ var BuildGddRequest = func(c *fiber.Ctx) GddRequest { } if errYear != nil || errLat != nil || errLon != nil || errBool != nil { - panic(DawnErrors.BAD_REQUEST) + panic(config.BAD_REQUEST) } if rNew.Year != 0 { if e := rNew.Validate(); e != nil { - panic(DawnErrors.BAD_REQUEST.AddLogDetails(e.Error())) + panic(config.BAD_REQUEST.AddLogDetails(e.Error())) } } else { if e := rNew.ValidateNoYear(); e != nil { - panic(DawnErrors.BAD_REQUEST.AddLogDetails(e.Error())) + panic(config.BAD_REQUEST.AddLogDetails(e.Error())) } } return rNew diff --git a/models/seeds.go b/models/seeds.go index f370bf009a4c6efc0b356fcbdd8e94a92e42b7de..e5144fe437e317228491f31498675a1be85abded 100644 --- a/models/seeds.go +++ b/models/seeds.go @@ -1,7 +1,7 @@ package models import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "strconv" "time" @@ -59,7 +59,7 @@ func BuildCornMaturityRequest(c *fiber.Ctx) CornMaturityRequest { } if e := newRequest.Validate(); e != nil { - panic(DawnErrors.BAD_REQUEST.AddLogDetails(e.Error())) + panic(config.BAD_REQUEST.AddLogDetails(e.Error())) } return newRequest diff --git a/persistence/mongodb.go b/persistence/mongodb.go index e91aad42e7b75f0b99e24ea9f8134ace1a69e6f8..2a2bd3d62367b5d6e6f948507f5f60e3cd94eee7 100644 --- a/persistence/mongodb.go +++ b/persistence/mongodb.go @@ -2,7 +2,8 @@ package persistence import ( "context" - DawnErrors "dawn-weather/errors" + "dawn-weather/common" + "dawn-weather/config" "dawn-weather/models" "dawn-weather/persistence/entities" "strings" @@ -60,7 +61,7 @@ func buildLocationRequest(location entities.Location, year *int) bson.D { return filter } -func CurrentGddFindFirstByYearAndLocation(location entities.Location) entities.Gdd { +func CurrentGddFindFirstByYearAndLocation(ctx common.DawnCtx, location entities.Location) entities.Gdd { coll := Conn.Database(viper.GetString("db.database")).Collection("gdd_current") filter := buildLocationRequest(location, nil) @@ -68,7 +69,7 @@ func CurrentGddFindFirstByYearAndLocation(location entities.Location) entities.G var g entities.Gdd err := coll.FindOne(Ctx, filter).Decode(&g) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } return g @@ -82,7 +83,7 @@ func GddFindFirstByYearAndLocation(year int, location entities.Location) entitie var g entities.Gdd err := coll.FindOne(Ctx, filter).Decode(&g) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } return g @@ -96,7 +97,7 @@ func NormalsFindFirstByYearAndLocation(location entities.Location) entities.Norm var n entities.Normal err := coll.FindOne(Ctx, filter).Decode(&n) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } return n @@ -116,7 +117,7 @@ func GefsFindAllByLocation(location entities.Location) []entities.GefsGdd { cursor, err := coll.Find(Ctx, filter, options) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } for cursor.Next(context.TODO()) { @@ -124,7 +125,7 @@ func GefsFindAllByLocation(location entities.Location) []entities.GefsGdd { var elem entities.GefsGdd err := cursor.Decode(&elem) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } results = append(results, elem) @@ -145,7 +146,7 @@ func CfsFindAllByLocation(location entities.Location) entities.CfsGdd { var g entities.CfsGdd err := coll.FindOne(Ctx, filter).Decode(&g) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } return g @@ -159,7 +160,7 @@ func FindAnalogYear(location entities.Location) models.AnalogResponse { var g entities.Gdd err := coll.FindOne(Ctx, filter).Decode(&g) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } results := models.AnalogResponse{ @@ -179,7 +180,7 @@ func FindFreezingDates(location entities.Location) entities.FreezingDates { var g entities.FreezingDates err := coll.FindOne(Ctx, filter).Decode(&g) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } return g @@ -195,7 +196,7 @@ func FindSeed(seedName string) entities.Seed { var g entities.Seed err := coll.FindOne(Ctx, filter).Decode(&g) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } return g @@ -215,7 +216,7 @@ func FindSeeds(product string) []entities.Seed { cursor, err := coll.Find(Ctx, filter, options) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } for cursor.Next(context.TODO()) { @@ -223,7 +224,7 @@ func FindSeeds(product string) []entities.Seed { var elem entities.Seed err := cursor.Decode(&elem) if err != nil { - panic(DawnErrors.NO_DATA_FOUND) + panic(config.NO_DATA_FOUND) } results = append(results, elem) diff --git a/services/data_download_service.go b/services/data_download_service.go index 82b0de112ff2c5d2df3cdf6287c4299af297714a..515efed5cf36f71d7210ee6d657e3f66473c28a1 100644 --- a/services/data_download_service.go +++ b/services/data_download_service.go @@ -1,8 +1,8 @@ package services import ( - "dawn-weather/context" - DawnErrors "dawn-weather/errors" + "dawn-weather/common" + "dawn-weather/config" "dawn-weather/models" "dawn-weather/models/enums" "dawn-weather/persistence" @@ -93,7 +93,7 @@ func fillDates() []time.Time { return dates } -func getPrimary(c context.DawnCtx, request models.CSVRequest, dates []time.Time) []float64 { +func getPrimary(c common.DawnCtx, request models.CSVRequest, dates []time.Time) []float64 { gddRequest := models.GddRequest{ Year: request.Year, Product: request.Product, @@ -153,7 +153,7 @@ func _parseDate(date string) time.Time { const layout = "2006-Jan-02" newDate, e := time.Parse(layout, date) if e != nil { - panic(DawnErrors.DATE_PARSE_FAILURE.AddLogDetails(e.Error())) + panic(config.DATE_PARSE_FAILURE.AddLogDetails(e.Error())) } return newDate } @@ -188,7 +188,7 @@ func parseDate(date string) time.Time { case "12": return _parseDate("1981-Dev-" + day) } - panic(DawnErrors.DATE_PARSE_FAILURE.AddLogDetails("Failed converting " + date + " to proper format.")) + panic(config.DATE_PARSE_FAILURE.AddLogDetails("Failed converting " + date + " to proper format.")) } func getFreezingDates(request models.CSVRequest, dates []time.Time) [][]int { @@ -231,7 +231,7 @@ func getFreezingDates(request models.CSVRequest, dates []time.Time) [][]int { return [][]int{firstFreezingValues, lastFreezingValues} } -func getComparisonYear(c context.DawnCtx, request models.CSVRequest, dates []time.Time) []float64 { +func getComparisonYear(c common.DawnCtx, request models.CSVRequest, dates []time.Time) []float64 { gddRequest := models.GddRequest{ Year: request.ComparisonYear, Product: request.Product, @@ -347,7 +347,7 @@ func getGefsData(request models.CSVRequest, dates []time.Time) []float64 { return fullGddValues } -func pullData(c context.DawnCtx, request models.CSVRequest) CSVData { +func pullData(c common.DawnCtx, request models.CSVRequest) CSVData { returnData := CSVData{} dates := fillDates() returnData.Date = dates @@ -425,14 +425,14 @@ func createRecords(keys []string, data CSVData) [][]string { return records } -func GetDataDownload(c context.DawnCtx, request models.CSVRequest) string { +func GetDataDownload(c common.DawnCtx, request models.CSVRequest) string { fileId := uuid.New() f, err := os.Create(fileId.String() + ".csv") if err != nil { - panic(DawnErrors.FILE_CREATION_ERROR.AddLogDetails("Could not create file")) + panic(config.FILE_CREATION_ERROR.AddLogDetails("Could not create file")) } w := csv.NewWriter(f) diff --git a/services/freezing_date_service.go b/services/freezing_date_service.go index 14990b305c06f7b6cb4c76332e7cbd9e3ec76ba3..de9339d1e3a735a1f39fed3ff3fbbd8c8b6597ca 100644 --- a/services/freezing_date_service.go +++ b/services/freezing_date_service.go @@ -1,7 +1,7 @@ package services import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/config" "dawn-weather/models" "dawn-weather/persistence" "dawn-weather/persistence/entities" @@ -45,7 +45,7 @@ func GetFreezingDate(request models.FreezingDateRequest) models.FreezingDateResp } if tempIdx == -1 { - panic(DawnErrors.BAD_REQUEST) + panic(config.BAD_REQUEST) } firstDates := freezingDates.FirstDates[tempIdx] diff --git a/services/gdd_service.go b/services/gdd_service.go index 670e1710986c3a4e4f8ddd2967eee473cc89e555..8570e3bd9ceae5e0b9df7e7599af6062e6a0cae9 100644 --- a/services/gdd_service.go +++ b/services/gdd_service.go @@ -1,22 +1,20 @@ package services import ( - "dawn-weather/context" + "dawn-weather/common" "dawn-weather/models" "dawn-weather/models/enums" "dawn-weather/persistence" "dawn-weather/persistence/entities" "dawn-weather/utils" "time" - - "github.com/gofiber/fiber/v2" ) -func GetFullYearGddValues(c *fiber.Ctx, request models.GddRequest) models.GddResponse { +func GetFullYearGddValues(ctx common.DawnCtx, request models.GddRequest) models.GddResponse { product := enums.GetProductFromString(request.Product) var gdds entities.Gdd if request.Year == time.Now().Year() { - gdds = persistence.CurrentGddFindFirstByYearAndLocation(request.BuildLocation()) + gdds = persistence.CurrentGddFindFirstByYearAndLocation(ctx, request.BuildLocation()) gdds2 := persistence.CfsFindAllByLocation(request.BuildLocation()) gdds.MaxTemps = append(gdds.MaxTemps, gdds2.MaxTemps...) gdds.MinTemps = append(gdds.MinTemps, gdds2.MinTemps...) @@ -33,11 +31,11 @@ func GetFullYearGddValues(c *fiber.Ctx, request models.GddRequest) models.GddRes return returnGdds } -func GetGddValues(ctx context.DawnCtx, request models.GddRequest) models.GddResponse { +func GetGddValues(ctx common.DawnCtx, request models.GddRequest) models.GddResponse { product := enums.GetProductFromString(request.Product) var gdds entities.Gdd if request.Year == time.Now().Year() { - gdds = persistence.CurrentGddFindFirstByYearAndLocation(request.BuildLocation()) + gdds = persistence.CurrentGddFindFirstByYearAndLocation(ctx, request.BuildLocation()) } else { gdds = persistence.GddFindFirstByYearAndLocation(request.Year, request.BuildLocation()) } diff --git a/services/seed_service.go b/services/seed_service.go index c64717eddfd8778e1cff72e71ad363e0790c561c..2309962900448b60bf534c190c88557bf51c2c2e 100644 --- a/services/seed_service.go +++ b/services/seed_service.go @@ -1,7 +1,8 @@ package services import ( - DawnErrors "dawn-weather/errors" + "dawn-weather/common" + "dawn-weather/config" "dawn-weather/models" "dawn-weather/models/enums" "dawn-weather/persistence" @@ -15,7 +16,7 @@ import ( func GetSeedList(c *fiber.Ctx, request models.SeedListRequest) models.SeedListResponse { product := enums.GetProductFromString(request.Product) if product.Name != enums.ProductType.CORN.Name && product.Name != enums.ProductType.SOYBEAN.Name { - panic(DawnErrors.INVALID_PRODUCT(request.Product)) + panic(config.INVALID_PRODUCT(request.Product)) } seeds := persistence.FindSeeds(product.Name) var results []string @@ -25,11 +26,11 @@ func GetSeedList(c *fiber.Ctx, request models.SeedListRequest) models.SeedListRe return models.SeedListResponse{Seeds: results} } -func GetCornMaturityDate(c *fiber.Ctx, request models.CornMaturityRequest) models.CornMaturityResponse { +func GetCornMaturityDate(ctx common.DawnCtx, request models.CornMaturityRequest) models.CornMaturityResponse { seed := persistence.FindSeed(request.Seed) if seed.Type != "corn" { - panic(DawnErrors.SEED_TYPE_MISMATCH(request.Seed, "corn")) + panic(config.SEED_TYPE_MISMATCH(request.Seed, "corn")) } gddRequest := models.GddRequest{ @@ -40,7 +41,7 @@ func GetCornMaturityDate(c *fiber.Ctx, request models.CornMaturityRequest) model Accumulate: false, } - gdds := GetFullYearGddValues(c, gddRequest) + gdds := GetFullYearGddValues(ctx, gddRequest) closestValue := 0.0 closestIdx := 0 gdus := 0.0