Compare commits

..

1 Commits

Author SHA1 Message Date
c754f8b66b Added Role Entity 2025-10-21 21:01:22 +02:00
13 changed files with 113 additions and 125 deletions

View File

@@ -7,43 +7,23 @@ 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.Time `json:"created_at"` CreatedAt time.Duration `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"` UpdatedAt time.Duration `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 string `json:"product_id"` ProductID int `json:"product_id"`
Quantity int `json:"quantity"` Quantity int `json:"quantity"`
Price float64 `json:"price"` Price float64 `json:"price"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Duration `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"` UpdatedAt time.Duration `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"`
Quantity int `json:"quantity"`
}
type RemoveFromBasketResponseDTO struct {
BasketID string `json:"basket_id"`
} }
type BasketCheckoutRequestDTO struct { type BasketCheckoutRequestDTO struct {

View File

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

View File

@@ -5,16 +5,16 @@ 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 {
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 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 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

@@ -5,27 +5,42 @@ import (
) )
type GetProductRequestDTO struct { type GetProductRequestDTO struct {
ProductID string `json:"product_id"` ProductID int `json:"product_id"`
} }
type GetProductResponseDTO struct { type GetProductResponseDTO struct {
ID string `json:"id"` ID int `json:"id"`
Name string `json:"name"` PID string `json:"pid"`
Slug string `json:"slug"` Name string `json:"name"`
Price float64 `json:"price"` Price float64 `json:"price"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Duration `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"` UpdatedAt time.Duration `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 GetProductDetailsResponseDTO struct { type AddProductToBasketRequestDTO struct {
ID string `json:"id"` ProductID int `json:"product_id"`
SLug string `json:"slug"` Quantity int `json:"quantity"`
Name string `json:"name"` }
Price string `json:"price"`
CreatedAt time.Time `json:"created_at"` type AddProductToBasketResponseDTO struct {
UpdatedAt *time.Time `json:"updated_at,omitempty"` ProductID int `json:"product_id"`
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 "time" import "github.com/jackc/pgtype"
type Product struct { type Product struct {
ID string `json:"id" db:"id"` ID int `db:"id"`
Slug string `json:"slug" db:"slug"` PID string `db:"pid"`
Name string `json:"name" db:"name"` Name string `db:"name"`
Price float64 `json:"price" db:"price"` Price float64 `db:"price"`
CreatedAt time.Time `json:"created_at" db:"created_at"` CreatedAt pgtype.Timestamp `db:"created_at"`
UpdatedAt *time.Time `json:"updated_at" db:"updated_at, omitempty"` UpdatedAt pgtype.Timestamp `db:"updated_at,omitempty"`
} }

View File

@@ -5,9 +5,9 @@ import (
) )
type Product struct { type Product struct {
Name string `db:"name"` PID string `db:"pid"`
Slug string `db:"slug"` Name string `db:"name"`
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"` UpdatedAt time.Time `db:"updated_at,omitempty"`
} }

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.24 go 1.19
require github.com/jackc/pgtype v1.14.3 require github.com/jackc/pgtype v1.14.3

View File

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

View File

@@ -1,8 +1,7 @@
package identity package identity
type Role struct { type Role struct {
ID string `db:"id" json:"id"` ID string `db:"id" json:"id"`
Name string `db:"name" json:"name"` Roles string `db:"roles" json:"roles"`
DisplayName string `db:"display_name" json:"display_name"` URL string `db:"url" json:"url"`
URL string `db:"url" json:"url"`
} }

View File

@@ -1,8 +0,0 @@
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,10 +3,17 @@ package identity
import "time" import "time"
type User struct { type User struct {
ID string `db:"id" json:"id"` ID string `db:"id" json:"id"`
Email string `db:"email" json:"email"` Email string `db:"email" json:"email"`
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"` ModifiedAt time.Time `db:"modified_at" json:"modified_at"` // FIXME: zero-value issue
} }
// var TestUser = &User{
// ID: 1,
// Username: "test",
// Password: "test",
// CreateDate: time.Now(),
// }

View File

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

View File

@@ -3,16 +3,16 @@ package order
import "time" 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 {
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 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"`
} }