switch to pgx driver + create merch
This commit is contained in:
parent
546fe13107
commit
97f8d27430
13 changed files with 289 additions and 69 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue