Files
ris-backend-go/types/types.go
2024-12-09 09:51:19 +07:00

75 lines
2.1 KiB
Go

package types
import (
"time"
"sismedika.com/sas/westone/utils"
)
type Product struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name"`
Description string `db:"description" json:"description"`
Image string `db:"image" json:"image"`
Price float64 `db:"price" json:"price"`
Quantity int `db:"quantity" json:"quantity"`
CreatedAt time.Time `db:"createdAt" json:"createdAt"`
}
type CartCheckoutItem struct {
ProductID int `db:"productID" json:"productID"`
Quantity int `db:"quantity" json:"quantity"`
}
type Order struct {
ID int `db:"id" json:"id"`
UserID int `db:"userID" json:"userID"`
Total float64 `db:"total" json:"total"`
Status string `db:"status" json:"status"`
Address string `db:"address" json:"address"`
CreatedAt time.Time `db:"createdAt" json:"createdAt"`
}
type OrderItem struct {
ID int `db:"id" json:"id"`
OrderID int `db:"orderID" json:"orderID"`
ProductID int `db:"productID" json:"productID"`
Quantity int `db:"quantity" json:"quantity"`
Price float64 `db:"price" json:"price"`
CreatedAt time.Time `db:"createdAt" json:"createdAt"`
}
type ProductStore interface {
GetProductByID(id int) (*Product, error)
GetProductsByID(ids []int) ([]Product, error)
GetProducts() ([]*Product, error)
CreateProduct(CreateProductPayload) error
UpdateProduct(Product) error
}
type OrderStore interface {
CreateOrder(Order) (int, error)
CreateOrderItem(OrderItem) error
}
type CreateProductPayload struct {
Name string `json:"name" validate:"required"`
Description string `json:"description"`
Image string `json:"image"`
Price float64 `json:"price" validate:"required"`
Quantity int `json:"quantity" validate:"required"`
}
type CartCheckoutPayload struct {
Items []CartCheckoutItem `json:"items" validate:"required"`
}
type ErrorLogStore interface {
CreateErrorLog(utils.LogError) error
}
type DataJWT struct {
User
Ip string `json:"ip"`
Agent string `json:"agent"`
Version string `json:"version"`
LastLogin string `json:"last-login"`
}