code: func (s *SQLStore) DeleteChannel(channel string) error {
  	s.Lock()
  	defer s.Unlock()
  	c := s.channels[channel]
  	if c == nil {
  		return ErrNotFound
  	}
  	// Get the channel ID from Msgs store
  	var cid int64
  	if cms, ok := c.Msgs.(*CryptoMsgStore); ok {
  		cid = cms.MsgStore.(*SQLMsgStore).channelID
  	} else {
  		cid = c.Msgs.(*SQLMsgStore).channelID
  	}
  	// Fast delete just marks the channel row as deleted
  	if _, err := s.preparedStmts[sqlDeleteChannelFast].Exec(cid); err != nil {
  		return err
  	}
  
  	// If that succeeds, proceed with deletion of channel
  	delete(s.channels, channel)
  
  	// Close the messages and subs stores
  	c.Msgs.Close()
  	c.Subs.Close()
  
  	// Now trigger in a go routine the longer deletion of entries
  	// in all other tables.
  	s.wg.Add(1)
  	go func() {
  		defer s.wg.Done()
  
  		if err := s.deepChannelDelete(cid); err != nil {
  			s.log.Errorf("Unable to completely delete channel %q: %v", channel, err)
  		}
  	}()
  
  	return nil
  }
docs: // DeleteChannel implements the Store interface