1
0
Fork 0

refactor: move currency to money package and add new type Price, refactor api and use price there too

This commit is contained in:
Vojtěch Mareš 2024-05-05 18:19:56 +02:00
parent 18d1c98b76
commit ef1526a1ac
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
7 changed files with 127 additions and 137 deletions

View file

@ -350,32 +350,17 @@ components:
path: gitlab.mareshq.com/hq/yggdrasil/pkg/training
TrainingPrice:
type: object
properties:
currency:
type: string
enum:
- CZK
- EUR
- USD
x-go-type: currency.Currency
x-go-type-package:
path: gitlab.mareshq.com/hq/yggdrasil/internal/currency
amount:
type: number
minimum: 0
x-go-type: decimal.Decimal
x-go-type-package:
path: github.com/shopspring/decimal
type:
type: string
enum:
- OPEN
- CORPORATE
required:
- currency
- amount
- type
allOf:
- $ref: "#/components/schemas/Price"
- type: object
properties:
type:
type: string
enum:
- OPEN
- CORPORATE
required:
- type
CreateTrainingDateRequest:
$ref: "#/components/schemas/NewTrainingDate"
@ -443,7 +428,7 @@ components:
format: int8
minimum: 1
price:
$ref: "#/components/schemas/TrainingDatePrice"
$ref: "#/components/schemas/Price"
required:
- trainingID
- date
@ -465,7 +450,14 @@ components:
required:
- id
TrainingDatePrice:
TrainingDateID:
type: string
format: uuid
x-go-type: training.TrainingDateID
x-go-type-import:
path: gitlab.mareshq.com/hq/yggdrasil/pkg/training
Price:
type: object
properties:
currency:
@ -474,9 +466,9 @@ components:
- CZK
- EUR
- USD
x-go-type: currency.Currency
x-go-type: money.Currency
x-go-type-package:
path: gitlab.mareshq.com/hq/yggdrasil/internal/currency
path: gitlab.mareshq.com/hq/yggdrasil/internal/money
amount:
type: number
minimum: 0
@ -487,13 +479,6 @@ components:
- currency
- amount
TrainingDateID:
type: string
format: uuid
x-go-type: training.TrainingDateID
x-go-type-import:
path: gitlab.mareshq.com/hq/yggdrasil/pkg/training
ProblemDetails:
type: object
description: >

View file

