Skip to content

Commit 1004375

Browse files
committed
Add FCM Token
1 parent af0995f commit 1004375

3 files changed

Lines changed: 38 additions & 16 deletions

File tree

api/pkg/handlers/heartbeat_handler.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package handlers
33
import (
44
"fmt"
55

6+
"github.com/NdoleStudio/http-sms-manager/pkg/requests"
7+
68
"github.com/NdoleStudio/http-sms-manager/pkg/services"
79
"github.com/NdoleStudio/http-sms-manager/pkg/telemetry"
810
"github.com/NdoleStudio/http-sms-manager/pkg/validators"
@@ -63,7 +65,7 @@ func (h *HeartbeatHandler) Index(c *fiber.Ctx) error {
6365

6466
ctxLogger := h.tracer.CtxLogger(h.logger, span)
6567

66-
var request services.HeartbeatIndex
68+
var request requests.HeartbeatIndex
6769
if err := c.QueryParser(&request); err != nil {
6870
msg := fmt.Sprintf("cannot marshall params [%s] into %T", c.OriginalURL(), request)
6971
ctxLogger.Warn(stacktrace.Propagate(err, msg))

api/pkg/repositories/gorm_phone_repository.go

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@ type gormPhoneRepository struct {
1919
db *gorm.DB
2020
}
2121

22+
// NewGormPhoneRepository creates the GORM version of the PhoneRepository
23+
func NewGormPhoneRepository(
24+
logger telemetry.Logger,
25+
tracer telemetry.Tracer,
26+
db *gorm.DB,
27+
) PhoneRepository {
28+
return &gormPhoneRepository{
29+
logger: logger.WithService(fmt.Sprintf("%T", &gormPhoneRepository{})),
30+
tracer: tracer,
31+
db: db,
32+
}
33+
}
34+
2235
func (repository *gormPhoneRepository) Upsert(ctx context.Context, phone *entities.Phone) error {
2336
ctx, span := repository.tracer.Start(ctx)
2437
defer span.End()
@@ -56,6 +69,26 @@ func (repository *gormPhoneRepository) Upsert(ctx context.Context, phone *entiti
5669
return nil
5770
}
5871

72+
// Load a phone based on entities.UserID and phoneNumber
73+
func (repository *gormPhoneRepository) Load(ctx context.Context, userID entities.UserID, phoneNumber string) (*entities.Phone, error) {
74+
ctx, span := repository.tracer.Start(ctx)
75+
defer span.End()
76+
77+
phone := new(entities.Phone)
78+
err := repository.db.Where("user_id = ?", userID).Where("phone_number = ?", phoneNumber).First(phone).Error
79+
if errors.Is(err, gorm.ErrRecordNotFound) {
80+
msg := fmt.Sprintf("phone with userID [%s] and phoneNumber [%s] does not exist", userID, phoneNumber)
81+
return nil, repository.tracer.WrapErrorSpan(span, stacktrace.PropagateWithCode(err, ErrCodeNotFound, msg))
82+
}
83+
84+
if err != nil {
85+
msg := fmt.Sprintf("cannot load phone phone with userID [%s] and phoneNumber [%s]", userID, phoneNumber)
86+
return nil, repository.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
87+
}
88+
89+
return phone, nil
90+
}
91+
5992
func (repository *gormPhoneRepository) Index(ctx context.Context, userID entities.UserID, params IndexParams) (*[]entities.Phone, error) {
6093
ctx, span := repository.tracer.Start(ctx)
6194
defer span.End()
@@ -74,16 +107,3 @@ func (repository *gormPhoneRepository) Index(ctx context.Context, userID entitie
74107

75108
return phones, nil
76109
}
77-
78-
// NewGormPhoneRepository creates the GORM version of the PhoneRepository
79-
func NewGormPhoneRepository(
80-
logger telemetry.Logger,
81-
tracer telemetry.Tracer,
82-
db *gorm.DB,
83-
) PhoneRepository {
84-
return &gormPhoneRepository{
85-
logger: logger.WithService(fmt.Sprintf("%T", &gormPhoneRepository{})),
86-
tracer: tracer,
87-
db: db,
88-
}
89-
}

api/pkg/validators/heartbeat_handler_validator.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"fmt"
66
"net/url"
77

8-
"github.com/NdoleStudio/http-sms-manager/pkg/services"
8+
"github.com/NdoleStudio/http-sms-manager/pkg/requests"
99

1010
"github.com/NdoleStudio/http-sms-manager/pkg/telemetry"
1111
"github.com/thedevsaddam/govalidator"
@@ -30,7 +30,7 @@ func NewHeartbeatHandlerValidator(
3030
}
3131

3232
// ValidateIndex validates the requests.HeartbeatIndex request
33-
func (validator *HeartbeatHandlerValidator) ValidateIndex(_ context.Context, request services.HeartbeatIndex) url.Values {
33+
func (validator *HeartbeatHandlerValidator) ValidateIndex(_ context.Context, request requests.HeartbeatIndex) url.Values {
3434
v := govalidator.New(govalidator.Options{
3535
Data: &request,
3636
Rules: govalidator.MapData{

0 commit comments

Comments
 (0)