switch to pgx driver + create merch

This commit is contained in:
nquidox 2026-03-04 17:02:11 +03:00
parent 546fe13107
commit 97f8d27430
13 changed files with 289 additions and 69 deletions

View file

@ -1,22 +1,30 @@
package merch
import (
"context"
"merch-api/internal/user"
"merch-api/pkg/utils"
"github.com/google/uuid"
)
type service struct {
repo Repository
utils utils.Utils
repo Repository
utils utils.Utils
userProvider user.Provider
}
func newService(repo Repository, u utils.Utils) *service {
func newService(repo Repository, u utils.Utils, up user.Provider) *service {
return &service{
repo: repo,
utils: u,
repo: repo,
utils: u,
userProvider: up,
}
}
func (s *service) createOrigin(o *newOriginDTO) error {
//origins
func (s *service) createOrigin(ctx context.Context, o *newOriginDTO) error {
newOrigin := &Origin{
CreatedAt: s.utils.TimeNowUTC(),
DeletedAt: s.utils.DeletedNullTime(),
@ -24,11 +32,11 @@ func (s *service) createOrigin(o *newOriginDTO) error {
}
logDebugService("create origin success")
return s.repo.createOrigin(newOrigin)
return s.repo.createOrigin(ctx, newOrigin)
}
func (s *service) getOrigins() (*originsDTO, error) {
data, err := s.repo.getOrigins()
func (s *service) getOrigins(ctx context.Context) (*originsDTO, error) {
data, err := s.repo.getOrigins(ctx)
if err != nil {
logErrService(err)
return nil, err
@ -50,7 +58,74 @@ func (s *service) getOrigins() (*originsDTO, error) {
return response, nil
}
func (s *service) deleteOrigin(origin *deleteOriginDTO) error {
func (s *service) deleteOrigin(ctx context.Context, origin *deleteOriginDTO) error {
logDebugService("delete origin success")
return s.repo.deleteOriginByName(origin.Name, s.utils.NullTimeNowUTC())
return s.repo.deleteOriginByName(ctx, origin.Name, s.utils.NullTimeNowUTC())
}
// merch
func (s *service) createMerch(ctx context.Context, userUuid string, payload *newMerchDTO) error {
userId, err := s.userProvider.GetUserId(ctx, userUuid)
if err != nil {
logErrService(err)
return err
}
now := s.utils.TimeNowUTC()
nullNow := s.utils.NullTimeFromNow(now)
empty := s.utils.DeletedNullTime()
merchUuid, err := uuid.NewV7()
if err != nil {
logErrService(err)
return err
}
newMerch := &Merch{
CreatedAt: now,
UpdatedAt: nullNow,
DeletedAt: empty,
MerchUuid: merchUuid.String(),
UserId: userId,
Name: payload.Name,
}
var merchExtra []ExtraData
if payload.Links != nil {
originsMap, err := s.getOriginsMap(ctx)
if err != nil {
logErrService(err)
return err
}
for _, item := range payload.Links {
merchExtra = append(merchExtra, ExtraData{
CreatedAt: now,
UpdatedAt: nullNow,
DeletedAt: empty,
MerchId: 0,
OriginId: originsMap[item.Name],
URL: item.Link,
})
}
}
return s.repo.createMerch(ctx, newMerch, merchExtra)
}
func (s *service) getOriginsMap(ctx context.Context) (map[string]int64, error) {
origins, err := s.repo.getOrigins(ctx)
if err != nil {
logErrService(err)
return nil, err
}
originsMap := make(map[string]int64, len(origins))
for _, origin := range origins {
originsMap[origin.Name] = origin.Id
}
return originsMap, nil
}