@ -5,7 +5,7 @@ import (
"time"
"github.com/shopspring/decimal"
"gitlab.mareshq.com/hq/yggdrasil/internal/currency"
"gitlab.mareshq.com/hq/yggdrasil/internal/money"
"gitlab.mareshq.com/hq/yggdrasil/pkg/training"
)
@ -30,22 +30,22 @@ func (f *Faker) GenerateFakeData() error {
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(450),
Currency: currency.USD,
Currency: money.USD,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(2000),
Currency: currency.USD,
Currency: money.USD,
Type: training.CorporateTrainingPrice,
},
{
Amount: decimal.NewFromInt(9900),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(49000),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.CorporateTrainingPrice,
},
},
@ -57,22 +57,22 @@ func (f *Faker) GenerateFakeData() error {
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: currency.USD,
Currency: money.USD,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(1000),
Currency: currency.USD,
Currency: money.USD,
Type: training.CorporateTrainingPrice,
},
{
Amount: decimal.NewFromInt(4900),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(24000),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.CorporateTrainingPrice,
},
},
@ -84,22 +84,22 @@ func (f *Faker) GenerateFakeData() error {
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: currency.USD,
Currency: money.USD,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(1000),
Currency: currency.USD,
Currency: money.USD,
Type: training.CorporateTrainingPrice,
},
{
Amount: decimal.NewFromInt(4900),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(24000),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.CorporateTrainingPrice,
},
},
@ -111,22 +111,22 @@ func (f *Faker) GenerateFakeData() error {
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: currency.USD,
Currency: money.USD,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(1000),
Currency: currency.USD,
Currency: money.USD,
Type: training.CorporateTrainingPrice,
},
{
Amount: decimal.NewFromInt(4900),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(24000),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.CorporateTrainingPrice,
},
},
@ -138,22 +138,22 @@ func (f *Faker) GenerateFakeData() error {
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(200),
Currency: currency.USD,
Currency: money.USD,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(1000),
Currency: currency.USD,
Currency: money.USD,
Type: training.CorporateTrainingPrice,
},
{
Amount: decimal.NewFromInt(4900),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(24000),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.CorporateTrainingPrice,
},
},
@ -165,22 +165,22 @@ func (f *Faker) GenerateFakeData() error {
Pricing: []training.TrainingPrice{
{
Amount: decimal.NewFromInt(450),
Currency: currency.USD,
Currency: money.USD,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(2000),
Currency: currency.USD,
Currency: money.USD,
Type: training.CorporateTrainingPrice,
},
{
Amount: decimal.NewFromInt(9900),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.OpenTrainingPrice,
},
{
Amount: decimal.NewFromInt(49000),
Currency: currency.CZK,
Currency: money.CZK,
Type: training.CorporateTrainingPrice,
},
},
@ -219,9 +219,9 @@ func (f *Faker) GenerateFakeData() error {
amount = decimal.NewFromInt(9900)
}
cur := currency.CZK
cur := money.CZK
if online {
cur = currency.EUR
cur = money.EUR
if t.Days == 2 {
amount = decimal.NewFromInt(450)
@ -238,7 +238,7 @@ func (f *Faker) GenerateFakeData() error {
Location: location,
Address: "TBD",
Capacity: 12,
Price: training.TrainingDatePrice{
Price: money.Price{
Amount: amount,
Currency: cur,
},

View file

@ -1,4 +1,4 @@
package currency
package money
type Currency string

8
internal/money/price.go Normal file
View file

@ -0,0 +1,8 @@
package money
import "github.com/shopspring/decimal"
type Price struct {
Amount decimal.Decimal
Currency Currency
}

View file

@ -18,7 +18,7 @@ import (
"github.com/gofiber/fiber/v2"
"github.com/oapi-codegen/runtime"
"github.com/shopspring/decimal"
"gitlab.mareshq.com/hq/yggdrasil/internal/currency"
"gitlab.mareshq.com/hq/yggdrasil/internal/money"
"gitlab.mareshq.com/hq/yggdrasil/pkg/training"
)
@ -71,14 +71,20 @@ type NewTraining struct {
// NewTrainingDate defines model for NewTrainingDate.
type NewTrainingDate struct {
Address string `json:"address"`
Capacity int8 `json:"capacity"`
Date time.Time `json:"date"`
Days int8 `json:"days"`
IsOnline bool `json:"isOnline"`
Location string `json:"location"`
Price TrainingDatePrice `json:"price"`
StartTime string `json:"startTime"`
Address string `json:"address"`
Capacity int8 `json:"capacity"`
Date time.Time `json:"date"`
Days int8 `json:"days"`
IsOnline bool `json:"isOnline"`
Location string `json:"location"`
Price Price `json:"price"`
StartTime string `json:"startTime"`
}
// Price defines model for Price.
type Price struct {
Amount decimal.Decimal `json:"amount"`
Currency money.Currency `json:"currency"`
}
// ProblemDetails Schema that carries the details of an error in an HTTP response. See https://datatracker.ietf.org/doc/html/rfc7807 for more information.
@ -110,33 +116,27 @@ type Training struct {
// TrainingDate defines model for TrainingDate.
type TrainingDate struct {
Address string `json:"address"`
Capacity int8 `json:"capacity"`
Date time.Time `json:"date"`
Days int8 `json:"days"`
Id TrainingDateID `json:"id"`
IsOnline bool `json:"isOnline"`
Location string `json:"location"`
Price TrainingDatePrice `json:"price"`
StartTime string `json:"startTime"`
Address string `json:"address"`
Capacity int8 `json:"capacity"`
Date time.Time `json:"date"`
Days int8 `json:"days"`
Id TrainingDateID `json:"id"`
IsOnline bool `json:"isOnline"`
Location string `json:"location"`
Price Price `json:"price"`
StartTime string `json:"startTime"`
}
// TrainingDateID defines model for TrainingDateID.
type TrainingDateID = training.TrainingDateID
// TrainingDatePrice defines model for TrainingDatePrice.
type TrainingDatePrice struct {
Amount decimal.Decimal `json:"amount"`
Currency currency.Currency `json:"currency"`
}
// TrainingID defines model for TrainingID.
type TrainingID = training.TrainingID
// TrainingPrice defines model for TrainingPrice.
type TrainingPrice struct {
Amount decimal.Decimal `json:"amount"`
Currency currency.Currency `json:"currency"`
Currency money.Currency `json:"currency"`
Type TrainingPriceType `json:"type"`
}
@ -1344,37 +1344,37 @@ func (sh *strictHandler) ListTrainingUpcomingDates(ctx *fiber.Ctx, trainingID Tr
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"H4sIAAAAAAAC/+xaX3PbuBH/Khi0b6VFpZebu9FT3Si90zSNVcfuQ9M8QORKREICNLC0o/Hok/Sp36X9",
"Xh0AJEVSlEhZ0li+8ZNlkNj97f/Fgo80kEkqBQjUdPRIU6ZYAgjK/nejGBdcLMYMYTI2KyHoQPEUuRR0",
"VD4n5gUyGVOPcrOeMoyoRwVLgI4o1ql4VMFdxhWEdIQqA4/qIIKEGfK/VzCnI/o7f43Kd0+13wCzWnkl",
"/53YumAdAZKFszJUdCqFBqu8iUBQgsXvlZLKLARSIAg0P1maxjxgBqqfKjmLIfnDV21wP/ZkPXW7xoCM",
"x9qxryug4E/AAlh5dCLuWczDiUgzfD5UFgPhBsQa2keJf5GZCJ8L1keJZG4AFJBWhQ9YW75TwBCqHngN",
"dxloiy9VMgWF3JmdhaECbX/iMjWOplFxsTBSBixlAceleTiXKmFIR5QL/Jl6NOGCJ1lCR2+8YiMXCAuw",
"+gkZQm2XXfAaLDz6/WIhL/JF5AkMbngCjsBSt7Jl3x3bH7sgcH0lYi6gItlMyhiYME9j6SzUKneqeAD7",
"xPfUbjA2QKbQylDFbiTbEN4FYBHGn+vxnatrTS7XSEWsigxeacWKzQoxvpSM5ewrBGhgtvmHSwXWJeL4",
"ak5Hn3fL/xEeqgToymu6Fg+fkCOrKuFhC/ovG/i3+vbhTlSLuhZPcbl5iwuZn0YNCInuq4nSk3KKTCm2",
"3FCMZVu6RBXkmnO33Q+y+UH23sfWvwC+XEetgH8Z2v7ANV7G8W0ayISLRVVuXZWgdOpmxGGObh+nz83S",
"8HmvmhKfLupGXtWtodHkbRTRLf0h0lU5FPo+PaenU2+jXHXR1/TblX6bmei1GXttxjza6PY3ToafrIwE",
"I4YkYEpx0AQjIKHbQOScMOHOAYQL8/vXm5spKQ53A/IJgESIqR75fsiQoWLBN1ADDjgfSLXwQxn4ESax",
"r+bBTz8PfyJzqUgiFRAunN64FIN/OfeuRbiFsAn5kkRZwsSFAhayWQwEvqcxE5YO0SkEfM4DgpJgxDWR",
"QZApBSIAI4sRLT82DTbtZI7GGplwLtHkens9IQrm4IhZjfEQBPJ5obSS+X5MNTLMWmxzE4HTtnuBBDIE",
"sgABiiGEZLa0lKXiCy6IBnUPyiq3t9yVGEKOMfTQtc6ShKllgyYxBFtlcwtPUWYH6WZMmaeFGKVKvcKJ",
"KpZti5JqmTnf9qmZ3s+/Q92cmZWZMst42FUm8t2Dm+bQrHzrgiepVO50xjCiI7rgGLPZIGEKdHQ3CGTi",
"R3f+crEIFdM89tNvCx9LyzUwToty0Kiciczc+KUsRMMSusiSGagG9BACnrB4MHZ/a5BTFnxjC6hjjrKZ",
"xaojmerUKMPPaViQeSzb+gzCAPhM3/3zr9Sj72+vqUdvP40rJmjVZkFi8K6g1QlqpyJ5PlLzS2yrpl8E",
"a065CncF3xEc5GTO8eoYhznGuhAUIK+m7z9Sj767up5eXV/evN9E2e1N+Y42p7pNw9ch5WtfvLUvbvOP",
"lzT7qeN/HVL2PSU39Xb+Y7OVPZbMZXERxAJrZ0js4YhylvzpXn5FCCKbkU0+Xt/r/UN+xf/+O4jI35iC",
"//2HejRTZldxYnt4eBhs7DbJgQeQ6yWnNFUyVRyQqWXlvEANXf3r38nldEI9eg9Kuw5/OHgzGJoXZQqC",
"pZyO6A92ybNlxGrLv39TVlu7sAArmtGoDetJSEf1+RJt3Cv+cTjccUG238VY+yCr5X7sksRcoz0ClbhW",
"Hv3RYWljUWL26xeh9mbNnahySQmL4wpZjyIzuvlM1yow4Z9K3aKq+gQ+v8kFjX+W4fJoamq/Hmn0fqgy",
"WG3Y6s3JQGw3Vnn1HdgtobHU236Wal4QH8PGDjhhRMBDaectZl559RDxs3yQe1FOwrdGzLYx+6kDqHO8",
"32KiD3k0VV2fFLISJ6u12ttu3dfvzo8alXVETcC6rxEf123Oyk1GYnCtYt2KY7teCebq5yhbqtT6lVqh",
"+bJh9Lc7vhFxgMJnVLkTnbC1N8yW7tOV9mzYGgWV27EjK+94EdN2g9dacLByTfJMRvkFsL9F0qzFIvXe",
"63CjHL+2tXfVvWrb8GQgetS2zG45sLY9k185cfu61s506nfXxWYxPM+8sP1+eEf5LPV3NhVzXSi7Wp1+",
"He3YzQTOLm1s/yLuWdvi2lRjV/qwAXjG/TEpZmdPSwjrJTdl2aPtOtjjvN5vFxOgPZs1o61z7NgssMPa",
"trNQ/kmava7IPLuU3mj+ehi3Rwf4XPY9dd+4dwEYnhRI3wLw22oiO110d+HYY9TS+pndi2gt2z8MfDEt",
"ZstApnOkZqjYL2WcURpiyoDFJIR7iGWagMD8q5ra2Hzk+7F5L5IaRz8Mh0Nrr5xZk+JV4S2asJnMsDYu",
"yifra3yrL6v/BwAA//8Lqnf6hDQAAA==",
"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",
"xkX5ZH2Fb3m7/G8AAAD//6DZ/Q5BMwAA",
}
// GetSwagger returns the content of the embedded swagger specification file

View file

@ -5,6 +5,7 @@ import (
"time"
"github.com/gofiber/fiber/v2"
"gitlab.mareshq.com/hq/yggdrasil/internal/money"
"gitlab.mareshq.com/hq/yggdrasil/pkg/training"
)
@ -211,7 +212,7 @@ func (h *APIHandlers) ListTrainingDates(ctx context.Context, req ListTrainingDat
Location: td.Location,
Address: td.Address,
Capacity: td.Capacity,
Price: TrainingDatePrice{
Price: Price{
Amount: td.Price.Amount,
Currency: td.Price.Currency,
},
@ -222,7 +223,7 @@ func (h *APIHandlers) ListTrainingDates(ctx context.Context, req ListTrainingDat
}
func (h *APIHandlers) CreateTrainingDate(ctx context.Context, req CreateTrainingDateRequestObject) (CreateTrainingDateResponseObject, error) {
price := training.TrainingDatePrice{
price := money.Price{
Amount: req.Body.Price.Amount,
Currency: req.Body.Price.Currency,
}
@ -267,7 +268,7 @@ func (h *APIHandlers) CreateTrainingDate(ctx context.Context, req CreateTraining
Location: td.Location,
Address: td.Address,
Capacity: td.Capacity,
Price: TrainingDatePrice{
Price: Price{
Amount: td.Price.Amount,
Currency: td.Price.Currency,
},
@ -320,7 +321,7 @@ func (h *APIHandlers) GetTrainingDate(ctx context.Context, req GetTrainingDateRe
Location: td.Location,
Address: td.Address,
Capacity: td.Capacity,
Price: TrainingDatePrice{
Price: Price{
Amount: td.Price.Amount,
Currency: td.Price.Currency,
},
@ -328,7 +329,7 @@ func (h *APIHandlers) GetTrainingDate(ctx context.Context, req GetTrainingDateRe
}
func (h *APIHandlers) UpdateTrainingDate(ctx context.Context, req UpdateTrainingDateRequestObject) (UpdateTrainingDateResponseObject, error) {
price := training.TrainingDatePrice{
price := money.Price{
Amount: req.Body.Price.Amount,
Currency: req.Body.Price.Currency,
}
@ -374,7 +375,7 @@ func (h *APIHandlers) UpdateTrainingDate(ctx context.Context, req UpdateTraining
Location: td.Location,
Address: td.Address,
Capacity: td.Capacity,
Price: TrainingDatePrice{
Price: Price{
Amount: td.Price.Amount,
Currency: td.Price.Currency,
},
@ -416,7 +417,7 @@ func (h *APIHandlers) ListAllUpcomingTrainingDates(ctx context.Context, req List
Location: td.Location,
Address: td.Address,
Capacity: td.Capacity,
Price: TrainingDatePrice{
Price: Price{
Amount: td.Price.Amount,
Currency: td.Price.Currency,
},
@ -449,7 +450,7 @@ func (h *APIHandlers) ListTrainingUpcomingDates(ctx context.Context, req ListTra
Location: td.Location,
Address: td.Address,
Capacity: td.Capacity,
Price: TrainingDatePrice{
Price: Price{
Amount: td.Price.Amount,
Currency: td.Price.Currency,
},

View file

@ -5,7 +5,7 @@ import (
"github.com/google/uuid"
"github.com/shopspring/decimal"
"gitlab.mareshq.com/hq/yggdrasil/internal/currency"
"gitlab.mareshq.com/hq/yggdrasil/internal/money"
)
type TrainingID = uuid.UUID
@ -24,7 +24,7 @@ type Training struct {
type TrainingPrice struct {
Amount decimal.Decimal
Currency currency.Currency
Currency money.Currency
Type TrainingPriceType
}
@ -52,10 +52,6 @@ type TrainingDate struct {
Location string
Address string
Capacity int8
Price TrainingDatePrice
Price money.Price
}
type TrainingDatePrice struct {
Amount decimal.Decimal
Currency currency.Currency
}