- Timestamp:
- Mar 12, 2020, 5:33:03 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/db.go
r85 r89 78 78 defer db.lock.Unlock() 79 79 80 tx, err := db.db.Begin()81 if err != nil {82 return err83 }84 defer tx.Rollback()85 86 80 var password *string 87 81 if user.Password != "" { 88 82 password = &user.Password 89 83 } 90 _, err = tx.Exec("INSERT INTO User(username, password) VALUES (?, ?)", user.Username, password) 91 if err != nil { 92 return err 93 } 94 95 return tx.Commit() 84 _, err := db.db.Exec("INSERT INTO User(username, password) VALUES (?, ?)", user.Username, password) 85 return err 96 86 } 97 87 … … 152 142 return channels, nil 153 143 } 144 145 func (db *DB) StoreChannel(networkID int64, ch *Channel) error { 146 db.lock.Lock() 147 defer db.lock.Unlock() 148 149 _, err := db.db.Exec("INSERT OR REPLACE INTO Channel(network, name) VALUES (?, ?)", networkID, ch.Name) 150 return err 151 } 152 153 func (db *DB) DeleteChannel(networkID int64, name string) error { 154 db.lock.Lock() 155 defer db.lock.Unlock() 156 157 _, err := db.db.Exec("DELETE FROM Channel WHERE network = ? AND name = ?", networkID, name) 158 return err 159 } -
trunk/downstream.go
r88 r89 115 115 } 116 116 117 // upstream returns the upstream connection, if any. If there are zero or if 118 // there are multiple upstream connections, it returns nil. 119 func (dc *downstreamConn) upstream() *upstreamConn { 120 if dc.network == nil { 121 return nil 122 } 123 124 var upstream *upstreamConn 125 dc.forEachUpstream(func(uc *upstreamConn) { 126 upstream = uc 127 }) 128 return upstream 129 } 130 117 131 func (dc *downstreamConn) unmarshalChannel(name string) (*upstreamConn, string, error) { 132 if uc := dc.upstream(); uc != nil { 133 return uc, name, nil 134 } 135 118 136 // TODO: extract network name from channel name if dc.upstream == nil 119 137 var channel *upstreamChannel … … 462 480 Params: []string{upstreamName}, 463 481 }) 464 // TODO: add/remove channel from upstream config 482 483 switch msg.Command { 484 case "JOIN": 485 err := dc.srv.db.StoreChannel(uc.network.ID, &Channel{ 486 Name: upstreamName, 487 }) 488 if err != nil { 489 dc.logger.Printf("failed to create channel %q in DB: %v", upstreamName, err) 490 } 491 case "PART": 492 if err := dc.srv.db.DeleteChannel(uc.network.ID, upstreamName); err != nil { 493 dc.logger.Printf("failed to delete channel %q in DB: %v", upstreamName, err) 494 } 495 } 465 496 case "MODE": 466 497 if msg.Prefix == nil {
Note:
See TracChangeset
for help on using the changeset viewer.