Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 75bca2abf4 | |||
| 3b1ff1b649 | |||
| 01963ddd35 | |||
| e4042cd76d | |||
| 7a20709424 | |||
| dd3ed73013 | |||
| 7f6b9c3be9 | |||
| cced9311c5 | |||
| 1f6f990185 | |||
| 95217521f1 | |||
| acd224124e | |||
| 0da1747d35 | |||
| 4972989610 | |||
| 0ae9fd4c99 | |||
| 44ac85bed7 | |||
| 1b91bb7e4d | |||
| fc0130e573 | |||
| f675a12790 | |||
| 990cc6f9af | |||
| 72d5f93a30 | |||
| 54ff2581ed | |||
|
|
5a5f643be8 | ||
|
|
2cf4d4c25d | ||
|
|
1f4b619e89 | ||
|
|
d7d8ac5091 | ||
| f9acb885a8 | |||
| 181a5ffb4f | |||
| 4d86de6692 |
@@ -1,22 +1,22 @@
|
||||
package http
|
||||
package basket
|
||||
|
||||
import "time"
|
||||
|
||||
type GetBasketRequest struct {
|
||||
type GetBasketRequestDTO struct {
|
||||
BasketID string `json:"basket_id"`
|
||||
}
|
||||
|
||||
type GetBasketResponse struct {
|
||||
type GetBasketResponseDTO struct {
|
||||
ID string `json:"id"`
|
||||
State string `json:"state"`
|
||||
CreatedAt time.Duration `json:"created_at"`
|
||||
UpdatedAt time.Duration `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type GetBasketItemsRequest struct {
|
||||
type GetBasketItemsRequestDTO struct {
|
||||
}
|
||||
|
||||
type GetBasketItemsResponse struct {
|
||||
type GetBasketItemsResponseDTO struct {
|
||||
ID string `json:"id"`
|
||||
BasketID string `json:"basket_id"`
|
||||
ProductID int `json:"product_id"`
|
||||
@@ -26,10 +26,10 @@ type GetBasketItemsResponse struct {
|
||||
UpdatedAt time.Duration `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type BasketCheckoutRequest struct {
|
||||
type BasketCheckoutRequestDTO struct {
|
||||
BasketID string `json:"basket_id"`
|
||||
}
|
||||
|
||||
type BasketCheckoutResponse struct {
|
||||
type BasketCheckoutResponseDTO struct {
|
||||
ID string `json:"basket_id"`
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
package model
|
||||
package basket
|
||||
|
||||
import (
|
||||
"github.com/jackc/pgtype"
|
||||
)
|
||||
|
||||
type BasketModel struct {
|
||||
type BasketEntity struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
State string `db:"state" json:"state"`
|
||||
CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"`
|
||||
UpdatedAt pgtype.Timestamp `db:"updated_at" json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type BasketItemModel struct {
|
||||
type BasketItemEntity struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
BasketID string `db:"basket_id" json:"basket_id"`
|
||||
ProductID int `db:"product_id" json:"product_id"`
|
||||
20
basket/model/basket.go
Normal file
20
basket/model/basket.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package basket
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Basket struct {
|
||||
State string `db:"state" json:"state"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type BasketItem struct {
|
||||
BasketID string `db:"basket_id" json:"basket_id"`
|
||||
ProductID int `db:"product_id" json:"product_id"`
|
||||
Quantity int `db:"quantity" json:"quantity"`
|
||||
Price float64 `db:"price" json:"price"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"`
|
||||
}
|
||||
46
catalog/dto/product.go
Normal file
46
catalog/dto/product.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package catalog
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type GetProductRequestDTO struct {
|
||||
ProductID string `json:"product_id"`
|
||||
}
|
||||
|
||||
type GetProductResponseDTO struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Slug string `json:"slug"`
|
||||
Price float64 `json:"price"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt *time.Time `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type GetProductListRequestDTO struct {
|
||||
CategoryID string `json:"category_id"`
|
||||
}
|
||||
|
||||
type GetProductListResponseDTO struct {
|
||||
Products []GetProductResponseDTO `json:"products"`
|
||||
}
|
||||
|
||||
type AddProductToBasketRequestDTO struct {
|
||||
ProductID string `json:"product_id"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
|
||||
type AddProductToBasketResponseDTO struct {
|
||||
ProductID string `json:"product_id"`
|
||||
BasketID string `json:"basket_id"`
|
||||
}
|
||||
|
||||
type RemoveProductFromBasketRequestDTO struct {
|
||||
ProductID string `json:"product_id"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
|
||||
type RemoveProductFromBasketResponseDTO struct {
|
||||
ProductID string `json:"product_id"`
|
||||
BasketID string `json:"basket_id"`
|
||||
}
|
||||
12
catalog/entity/product.go
Normal file
12
catalog/entity/product.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package catalog
|
||||
|
||||
import "time"
|
||||
|
||||
type Product struct {
|
||||
ID string `json:"id", db:"id"`
|
||||
Slug string `json:"slug", db:"slug"`
|
||||
Name string `json:"name", db:"name"`
|
||||
Price float64 `json:"price", db:"price"`
|
||||
CreatedAt time.Time `json:"created_at", db:"created_at"`
|
||||
UpdatedAt *time.Time `json:"updated_at,omitempty", db:"updated_at, omitempty"`
|
||||
}
|
||||
13
catalog/model/product.go
Normal file
13
catalog/model/product.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package catalog
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Product struct {
|
||||
Name string `db:"name"`
|
||||
Slug string `db:"slug"`
|
||||
Price float64 `db:"price"`
|
||||
CreatedAt time.Time `db:"created_at"`
|
||||
UpdatedAt *time.Time `db:"updated_at,omitempty"`
|
||||
}
|
||||
9
common/dto/error.go
Normal file
9
common/dto/error.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package common
|
||||
|
||||
type ErrorResponseDTO struct {
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
func NewError(err string) *ErrorResponseDTO { // FIXME Can DTOs have functions?
|
||||
return &ErrorResponseDTO{err}
|
||||
}
|
||||
5
common/dto/health.go
Normal file
5
common/dto/health.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package common
|
||||
|
||||
type HealthResponseDTO struct {
|
||||
Status string `json:"status"`
|
||||
}
|
||||
42
common/vo/currency.go
Normal file
42
common/vo/currency.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package common
|
||||
|
||||
import "strings"
|
||||
|
||||
type Currency struct {
|
||||
Code string
|
||||
NumericCode string
|
||||
Fraction int
|
||||
Grapheme string
|
||||
Template string
|
||||
Decimal string
|
||||
Thousand string
|
||||
}
|
||||
|
||||
type Currencies map[string]*Currency
|
||||
|
||||
var currencies = Currencies{
|
||||
"EUR": {Decimal: ".", Thousand: ",", Code: "EUR", Fraction: 2, NumericCode: "978", Grapheme: "\u20ac", Template: "$1"},
|
||||
"GBP": {Decimal: ".", Thousand: ",", Code: "GBP", Fraction: 2, NumericCode: "826", Grapheme: "\u00a3", Template: "$1"},
|
||||
"PLN": {Decimal: ".", Thousand: ",", Code: "PLN", Fraction: 2, NumericCode: "985", Grapheme: "z\u0142", Template: "1 $"},
|
||||
"USD": {Decimal: ".", Thousand: ",", Code: "USD", Fraction: 2, NumericCode: "840", Grapheme: "$", Template: "$1"},
|
||||
}
|
||||
|
||||
func NewCurrency(code string) *Currency {
|
||||
return &Currency{Code: strings.ToUpper(code)}
|
||||
}
|
||||
|
||||
func (c *Currency) Default() *Currency {
|
||||
return &Currency{Decimal: ".", Thousand: ",", Code: c.Code, Fraction: 2, Grapheme: c.Code, Template: "1$"}
|
||||
}
|
||||
|
||||
func (c *Currency) Get() *Currency {
|
||||
if curr, ok := currencies[c.Code]; ok {
|
||||
return curr
|
||||
}
|
||||
|
||||
return c.Default()
|
||||
}
|
||||
|
||||
func (c *Currency) Equals(oc *Currency) bool {
|
||||
return c.Code == oc.Code
|
||||
}
|
||||
4
common/vo/money.go
Normal file
4
common/vo/money.go
Normal file
@@ -0,0 +1,4 @@
|
||||
package common
|
||||
|
||||
type Money struct {
|
||||
}
|
||||
4
go.mod
4
go.mod
@@ -1,7 +1,7 @@
|
||||
module git.pbiernat.dev/egommerce/api-entities
|
||||
module git.ego.freeddns.org/egommerce/api-entities
|
||||
|
||||
go 1.19
|
||||
|
||||
require github.com/jackc/pgtype v1.13.0
|
||||
require github.com/jackc/pgtype v1.14.3
|
||||
|
||||
require github.com/jackc/pgio v1.0.0 // indirect
|
||||
|
||||
60
go.sum
60
go.sum
@@ -22,8 +22,9 @@ github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW
|
||||
github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s=
|
||||
github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o=
|
||||
github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY=
|
||||
github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530 h1:dUJ578zuPEsXjtzOfEF0q9zDAfljJ9oFnTHcQaNkccw=
|
||||
github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI=
|
||||
github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w=
|
||||
github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM=
|
||||
github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=
|
||||
github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
|
||||
github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE=
|
||||
@@ -38,24 +39,29 @@ github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod
|
||||
github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
|
||||
github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM=
|
||||
github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgproto3/v2 v2.1.1 h1:7PQ/4gLoqnl87ZxL7xjO0DR5gYuviDCZxQJsUlFW1eI=
|
||||
github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg=
|
||||
github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag=
|
||||
github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
|
||||
github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E=
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||
github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg=
|
||||
github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc=
|
||||
github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw=
|
||||
github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM=
|
||||
github.com/jackc/pgtype v1.13.0 h1:XkIc7A+1BmZD19bB2NxrtjJweHxQ9agqvM+9URc68Cg=
|
||||
github.com/jackc/pgtype v1.13.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
|
||||
github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
|
||||
github.com/jackc/pgtype v1.14.3 h1:h6W9cPuHsRWQFTWUZMAKMgG5jSwQI0Zurzdvlx3Plus=
|
||||
github.com/jackc/pgtype v1.14.3/go.mod h1:aKeozOde08iifGosdJpz9MBZonJOUJxqNpPBcMJTlVA=
|
||||
github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y=
|
||||
github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM=
|
||||
github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc=
|
||||
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c h1:Dznn52SgVIVst9UyOT9brctYUgxs+CvVfPaC3jKrA50=
|
||||
github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs=
|
||||
github.com/jackc/pgx/v4 v4.18.2 h1:xVpYkNR5pk5bMCZGfClbO962UIqVABcAGt7ha1s/FeU=
|
||||
github.com/jackc/pgx/v4 v4.18.2/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw=
|
||||
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
@@ -88,12 +94,18 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
@@ -114,17 +126,28 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
|
||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg=
|
||||
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -137,14 +160,27 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
@@ -152,7 +188,10 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw
|
||||
golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
@@ -163,6 +202,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type GetProductRequest struct {
|
||||
ProductID int `json:"product_id"`
|
||||
}
|
||||
|
||||
type GetProductResponse struct {
|
||||
ID int `json:"id"`
|
||||
PID string `json:"pid"`
|
||||
Name string `json:"name"`
|
||||
Price float64 `json:"price"`
|
||||
CreatedAt time.Duration `json:"created_at"`
|
||||
UpdatedAt time.Duration `json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type GetProductListRequest struct {
|
||||
CategoryID int `json:"category_id"`
|
||||
}
|
||||
|
||||
type GetProductListResponse struct {
|
||||
Products []GetProductResponse `json:"products"`
|
||||
}
|
||||
|
||||
type AddProductToBasketRequest struct {
|
||||
ProductID int `json:"product_id"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
|
||||
type AddProductToBasketResponse struct {
|
||||
ProductID int `json:"product_id"`
|
||||
BasketID string `json:"basket_id"`
|
||||
}
|
||||
|
||||
type RemoveProductFromBasketRequest struct {
|
||||
ProductID int `json:"product_id"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
|
||||
type RemoveProductFromBasketResponse struct {
|
||||
ProductID int `json:"product_id"`
|
||||
BasketID string `json:"basket_id"`
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package http
|
||||
|
||||
type ErrorResponse struct {
|
||||
Error string `json:"error"`
|
||||
}
|
||||
|
||||
func Error(err string) *ErrorResponse {
|
||||
return &ErrorResponse{err}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package http
|
||||
|
||||
type HealthResponse struct {
|
||||
Status string `json:"status,omitempty"`
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package http
|
||||
|
||||
type AuthLoginRequest struct {
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
type AuthLoginResponse struct {
|
||||
Token string `json:"jwt_token"`
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package http
|
||||
|
||||
type UpdateOrderStatusRequest struct {
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
type UpdateOrderStatusResponse struct {
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package http
|
||||
|
||||
type ProductPriceRequest struct {
|
||||
ProductId int `json:"product_id"`
|
||||
}
|
||||
|
||||
type ProductPriceResponse struct {
|
||||
Price float64 `json:"price"`
|
||||
}
|
||||
28
identity/dto/auth.go
Normal file
28
identity/dto/auth.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package identity
|
||||
|
||||
type AuthLoginRequestDTO struct {
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
type AuthLoginResponseDTO struct {
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
type AuthRefreshTokenRequestDTO struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
}
|
||||
|
||||
type AuthRefreshTokenResponseDTO struct {
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
type AuthRegisterRequestDTO struct {
|
||||
Email string `json:"email"`
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
type AuthRegisterResponseDTO struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
5
identity/dto/headers.go
Normal file
5
identity/dto/headers.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package identity
|
||||
|
||||
type AuthorizationHeaderDTO struct {
|
||||
Authorization string `reqHeader:"authorization"`
|
||||
}
|
||||
8
identity/entity/role.go
Normal file
8
identity/entity/role.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package identity
|
||||
|
||||
type Role struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
Name string `db:"name" json:"name"`
|
||||
DisplayName string `db:"display_name" json:"display_name"`
|
||||
URL string `db:"url" json:"url"`
|
||||
}
|
||||
8
identity/entity/url_access.go
Normal file
8
identity/entity/url_access.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package identity
|
||||
|
||||
type URLAccess struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
Roles []string `db:"roles" json:"roles"`
|
||||
URL string `db:"url" json:"url"`
|
||||
Service string `db:"service" json:"service"`
|
||||
}
|
||||
19
identity/entity/user.go
Normal file
19
identity/entity/user.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package identity
|
||||
|
||||
import "time"
|
||||
|
||||
type User struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
Email string `db:"email" json:"email"`
|
||||
Username string `db:"username" json:"username"`
|
||||
Password string `db:"password" json:"password"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
UpdatedAt *time.Time `db:"updated_at,omitempty" json:"updated_at,omitempty"` // FIXME: zero-value issue
|
||||
}
|
||||
|
||||
// var TestUser = &User{
|
||||
// ID: 1,
|
||||
// Username: "test",
|
||||
// Password: "test",
|
||||
// CreateDate: time.Now(),
|
||||
// }
|
||||
@@ -1,12 +0,0 @@
|
||||
package model
|
||||
|
||||
import "github.com/jackc/pgtype"
|
||||
|
||||
type ProductModel struct {
|
||||
ID int `db:"id"`
|
||||
PID string `db:"pid"`
|
||||
Name string `db:"name"`
|
||||
Price float64 `db:"price"`
|
||||
CreatedAt pgtype.Timestamp `db:"created_at"`
|
||||
UpdatedAt pgtype.Timestamp `db:"updated_at,omitempty"`
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package model
|
||||
|
||||
type ProductPriceModel struct {
|
||||
ID int `db:"id"`
|
||||
PID string `db:"pid"`
|
||||
Price float64 `db:"price"`
|
||||
}
|
||||
8
order/dto/order.go
Normal file
8
order/dto/order.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package order
|
||||
|
||||
type UpdateOrderStatusRequestDTO struct {
|
||||
Status string `json:"status"`
|
||||
}
|
||||
|
||||
type UpdateOrderStatusResponseDTO struct {
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
package model
|
||||
package order
|
||||
|
||||
import "github.com/jackc/pgtype"
|
||||
|
||||
type OrderModel struct {
|
||||
type OrderEntity struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
State string `db:"state" json:"state"`
|
||||
CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"`
|
||||
UpdatedAt pgtype.Timestamp `db:"updated_at" json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type OrderItemModel struct {
|
||||
type OrderItemEntity struct {
|
||||
ID string `db:"id" json:"id"`
|
||||
OrderID string `db:"order_id" json:"order_id"`
|
||||
ProductID int `db:"product_id" json:"product_id"`
|
||||
18
order/model/order.go
Normal file
18
order/model/order.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package order
|
||||
|
||||
import "time"
|
||||
|
||||
type Order struct {
|
||||
State string `db:"state" json:"state"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"`
|
||||
}
|
||||
|
||||
type OrderItem struct {
|
||||
OrderID string `db:"order_id" json:"order_id"`
|
||||
ProductID int `db:"product_id" json:"product_id"`
|
||||
Quantity int `db:"quantity" json:"quantity"`
|
||||
Price float64 `db:"price" json:"price"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"`
|
||||
}
|
||||
9
pricing/dto/product_price.go
Normal file
9
pricing/dto/product_price.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package pricing
|
||||
|
||||
type ProductPriceRequestDTO struct {
|
||||
ProductId int `json:"product_id"`
|
||||
}
|
||||
|
||||
type ProductPriceResponseDTO struct {
|
||||
Price int `json:"price"`
|
||||
}
|
||||
7
pricing/entity/product_price.go
Normal file
7
pricing/entity/product_price.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package pricing
|
||||
|
||||
type ProductPriceEntity struct {
|
||||
ID int `db:"id"`
|
||||
PID string `db:"pid"`
|
||||
Price int `db:"price"`
|
||||
}
|
||||
6
pricing/model/product_price.go
Normal file
6
pricing/model/product_price.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package pricing
|
||||
|
||||
type ProductPrice struct {
|
||||
PID string `db:"pid"`
|
||||
Price int `db:"price"`
|
||||
}
|
||||
Reference in New Issue
Block a user