Compare commits

..

4 Commits

Author SHA1 Message Date
ba94a1d17f Quick update to fit current api state 2025-11-15 18:31:37 +01:00
fb2ba22f72 Update: 2025-10-27 14:57:21 +01:00
dede386e8b Fixes 2025-10-27 13:54:11 +01:00
7fa00f323f Refactor of pgsql client 2025-10-26 20:29:09 +01:00
5 changed files with 13 additions and 126 deletions

View File

@@ -5,11 +5,10 @@ import (
"git.ego.freeddns.org/egommerce/api-entities/basket"
basket "git.ego.freeddns.org/egommerce/api-entities/basket/dto"
"github.com/go-redis/redis/v8"
)
func NewBasketAPI(ua string, redis *redis.Client) *BasketAPI {
return &BasketAPI{NewHttpClient(ua, redis)}
func NewBasketAPI() *BasketAPI {
return &BasketAPI{NewHttpClient()}
}
type BasketAPI struct {
@@ -18,7 +17,7 @@ type BasketAPI struct {
func (a *BasketAPI) GetBasket(basketID string) (*basket.GetBasketResponseDTO, error) {
req := &basket.GetBasketRequestDTO{BasketID: basketID}
res := new(basket.GetBasketResponse)
res := new(basket.GetBasketResponseDTO)
if err := a.httpClient.SendGet("basket-svc", "/api/v1/basket", req, res); err != nil {
return nil, err
}
@@ -27,9 +26,11 @@ func (a *BasketAPI) GetBasket(basketID string) (*basket.GetBasketResponseDTO, er
}
func (a *BasketAPI) GetBasketItems(basketID string) ([]*basket.GetBasketItemsResponseDTO, error) {
url := fmt.Sprintf("/api/v1/basket/%s/items", basketID)
url := fmt.Sprintf("/api/v1/basket/items")
req := basket.GetBasketItemsRequestDTO{BasketID: basketID}
var res []*basket.GetBasketItemsResponseDTO
if err := a.httpClient.SendGet("basket-svc", url, nil, &res); err != nil {
if err := a.httpClient.SendGet("basket-svc", url, req, &res); err != nil {
return nil, err
}

View File

@@ -59,12 +59,12 @@ func (c *HttpClient) sendRequest(api, url, method string, data any) (*http.Respo
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("User-Agent", c.ua)
req.Header.Set("User-Agent", c.userAgent)
res, err := client.Do(req)
if err != nil {
return nil, err
}
// defer res.Body.Close()
defer res.Body.Close()
return res, nil
}

View File

@@ -4,11 +4,10 @@ import (
"fmt"
def "git.pbiernat.io/egommerce/api-entities/http"
"github.com/go-redis/redis/v8"
)
func NewPricingAPI(ua string, redis *redis.Client) *PricingAPI {
return &PricingAPI{NewHttpClient(ua, redis)}
func NewPricingAPI() *PricingAPI {
return &PricingAPI{NewHttpClient()}
}
type PricingAPI struct {

View File

@@ -1,23 +1,14 @@
package postgresql
// Jackc/pgx helper
import (
"context"
"errors"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool"
)
func Connect(connStr string) (*pgxpool.Pool, error) {
pool, err := pgxpool.New(context.Background(), connStr)
if err != nil {
return nil, err
}
return pool, nil
}
func IsDuplicatedRow(err error) error {
var pgErr *pgconn.PgError

View File

@@ -1,104 +0,0 @@
package rabbitmq
import (
"bytes"
"encoding/json"
"fmt"
"log"
amqp "github.com/rabbitmq/amqp091-go"
)
type Message map[string]interface{}
func Connect(url string) (*amqp.Connection, *amqp.Channel, error) {
conn, err := amqp.Dial(url)
if err != nil {
return nil, nil, err
}
ch, err := conn.Channel()
if err != nil {
log.Printf("Failed to open a channel: %v\n", err)
return nil, nil, err
}
return conn, ch, nil
}
func Close(conn *amqp.Connection) error {
return conn.Close()
}
func Serialize(msg any) (string, error) { // FIXME move to separate service
var b bytes.Buffer
encoder := json.NewEncoder(&b)
err := encoder.Encode(msg)
return b.String(), err
}
func Deserialize(b []byte) (Message, error) { // FIXME move to separate service
var msg Message
buf := bytes.NewBuffer(b)
decoder := json.NewDecoder(buf)
err := decoder.Decode(&msg)
return msg, err
}
func NewExchange(chn *amqp.Channel, name string) error {
err := chn.ExchangeDeclare(
name,
"direct", // type
true, // durable
false, // auto-deleted
false, // internal
false, // no-wait
nil, // arguments
)
if err != nil {
return err
}
return nil
}
func Publish(chn *amqp.Channel, name, routingKey string, msg any) error {
jsonData, err := Serialize(msg)
if err != nil {
return err
}
msgBody := fmt.Sprintf(`{"event":"%T","data":%s}`, msg, jsonData)
chn.Publish(
name, // exchange name
routingKey, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "application/json",
Body: []byte(msgBody),
},
)
return nil
}
func BindQueueToExchange(chn *amqp.Channel, queueName, exchName, routingKey string) error {
err := chn.QueueBind(
queueName, // queue name
routingKey, // routing key
exchName, // exchange name
false,
nil,
)
if err != nil {
log.Printf("Failed to bind a queue: %s\n", queueName)
return err
}
return nil
}