Feature: Support multi user per irc network (#78)

* feat: delete irc network in transaction

* feat: use compound key for irc handlers

* chore: update deps

* refactor: start network

* refactor: init irc handler

* indexers: update network name
This commit is contained in:
Ludvig Lundgren 2022-01-13 21:26:23 +01:00 committed by GitHub
parent f466657ed4
commit 2daeedbdc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 491 additions and 428 deletions

View file

@ -49,25 +49,25 @@ func (r *IrcRepo) GetNetworkByID(id int64) (*domain.IrcNetwork, error) {
}
func (r *IrcRepo) DeleteNetwork(ctx context.Context, id int64) error {
tx, err := r.db.handler.BeginTx(ctx, nil)
tx, err := r.db.BeginTx(ctx, nil)
if err != nil {
return err
}
defer tx.Rollback()
_, err = tx.ExecContext(ctx, `DELETE FROM irc_network WHERE id = ?`, id)
if err != nil {
log.Error().Stack().Err(err).Msgf("error deleting network: %v", id)
return err
}
_, err = tx.ExecContext(ctx, `DELETE FROM irc_channel WHERE network_id = ?`, id)
if err != nil {
log.Error().Stack().Err(err).Msgf("error deleting channels for network: %v", id)
return err
}
_, err = tx.ExecContext(ctx, `DELETE FROM irc_network WHERE id = ?`, id)
if err != nil {
log.Error().Stack().Err(err).Msgf("error deleting network: %v", id)
return err
}
err = tx.Commit()
if err != nil {
log.Error().Stack().Err(err).Msgf("error deleting network: %v", id)

View file

@ -79,3 +79,20 @@ func (db *SqliteDB) Close() error {
}
return nil
}
func (db *SqliteDB) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) {
tx, err := db.handler.BeginTx(ctx, opts)
if err != nil {
return nil, err
}
return &Tx{
Tx: tx,
handler: db,
}, nil
}
type Tx struct {
*sql.Tx
handler *SqliteDB
}