~emersion/soju

7310f67fc71efa9bac008dd5f4527e4e3e97a16a — Hubert Hirtz 2 months ago 42828d6
Make DB.DeleteChannel take the channel ID

... to allow the caller to correctly do any necessary casemapping.
2 files changed, 7 insertions(+), 3 deletions(-)

M db.go
M user.go
M db.go => db.go +2 -2
@@ 461,10 461,10 @@ func (db *DB) StoreChannel(networkID int64, ch *Channel) error {
	return err
}

func (db *DB) DeleteChannel(networkID int64, name string) error {
func (db *DB) DeleteChannel(id int64) error {
	db.lock.Lock()
	defer db.lock.Unlock()

	_, err := db.db.Exec("DELETE FROM Channel WHERE network = ? AND name = ?", networkID, name)
	_, err := db.db.Exec("DELETE FROM Channel WHERE id = ?", id)
	return err
}

M user.go => user.go +5 -1
@@ 229,7 229,11 @@ func (net *network) createUpdateChannel(ch *Channel) error {
}

func (net *network) deleteChannel(name string) error {
	if err := net.user.srv.db.DeleteChannel(net.ID, name); err != nil {
	ch, ok := net.channels[name]
	if !ok {
		return fmt.Errorf("unknown channel %q", name)
	}
	if err := net.user.srv.db.DeleteChannel(ch.ID); err != nil {
		return err
	}
	delete(net.channels, name)