28 lines
783 B
Go
28 lines
783 B
Go
package postgres
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/jackc/pgx/v5"
|
|
|
|
"telesrv/internal/store"
|
|
"telesrv/internal/store/postgres/sqlcgen"
|
|
)
|
|
|
|
func applyDeliveryEffectsTx(ctx context.Context, tx pgx.Tx, effects []store.DeliveryEffect) ([]store.DeliveryEffect, error) {
|
|
qtx := sqlcgen.New(tx)
|
|
events := NewUpdateEventStore(tx)
|
|
for i := range effects {
|
|
effect := &effects[i]
|
|
if err := effect.Validate(); err != nil {
|
|
return nil, fmt.Errorf("delivery effect %d: %w", i, err)
|
|
}
|
|
event, err := events.appendInTx(ctx, tx, qtx, effect.TargetUserID, effect.Event, true, effect.ExcludeAuthKeyID, effect.ExcludeSessionID, true)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("apply account PTS delivery effect %d: %w", i, err)
|
|
}
|
|
effect.Event = event
|
|
}
|
|
return effects, nil
|
|
}
|