update methods
This commit is contained in:
parent
6d12c55785
commit
71d13bb217
5 changed files with 277 additions and 59 deletions
|
|
@ -65,13 +65,7 @@ func (s *service) deleteOrigin(ctx context.Context, origin *deleteOriginDTO) err
|
|||
|
||||
// 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
|
||||
}
|
||||
|
||||
func (s *service) createMerch(ctx context.Context, userId int64, payload *newMerchDTO) error {
|
||||
now := s.utils.TimeNowUTC()
|
||||
nullNow := s.utils.NullTimeFromNow(now)
|
||||
empty := s.utils.DeletedNullTime()
|
||||
|
|
@ -94,7 +88,7 @@ func (s *service) createMerch(ctx context.Context, userUuid string, payload *new
|
|||
var merchExtra []ExtraData
|
||||
if payload.Links != nil {
|
||||
|
||||
originsMap, err := s.getOriginsMap(ctx)
|
||||
originsMap, _, err := s.getOriginsMaps(ctx)
|
||||
if err != nil {
|
||||
logErrService(err)
|
||||
return err
|
||||
|
|
@ -106,7 +100,7 @@ func (s *service) createMerch(ctx context.Context, userUuid string, payload *new
|
|||
UpdatedAt: nullNow,
|
||||
DeletedAt: empty,
|
||||
MerchId: 0,
|
||||
OriginId: originsMap[item.Name],
|
||||
OriginId: originsMap[item.Origin],
|
||||
URL: item.Link,
|
||||
})
|
||||
}
|
||||
|
|
@ -115,37 +109,85 @@ func (s *service) createMerch(ctx context.Context, userUuid string, payload *new
|
|||
return s.repo.createMerch(ctx, newMerch, merchExtra)
|
||||
}
|
||||
|
||||
func (s *service) getOriginsMap(ctx context.Context) (map[string]int64, error) {
|
||||
func (s *service) getOriginsMaps(ctx context.Context) (map[string]int64, map[int64]string, error) {
|
||||
origins, err := s.repo.getOrigins(ctx)
|
||||
if err != nil {
|
||||
logErrService(err)
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
originsMap := make(map[string]int64, len(origins))
|
||||
namesMap := make(map[string]int64, len(origins))
|
||||
idsMap := make(map[int64]string, len(origins))
|
||||
|
||||
for _, origin := range origins {
|
||||
originsMap[origin.Name] = origin.Id
|
||||
namesMap[origin.Name] = origin.Id
|
||||
idsMap[origin.Id] = origin.Name
|
||||
}
|
||||
|
||||
return originsMap, nil
|
||||
return namesMap, idsMap, nil
|
||||
}
|
||||
|
||||
func (s *service) getMany(ctx context.Context, userUuid string) ([]merchDTO, error) {
|
||||
userId, err := s.userProvider.GetUserId(ctx, userUuid)
|
||||
if err != nil {
|
||||
logErrService(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (s *service) getMany(ctx context.Context, userId int64) ([]merchDTO, error) {
|
||||
return s.repo.getMany(ctx, userId)
|
||||
}
|
||||
|
||||
func (s *service) deleteOneMerchRecord(ctx context.Context, userUuid, merchUuid string) error {
|
||||
userId, err := s.userProvider.GetUserId(ctx, userUuid)
|
||||
func (s *service) updateMerch(ctx context.Context, userId int64, payload *updateMerchDTO) (*merchDTO, error) {
|
||||
return s.repo.updateMerch(ctx, userId, payload)
|
||||
}
|
||||
|
||||
func (s *service) updateExtraData(ctx context.Context, userId int64, payload *extraDataDTO) (*extraDataDTO, error) {
|
||||
merchId, err := s.repo.getMerchIdByUuid(ctx, userId, payload.MerchUuid)
|
||||
if err != nil {
|
||||
logErrService(err)
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
origins, ids, err := s.getOriginsMaps(ctx)
|
||||
if err != nil {
|
||||
logErrService(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var insertData []ExtraData
|
||||
for _, item := range payload.Links {
|
||||
if _, ok := origins[item.Origin]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
now := s.utils.TimeNowUTC()
|
||||
|
||||
insertData = append(insertData, ExtraData{
|
||||
CreatedAt: now,
|
||||
UpdatedAt: s.utils.NullTimeFromNow(now),
|
||||
OriginId: origins[item.Origin],
|
||||
URL: item.Link,
|
||||
})
|
||||
}
|
||||
|
||||
result, err := s.repo.updateExtraData(ctx, merchId, insertData)
|
||||
if err != nil {
|
||||
logErrService(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if result == nil || len(result) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
var ol []originLink
|
||||
for _, item := range result {
|
||||
ol = append(ol, originLink{
|
||||
Origin: ids[item.OriginId],
|
||||
Link: item.URL,
|
||||
})
|
||||
}
|
||||
|
||||
return &extraDataDTO{
|
||||
MerchUuid: payload.MerchUuid,
|
||||
Links: ol,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *service) deleteOneMerchRecord(ctx context.Context, userId int64, merchUuid string) error {
|
||||
return s.repo.deleteOneMerchRecord(ctx, userId, merchUuid, s.utils.TimeNowUTC())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue