relynolli-server/storage/order.go

35 lines
865 B
Go
Raw Normal View History

2024-03-28 18:20:57 +03:00
package storage
import (
"context"
"relynolli-server/internal"
)
type StorageOrder interface {
GetTotal(ctx context.Context, fuserId int64) (*TotalQuery, error)
}
func NewStorageOrder() StorageOrder {
if instance == nil {
instance = &storage{
db: internal.InitDatabase().GetInstance(),
rdb: internal.InitRedis(),
}
}
return instance
}
type TotalQuery struct {
Total float64 `bun:"total" json:"total"`
}
func (s *storage) GetTotal(ctx context.Context, fuserId int64) (*TotalQuery, error) {
model := new(TotalQuery)
stmt := `select sum(price.PRICE * cart.quantity) as total from api_cart cart left join b_catalog_price price on cart.product_id = price.PRODUCT_ID and cart.price_type_id = price.CATALOG_GROUP_ID where fuser_id = ?`
err := s.db.NewRaw(stmt, fuserId).Scan(ctx, model)
if err != nil {
return nil, err
}
return model, nil
}