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 } func (r *Repository) WebhookUpdate(ctx context.Context, tokens models.Token) error { filter := bson.M{"AccountID": tokens.AccountID} // 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 } 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 }