package creator import "context" // Cover completion cannot rewrite an event, a delivery cursor, or its history flag. func (s *Store) UpdateListenerEventCovers(ctx context.Context, accountID, generation string, items []ListenerDelivery) error { tx, err := s.db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var id int64 var enabled bool var current string err = tx.QueryRowContext(ctx, `SELECT l.account_id,l.enabled,l.generation FROM creator_account_listener l JOIN social_account a ON a.id=l.account_id WHERE a.account_id=$1 FOR UPDATE OF l`, accountID).Scan(&id, &enabled, ¤t) if err != nil { return rowError(err) } if !enabled || current != generation { return ErrConflict } for _, d := range items { if d.Notice == nil || d.Notice.WorkID == "" { continue } n := d.Notice if err := d.Validate(); err != nil { return err } _, err = tx.ExecContext(ctx, `UPDATE creator_account_event SET work_cover_error=$1 WHERE account_id=$2 AND event_key=$3 AND work_id=$4 AND work_author_uid=$5`, n.WorkCoverError, id, n.EventKey, n.WorkID, n.WorkAuthorUID) if err != nil { return err } } return tx.Commit() }