Skip to content

Commit

Permalink
Update pending notifications when user device token changes
Browse files Browse the repository at this point in the history
  • Loading branch information
dangeross committed Sep 30, 2022
1 parent bc082c8 commit df8648f
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 51 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ require (
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/google/uuid v1.3.0
github.com/joho/godotenv v1.4.0
github.com/satimoto/go-datastore v0.3.1-0.20220925151125-2d2c9cc98c16
github.com/satimoto/go-datastore v0.3.1-0.20220930074556-db0579f24964
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
github.com/vektah/gqlparser/v2 v2.4.0
)
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,10 @@ github.com/satimoto/go-datastore v0.3.1-0.20220925132216-fbe63357eab3 h1:vGsymg0
github.com/satimoto/go-datastore v0.3.1-0.20220925132216-fbe63357eab3/go.mod h1:SvM8losYPwH6hJgUKLkjNtQwVv06lZgCMWl8cGdllCM=
github.com/satimoto/go-datastore v0.3.1-0.20220925151125-2d2c9cc98c16 h1:IpBGZ/IvdJqV6PUUe2TkP3i8dTE6zSAmmWbG4JS/X/U=
github.com/satimoto/go-datastore v0.3.1-0.20220925151125-2d2c9cc98c16/go.mod h1:SvM8losYPwH6hJgUKLkjNtQwVv06lZgCMWl8cGdllCM=
github.com/satimoto/go-datastore v0.3.1-0.20220930070309-395f616e2a91 h1:e+LIjjaJ3D7c5/1CA79DO4hsGz8ehPT0fCkN1A6s0hY=
github.com/satimoto/go-datastore v0.3.1-0.20220930070309-395f616e2a91/go.mod h1:SvM8losYPwH6hJgUKLkjNtQwVv06lZgCMWl8cGdllCM=
github.com/satimoto/go-datastore v0.3.1-0.20220930074556-db0579f24964 h1:1aLa8xIbL5YzND31angYkvdLoOm2RXNqKNhfajglvKA=
github.com/satimoto/go-datastore v0.3.1-0.20220930074556-db0579f24964/go.mod h1:SvM8losYPwH6hJgUKLkjNtQwVv06lZgCMWl8cGdllCM=
github.com/satimoto/go-ferp v0.1.1-0.20220908195810-ff288d2a2a2f h1:emb13r6KZW3+8sUySFsfdK63+r6MVyoF+uvX+9KzsLQ=
github.com/satimoto/go-ferp v0.1.1-0.20220908195810-ff288d2a2a2f/go.mod h1:GQdhGMwlWYwyFMO/cLhl1dRrHbKhQxKeuiPs35amvV4=
github.com/satimoto/go-lsp v0.1.1-0.20220908195954-f81b0c6a2c31 h1:qm/yJ4sCgHdRcIxKwDDbu/LwYHbLw5eBbkKM2hPtC2E=
Expand Down
97 changes: 50 additions & 47 deletions graph/resolver/resolve.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/satimoto/go-datastore/pkg/location"
"github.com/satimoto/go-datastore/pkg/node"
"github.com/satimoto/go-datastore/pkg/openingtime"
"github.com/satimoto/go-datastore/pkg/pendingnotification"
"github.com/satimoto/go-datastore/pkg/promotion"
"github.com/satimoto/go-datastore/pkg/referral"
"github.com/satimoto/go-datastore/pkg/session"
Expand All @@ -40,29 +41,30 @@ type Repository interface{}

type Resolver struct {
Repository
FerpService ferp.Ferp
OcpiService ocpi.Ocpi
Emailer email.Emailer
AuthenticationResolver *authentication.AuthenticationResolver
BusinessDetailRepository businessdetail.BusinessDetailRepository
ChannelRequestRepository channelrequest.ChannelRequestRepository
CountryAccountResolver *countryaccount.CountryAccountResolver
DisplayTextRepository displaytext.DisplayTextRepository
EmailSubscriptionRepository emailsubscription.EmailSubscriptionRepository
EnergyMixRepository energymix.EnergyMixRepository
EvseRepository evse.EvseRepository
ImageRepository image.ImageRepository
InvoiceRequestRepository invoicerequest.InvoiceRequestRepository
LocationRepository location.LocationRepository
NodeRepository node.NodeRepository
OpeningTimeRepository openingtime.OpeningTimeRepository
ReferralRepository referral.ReferralRepository
PromotionRepository promotion.PromotionRepository
SessionRepository session.SessionRepository
TariffRepository tariff.TariffRepository
TokenResolver *token.TokenResolver
UserRepository user.UserRepository
defaultTaxPercent float64
FerpService ferp.Ferp
OcpiService ocpi.Ocpi
Emailer email.Emailer
AuthenticationResolver *authentication.AuthenticationResolver
BusinessDetailRepository businessdetail.BusinessDetailRepository
ChannelRequestRepository channelrequest.ChannelRequestRepository
CountryAccountResolver *countryaccount.CountryAccountResolver
DisplayTextRepository displaytext.DisplayTextRepository
EmailSubscriptionRepository emailsubscription.EmailSubscriptionRepository
EnergyMixRepository energymix.EnergyMixRepository
EvseRepository evse.EvseRepository
ImageRepository image.ImageRepository
InvoiceRequestRepository invoicerequest.InvoiceRequestRepository
LocationRepository location.LocationRepository
NodeRepository node.NodeRepository
OpeningTimeRepository openingtime.OpeningTimeRepository
ReferralRepository referral.ReferralRepository
PendingNotificationRepository pendingnotification.PendingNotificationRepository
PromotionRepository promotion.PromotionRepository
SessionRepository session.SessionRepository
TariffRepository tariff.TariffRepository
TokenResolver *token.TokenResolver
UserRepository user.UserRepository
defaultTaxPercent float64
}

