Compare commits

..

22 Commits

Author SHA1 Message Date
6055673a34 Added DTO for RemoveFromBasket action 2025-11-08 02:16:17 +01:00
957e0aa13a Refactored time.Duration to time.Time type 2025-11-08 01:04:05 +01:00
3e340d68d0 Added AddProductToBasket HTTP DTO 2025-11-08 00:42:31 +01:00
f6c6bb07fd go.mod update 2025-11-07 23:20:29 +01:00
606c6ec6f8 Basket update 2025-11-07 16:24:54 +01:00
7d9c66ae26 Update 2025-10-24 13:27:38 +02:00
3b1ff1b649 Update 2025-10-23 19:16:25 +02:00
01963ddd35 Updated Product Entity 2025-10-23 18:53:13 +02:00
e4042cd76d Updated Product Entity 2025-10-23 18:51:16 +02:00
7a20709424 Updated Product Entity 2025-10-23 18:48:29 +02:00
dd3ed73013 Updated catalog DTOs 2025-10-23 18:47:01 +02:00
7f6b9c3be9 Catalog Entity, Model and DTO fields updated 2025-10-23 11:25:49 +02:00
cced9311c5 Fixed typo 2025-10-22 18:58:25 +02:00
1f6f990185 Fixed Role Entity field names 2025-10-22 12:33:13 +02:00
95217521f1 Added DTO for Authorization header reading 2025-10-22 11:24:56 +02:00
acd224124e Added service field to URLAccess Entity 2025-10-22 09:00:34 +02:00
0da1747d35 Fixed wrong typed Entity, URLAccess is what we need 2025-10-21 21:19:47 +02:00
4972989610 Added Role Entity 2025-10-21 21:04:37 +02:00
0ae9fd4c99 Removed uneccessary suffixes 2025-10-21 14:03:13 +02:00
44ac85bed7 Fixes in User Entity field names 2025-10-21 12:13:59 +02:00
1b91bb7e4d Added DTOs for RefhreshToken action 2025-10-20 21:22:13 +02:00
fc0130e573 Renamed jwt_token to token 2025-10-20 18:48:34 +02:00
14 changed files with 102 additions and 69 deletions

View File

