From df7a51d479e5ecf48207023d2f3f54e47b76ecb7 Mon Sep 17 00:00:00 2001 From: Ludvig Lundgren Date: Sat, 11 Jun 2022 02:05:31 +0200 Subject: [PATCH] fix(irc): append invite command on add (#297) --- internal/database/irc.go | 23 +++++++++++++++++++++++ internal/domain/irc.go | 1 + internal/irc/service.go | 8 ++++++++ 3 files changed, 32 insertions(+) diff --git a/internal/database/irc.go b/internal/database/irc.go index 88659db..49774bc 100644 --- a/internal/database/irc.go +++ b/internal/database/irc.go @@ -560,3 +560,26 @@ func (r *IrcRepo) UpdateChannel(channel *domain.IrcChannel) error { return err } + +func (r *IrcRepo) UpdateInviteCommand(networkID int64, invite string) error { + + // update record + channelQueryBuilder := r.db.squirrel. + Update("irc_network"). + Set("invite_command", invite). + Where("id = ?", networkID) + + query, args, err := channelQueryBuilder.ToSql() + if err != nil { + r.log.Error().Stack().Err(err).Msg("irc.UpdateInviteCommand: error building query") + return err + } + + _, err = r.db.handler.Exec(query, args...) + if err != nil { + r.log.Error().Stack().Err(err).Msg("irc.UpdateInviteCommand: error executing query") + return err + } + + return err +} diff --git a/internal/domain/irc.go b/internal/domain/irc.go index 8a15bd1..13ddcdf 100644 --- a/internal/domain/irc.go +++ b/internal/domain/irc.go @@ -72,6 +72,7 @@ type IrcRepo interface { UpdateNetwork(ctx context.Context, network *IrcNetwork) error StoreChannel(networkID int64, channel *IrcChannel) error UpdateChannel(channel *IrcChannel) error + UpdateInviteCommand(networkID int64, invite string) error StoreNetworkChannels(ctx context.Context, networkID int64, channels []IrcChannel) error CheckExistingNetwork(ctx context.Context, network *IrcNetwork) (*IrcNetwork, error) FindActiveNetworks(ctx context.Context) ([]IrcNetwork, error) diff --git a/internal/irc/service.go b/internal/irc/service.go index f63e2e1..b8d7e95 100644 --- a/internal/irc/service.go +++ b/internal/irc/service.go @@ -556,6 +556,14 @@ func (s *service) StoreNetwork(ctx context.Context, network *domain.IrcNetwork) existingNetwork.Channels = append(existingNetwork.Channels, network.Channels...) } + // append invite command for existing network + if network.InviteCommand != "" { + existingNetwork.InviteCommand = strings.Join([]string{existingNetwork.InviteCommand, network.InviteCommand}, ",") + if err := s.repo.UpdateInviteCommand(existingNetwork.ID, existingNetwork.InviteCommand); err != nil { + return err + } + } + if existingNetwork.Enabled { // if server, tls, invite command, port : changed - restart // if nickserv account, nickserv password : changed - stay connected, and change those