func NewResolver(repositoryService *db.RepositoryService) *Resolver {
Expand All @@ -78,30 +80,31 @@ func NewResolverWithServices(repositoryService *db.RepositoryService, ferpServic
defaultTaxPercent := util.GetEnvFloat64("DEFAULT_TAX_PERCENT", 19)

return &Resolver{
Repository: repo,
FerpService: ferpService,
OcpiService: ocpiService,
Emailer: emailer,
AuthenticationResolver: authentication.NewResolver(repositoryService),
BusinessDetailRepository: businessdetail.NewRepository(repositoryService),
ChannelRequestRepository: channelrequest.NewRepository(repositoryService),
CountryAccountResolver: countryaccount.NewResolver(repositoryService),
DisplayTextRepository: displaytext.NewRepository(repositoryService),
EmailSubscriptionRepository: emailsubscription.NewRepository(repositoryService),
EnergyMixRepository: energymix.NewRepository(repositoryService),
EvseRepository: evse.NewRepository(repositoryService),
ImageRepository: image.NewRepository(repositoryService),
InvoiceRequestRepository: invoicerequest.NewRepository(repositoryService),
LocationRepository: location.NewRepository(repositoryService),
NodeRepository: node.NewRepository(repositoryService),
OpeningTimeRepository: openingtime.NewRepository(repositoryService),
PromotionRepository: promotion.NewRepository(repositoryService),
ReferralRepository: referral.NewRepository(repositoryService),
SessionRepository: session.NewRepository(repositoryService),
TariffRepository: tariff.NewRepository(repositoryService),
TokenResolver: token.NewResolver(repositoryService),
UserRepository: user.NewRepository(repositoryService),
defaultTaxPercent: defaultTaxPercent,
Repository: repo,
FerpService: ferpService,
OcpiService: ocpiService,
Emailer: emailer,
AuthenticationResolver: authentication.NewResolver(repositoryService),
BusinessDetailRepository: businessdetail.NewRepository(repositoryService),
ChannelRequestRepository: channelrequest.NewRepository(repositoryService),
CountryAccountResolver: countryaccount.NewResolver(repositoryService),
DisplayTextRepository: displaytext.NewRepository(repositoryService),
EmailSubscriptionRepository: emailsubscription.NewRepository(repositoryService),
EnergyMixRepository: energymix.NewRepository(repositoryService),
EvseRepository: evse.NewRepository(repositoryService),
ImageRepository: image.NewRepository(repositoryService),
InvoiceRequestRepository: invoicerequest.NewRepository(repositoryService),
LocationRepository: location.NewRepository(repositoryService),
NodeRepository: node.NewRepository(repositoryService),
OpeningTimeRepository: openingtime.NewRepository(repositoryService),
PendingNotificationRepository: pendingnotification.NewRepository(repositoryService),
PromotionRepository: promotion.NewRepository(repositoryService),
ReferralRepository: referral.NewRepository(repositoryService),
SessionRepository: session.NewRepository(repositoryService),
TariffRepository: tariff.NewRepository(repositoryService),
TokenResolver: token.NewResolver(repositoryService),
UserRepository: user.NewRepository(repositoryService),
defaultTaxPercent: defaultTaxPercent,
}
}

Expand Down
22 changes: 19 additions & 3 deletions graph/resolver/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,20 @@ func (r *mutationResolver) CreateUser(ctx context.Context, input graph.CreateUse
}

referralCode := r.generateReferralCode(ctx)

user, err := r.UserRepository.CreateUser(ctx, db.CreateUserParams{
createUserParams := db.CreateUserParams{
CommissionPercent: dbUtil.GetEnvFloat64("DEFAULT_COMMISSION_PERCENT", 7),
DeviceToken: input.DeviceToken,
LinkingPubkey: auth.LinkingPubkey.String,
Pubkey: input.Pubkey,
ReferralCode: dbUtil.SqlNullString(referralCode),
CircuitUserID: dbUtil.SqlNullInt64(circuitUserId),
})
}

user, err := r.UserRepository.CreateUser(ctx, createUserParams)

if err != nil {
dbUtil.LogOnError("API018", "User already exists", err)
log.Printf("API018: Params=%#v", createUserParams)
return nil, gqlerror.Errorf("User already exists")
}

Expand All @@ -84,9 +86,23 @@ func (r *mutationResolver) UpdateUser(ctx context.Context, input graph.UpdateUse

if err != nil {
dbUtil.LogOnError("API020", "Error updating user", err)
log.Printf("API020: Params=%#v", updateUserParams)
return nil, gqlerror.Errorf("Error updating user")
}

updatePendingNotificationByUserParams := db.UpdatePendingNotificationsByUserParams{
DeviceToken: input.DeviceToken,
UserID: user.ID,
}

err = r.PendingNotificationRepository.UpdatePendingNotificationsByUser(ctx, updatePendingNotificationByUserParams)

if err != nil {
dbUtil.LogOnError("API027", "Error updating pending notifications", err)
log.Printf("API027: Params=%#v", updatePendingNotificationByUserParams)
return nil, gqlerror.Errorf("Error updating pending notifications")
}

return &updatedUser, nil
}

Expand Down

0 comments on commit df8648f

Please sign in to comment.