@@ -7,23 +7,42 @@ type GetBasketRequestDTO struct {
} }
type GetBasketResponseDTO struct { type GetBasketResponseDTO struct {
ID string `json:"id"` ID string `json:"id"`
State string `json:"state"` State string `json:"state"`
CreatedAt time.Duration `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Duration `json:"updated_at,omitempty"` UpdatedAt *time.Time `json:"updated_at,omitempty"`
} }
type GetBasketItemsRequestDTO struct { type GetBasketItemsRequestDTO struct {
} }
type GetBasketItemsResponseDTO struct { type GetBasketItemsResponseDTO struct {
ID string `json:"id"` ID string `json:"id"`
BasketID string `json:"basket_id"` BasketID string `json:"basket_id"`
ProductID int `json:"product_id"` ProductID string `json:"product_id"`
Quantity int `json:"quantity"` Quantity int `json:"quantity"`
Price float64 `json:"price"` Price float64 `json:"price"`
CreatedAt time.Duration `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Duration `json:"updated_at,omitempty"` UpdatedAt *time.Time `json:"updated_at,omitempty"`
}
type AddProductToBasketRequestDTO struct {
BasketID string `json:"basket_id"`
ProductID string `json:"product_id"`
Quantity int `json:"quantity"`
}
type AddProductToBasketResponseDTO struct {
BasketID string `json:"basket_id"`
}
type RemoveFromBasketRequestDTO struct {
BasketID string `json:"basket_id"`
ProductID string `json:"product_id"`
}
type RemoveFromBasketResponseDTO struct {
BasketID string `json:"basket_id"`
} }
type BasketCheckoutRequestDTO struct { type BasketCheckoutRequestDTO struct {

View File

@@ -14,7 +14,7 @@ type BasketEntity struct {
type BasketItemEntity struct { type BasketItemEntity struct {
ID string `db:"id" json:"id"` ID string `db:"id" json:"id"`
BasketID string `db:"basket_id" json:"basket_id"` BasketID string `db:"basket_id" json:"basket_id"`
ProductID int `db:"product_id" json:"product_id"` ProductID string `db:"product_id" json:"product_id"`
Quantity int `db:"quantity" json:"quantity"` Quantity int `db:"quantity" json:"quantity"`
Price float64 `db:"price" json:"price"` Price float64 `db:"price" json:"price"`
CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"` CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"`

View File

@@ -4,15 +4,15 @@ import (
"time" "time"
) )
type BasketModel struct { type Basket struct {
State string `db:"state" json:"state"` State string `db:"state" json:"state"`
CreatedAt time.Time `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }
type BasketItemModel struct { type BasketItem struct {
BasketID string `db:"basket_id" json:"basket_id"` BasketID string `db:"basket_id" json:"basket_id"`
ProductID int `db:"product_id" json:"product_id"` ProductID string `db:"product_id" json:"product_id"`
Quantity int `db:"quantity" json:"quantity"` Quantity int `db:"quantity" json:"quantity"`
Price float64 `db:"price" json:"price"` Price float64 `db:"price" json:"price"`
CreatedAt time.Time `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`

View File

@@ -5,42 +5,27 @@ import (
) )
type GetProductRequestDTO struct { type GetProductRequestDTO struct {
ProductID int `json:"product_id"` ProductID string `json:"product_id"`
} }
type GetProductResponseDTO struct { type GetProductResponseDTO struct {
ID int `json:"id"` ID string `json:"id"`
PID string `json:"pid"` Name string `json:"name"`
Name string `json:"name"` Slug string `json:"slug"`
Price float64 `json:"price"` Price float64 `json:"price"`
CreatedAt time.Duration `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Duration `json:"updated_at,omitempty"` UpdatedAt *time.Time `json:"updated_at,omitempty"`
}
type GetProductListRequestDTO struct {
CategoryID int `json:"category_id"`
} }
type GetProductListResponseDTO struct { type GetProductListResponseDTO struct {
Products []GetProductResponseDTO `json:"products"` Products []GetProductResponseDTO `json:"products"`
} }
type AddProductToBasketRequestDTO struct { type GetProductDetailsResponseDTO struct {
ProductID int `json:"product_id"` ID string `json:"id"`
Quantity int `json:"quantity"` SLug string `json:"slug"`
} Name string `json:"name"`
Price string `json:"price"`
type AddProductToBasketResponseDTO struct { CreatedAt time.Time `json:"created_at"`
ProductID int `json:"product_id"` UpdatedAt *time.Time `json:"updated_at,omitempty"`
BasketID string `json:"basket_id"`
}
type RemoveProductFromBasketRequestDTO struct {
ProductID int `json:"product_id"`
Quantity int `json:"quantity"`
}
type RemoveProductFromBasketResponseDTO struct {
ProductID int `json:"product_id"`
BasketID string `json:"basket_id"`
} }

View File

@@ -1,12 +1,12 @@
package catalog package catalog
import "github.com/jackc/pgtype" import "time"
type ProductEntity struct { type Product struct {
ID int `db:"id"` ID string `json:"id", db:"id"`
PID string `db:"pid"` Slug string `json:"slug", db:"slug"`
Name string `db:"name"` Name string `json:"name", db:"name"`
Price float64 `db:"price"` Price float64 `json:"price", db:"price"`
CreatedAt pgtype.Timestamp `db:"created_at"` CreatedAt time.Time `json:"created_at", db:"created_at"`
UpdatedAt pgtype.Timestamp `db:"updated_at,omitempty"` UpdatedAt *time.Time `json:"updated_at", db:"updated_at, omitempty"`
} }

View File

@@ -4,10 +4,10 @@ import (
"time" "time"
) )
type ProductModel struct { type Product struct {
PID string `db:"pid"` Name string `db:"name"`
Name string `db:"name"` Slug string `db:"slug"`
Price float64 `db:"price"` Price float64 `db:"price"`
CreatedAt time.Time `db:"created_at"` CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at"`
} }

2
go.mod
View File

@@ -1,6 +1,6 @@
module git.ego.freeddns.org/egommerce/api-entities module git.ego.freeddns.org/egommerce/api-entities
go 1.19 go 1.24
require github.com/jackc/pgtype v1.14.3 require github.com/jackc/pgtype v1.14.3

View File

@@ -6,7 +6,15 @@ type AuthLoginRequestDTO struct {
} }
type AuthLoginResponseDTO struct { type AuthLoginResponseDTO struct {
Token string `json:"jwt_token"` Token string `json:"token"`
}
type AuthRefreshTokenRequestDTO struct {
AccessToken string `json:"access_token"`
}
type AuthRefreshTokenResponseDTO struct {
Token string `json:"token"`
} }
type AuthRegisterRequestDTO struct { type AuthRegisterRequestDTO struct {

5
identity/dto/headers.go Normal file
View File

@@ -0,0 +1,5 @@
package identity
type AuthorizationHeaderDTO struct {
Authorization string `reqHeader:"authorization"`
}

8
identity/entity/role.go Normal file
View 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"`
}

View 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"`
}

View File

@@ -3,12 +3,12 @@ package identity
import "time" import "time"
type User struct { type User struct {
ID int `json:"id"` ID string `db:"id" json:"id"`
Email string `json:"email"` Email string `db:"email" json:"email"`
Username string `json:"username"` Username string `db:"username" json:"username"`
Password string `json:"password"` Password string `db:"password" json:"password"`
CreateDate time.Time `json:"create_date"` CreatedAt time.Time `db:"created_at" json:"created_at"`
ModifyDate time.Time `json:"modify_date"` // FIXME: zero-value issue UpdatedAt *time.Time `db:"updated_at,omitempty" json:"updated_at,omitempty"` // FIXME: zero-value issue
} }
// var TestUser = &User{ // var TestUser = &User{

View File

@@ -2,13 +2,13 @@ package order
import "time" import "time"
type OrderModel struct { type Order struct {
State string `db:"state" json:"state"` State string `db:"state" json:"state"`
CreatedAt time.Time `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }
type OrderItemModel struct { type OrderItem struct {
OrderID string `db:"order_id" json:"order_id"` OrderID string `db:"order_id" json:"order_id"`
ProductID int `db:"product_id" json:"product_id"` ProductID int `db:"product_id" json:"product_id"`
Quantity int `db:"quantity" json:"quantity"` Quantity int `db:"quantity" json:"quantity"`

View File

@@ -1,6 +1,6 @@
package pricing package pricing
type ProductPriceModel struct { type ProductPrice struct {
PID string `db:"pid"` PID string `db:"pid"`
Price int `db:"price"` Price int `db:"price"`
} }