Compare commits

...

11 Commits

Author SHA1 Message Date
645597b54e Update repo url 2025-12-13 16:30:11 +01:00
c49fde3d15 changed req params source 2025-11-16 17:44:23 +01:00
cc2ba15c37 Added DTO for Access action 2025-11-15 19:59:04 +01:00
86341c21e1 Added Setting entity 2025-11-15 13:30:25 +01:00
bcc8de99db Added config entity 2025-11-14 20:35:59 +01:00
4b5d681efe Update 2025-11-08 14:54:22 +01:00
c502499aa4 Update 2025-11-08 14:37:46 +01:00
82653025be Fixes 2025-11-08 13:55:34 +01:00
d7bcb71acf Added Quantity field to RemoveFromBasket DTO 2025-11-08 02:20:12 +01:00
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
13 changed files with 104 additions and 98 deletions

View File

@@ -9,11 +9,12 @@ 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 {
BasketID string `json:"basket_id"`
} }
type GetBasketItemsResponseDTO struct { type GetBasketItemsResponseDTO struct {
@@ -22,8 +23,8 @@ type GetBasketItemsResponseDTO struct {
ProductID string `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 { type AddProductToBasketRequestDTO struct {
@@ -36,6 +37,16 @@ type AddProductToBasketResponseDTO struct {
BasketID string `json:"basket_id"` BasketID string `json:"basket_id"`
} }
type RemoveFromBasketRequestDTO struct {
BasketID string `json:"basket_id"`
ProductID string `json:"product_id"`
Quantity int `json:"quantity"`
}
type RemoveFromBasketResponseDTO struct {
BasketID string `json:"basket_id"`
}
type BasketCheckoutRequestDTO struct { type BasketCheckoutRequestDTO struct {
BasketID string `json:"basket_id"` BasketID string `json:"basket_id"`
} }

View File

@@ -1,22 +1,20 @@
package basket package basket
import ( import "time"
"github.com/jackc/pgtype"
)
type BasketEntity struct { type Basket struct {
ID string `db:"id" json:"id"` ID string `db:"id" json:"id"`
State string `db:"state" json:"state"` State string `db:"state" json:"state"`
CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt pgtype.Timestamp `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }
type BasketItemEntity struct { type BasketItem 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 string `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 time.Time `db:"created_at" json:"created_at"`
UpdatedAt pgtype.Timestamp `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }

View File

@@ -7,7 +7,7 @@ import (
type Basket 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 BasketItem struct { type BasketItem struct {
@@ -16,5 +16,5 @@ type BasketItem struct {
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"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }

View File

@@ -14,33 +14,18 @@ type GetProductResponseDTO struct {
Slug string `json:"slug"` Slug string `json:"slug"`
Price float64 `json:"price"` Price float64 `json:"price"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at"` UpdatedAt *time.Time `json:"updated_at,omitempty"`
}
type GetProductListRequestDTO struct {
CategoryID string `json:"category_id"`
} }
type GetProductListResponseDTO struct { type GetProductListResponseDTO struct {
Products []GetProductResponseDTO `json:"products"` Products []GetProductResponseDTO `json:"products"`
} }
type AddProductToBasketRequestDTO struct { type GetProductDetailsResponseDTO struct {
ProductID string `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 string `json:"product_id"` UpdatedAt *time.Time `json:"updated_at,omitempty"`
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"`
} }

View File

@@ -3,10 +3,10 @@ package catalog
import "time" import "time"
type Product struct { type Product struct {
ID string `json:"id", db:"id"` ID string `json:"id" db:"id"`
Slug string `json:"slug", db:"slug"` Slug string `json:"slug" db:"slug"`
Name string `json:"name", db:"name"` Name string `json:"name" db:"name"`
Price float64 `json:"price", db:"price"` Price float64 `json:"price" db:"price"`
CreatedAt time.Time `json:"created_at", db:"created_at"` CreatedAt time.Time `json:"created_at" db:"created_at"`
UpdatedAt *time.Time `json:"updated_at", db:"updated_at, omitempty"` UpdatedAt *time.Time `json:"updated_at" db:"updated_at, omitempty"`
} }

7
config/entity/setting.go Normal file
View File

@@ -0,0 +1,7 @@
package config
type Setting struct {
ID string `db:"id" json:"id"`
Name string `db:"name" json:"name"`
Value string `db:"value" json:"value"`
}

2
go.mod
View File

@@ -1,4 +1,4 @@
module git.ego.freeddns.org/egommerce/api-entities module git.pbiernat.space/egommerce/api-entities
go 1.24 go 1.24

10
identity/dto/access.go Normal file
View File

@@ -0,0 +1,10 @@
package identity
type CheckAccessRequestDTO struct {
URL string `json:"url"`
Service string `json:"srv"`
}
type CheckAccessResponseDTO struct {
Status string `json:"status"`
}

View File

@@ -8,12 +8,5 @@ type User struct {
Username string `db:"username" json:"username"` Username string `db:"username" json:"username"`
Password string `db:"password" json:"password"` Password string `db:"password" json:"password"`
CreatedAt time.Time `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt *time.Time `db:"updated_at,omitempty" json:"updated_at,omitempty"` // FIXME: zero-value issue UpdatedAt *time.Time `db:"updated_at,omitempty" json:"updated_at,omitempty"`
} }
// var TestUser = &User{
// ID: 1,
// Username: "test",
// Password: "test",
// CreateDate: time.Now(),
// }

View File

@@ -1,20 +1,22 @@
package order package order
import "github.com/jackc/pgtype" import (
"time"
)
type OrderEntity struct { type Order struct {
ID string `db:"id" json:"id"` ID string `db:"id" json:"id"`
State string `db:"state" json:"state"` State string `db:"state" json:"state"`
CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt pgtype.Timestamp `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }
type OrderItemEntity struct { type OrderItem struct {
ID string `db:"id" json:"id"` ID string `db:"id" json:"id"`
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"`
Price float64 `db:"price" json:"price"` Price float64 `db:"price" json:"price"`
CreatedAt pgtype.Timestamp `db:"created_at" json:"created_at"` CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt pgtype.Timestamp `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }

View File

@@ -5,7 +5,7 @@ import "time"
type Order 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 OrderItem struct { type OrderItem struct {
@@ -14,5 +14,5 @@ type OrderItem struct {
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"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at,omitempty"` UpdatedAt *time.Time `db:"updated_at" json:"updated_at,omitempty"`
} }

View File

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