package database import ( "context" "fmt" "github.com/jackc/pgx/v5/pgtype" "github.com/TelegramExchange/tgex-parser/internal/domain" "github.com/TelegramExchange/tgex-parser/pkg/transaction" ) func (d *Database) UpdateChannel(ctx context.Context, channel domain.Channel) error { query := `UPDATE channel SET telegram_id = $2, username = $3, title = $4, access_hash = $5, pts = $6, updated_at = CURRENT_TIMESTAMP WHERE id = $1;` txOrPool := transaction.TryExtractTX(ctx) dto := updateChannelDTO{ ID: pgtype.UUID{Bytes: channel.ID, Valid: true}, TelegramID: pgtype.Int8{Int64: channel.TelegramID, Valid: true}, Username: pgtype.Text{String: channel.Username, Valid: true}, Title: pgtype.Text{String: channel.Title, Valid: true}, AccessHash: pgtype.Int8{Int64: channel.AccessHash, Valid: true}, Pts: pgtype.Int4{Int32: int32(channel.Pts), Valid: true}, } _, err := txOrPool.Exec(ctx, query, dto.ID, dto.TelegramID, dto.Username, dto.Title, dto.AccessHash, dto.Pts) if err != nil { return fmt.Errorf("txOrPool.Exec: %w", err) } return nil } type updateChannelDTO struct { ID pgtype.UUID TelegramID pgtype.Int8 Username pgtype.Text Title pgtype.Text AccessHash pgtype.Int8 Pts pgtype.Int4 }