amocrm/internal/repository/webhook.go

73 lines
1.5 KiB
Go
Raw Normal View History

package repository
import (
"amocrm/internal/models"
"context"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
"time"
)
func (r *Repository) WebhookCreate(ctx context.Context, tokens models.Token) error {
filter := bson.M{"AccountID": tokens.AccountID}
update := bson.M{
"$set": tokens,
}
opts := options.Update().SetUpsert(true)
_, err := r.tokens.UpdateOne(ctx, filter, update, opts)
if err != nil {
return err
}
return nil
}
2024-04-10 16:50:41 +00:00
func (r *Repository) WebhookUpdate(ctx context.Context, tokens models.Token) error {
filter := bson.M{"AccountID": tokens.AccountID}
2024-04-10 16:50:41 +00:00
// refresh токен обновляется каждый раз при обновлении access токена
update := bson.M{
"$set": bson.M{
"AccessToken": tokens.AccessToken,
"RefreshToken": tokens.RefreshToken,
"Expiration": tokens.Expiration,
"CreatedAt": tokens.CreatedAt,
},
}
_, err := r.tokens.UpdateOne(ctx, filter, update)
if err != nil {
return err
}
return nil
}
2024-04-10 16:50:41 +00:00
func (r *Repository) CheckExpiredRefresh(ctx context.Context) ([]models.Token, error) {
eightyDaysAgo := time.Now().AddDate(0, 0, -80).Unix()
filter := bson.M{
"CreatedAt": bson.M{
"$lte": eightyDaysAgo,
},
}
cursor, err := r.tokens.Find(ctx, filter)
if err != nil {
return nil, err
}
defer cursor.Close(ctx)
var tokens []models.Token
if err := cursor.All(ctx, &tokens); err != nil {
return nil, err
}
return tokens, nil
}
func (r *Repository) WebhookDelete(ctx context.Context) error {
//TODO:IMPLEMENT ME
return nil
}