diff options
| author | Felix Hanley <felix@userspace.com.au> | 2018-03-23 06:29:23 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2018-03-23 06:29:23 +0000 |
| commit | bf23707367d168d1b6ecac044fa0fc202d641b3e (patch) | |
| tree | c802306e0ebcd5d9482ee11f2512f1abcd3669c4 | |
| parent | 4ac8be667694a98debac14bac4e84913bfbbbe07 (diff) | |
| download | dhtsearch-bf23707367d168d1b6ecac044fa0fc202d641b3e.tar.gz dhtsearch-bf23707367d168d1b6ecac044fa0fc202d641b3e.tar.bz2 | |
Simplify pending SQL
| -rw-r--r-- | db/sqlite.go | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/db/sqlite.go b/db/sqlite.go index 7e17187..c16938a 100644 --- a/db/sqlite.go +++ b/db/sqlite.go @@ -126,7 +126,7 @@ func (s *Store) RemoveTorrent(t *models.Torrent) (err error) { s.lock.Lock() defer s.lock.Unlock() - _, err = s.stmts["removeTorrent"].Exec(t.Infohash.Bytes()) + _, err = s.stmts["removeTorrent"].Exec(t.Infohash) return fmt.Errorf("removeTorrent: %s", err) } @@ -152,7 +152,7 @@ func (s *Store) SavePeer(p *models.Peer) (err error) { return fmt.Errorf("savePeer: %s", err) } - if res, err = tx.Stmt(s.stmts["insertTorrent"]).Exec(nil, p.Infohash.Bytes(), 0); err != nil { + if res, err = tx.Stmt(s.stmts["insertTorrent"]).Exec(nil, p.Infohash, 0); err != nil { return fmt.Errorf("savePeer: %s", err) } if torrentID, err = res.LastInsertId(); err != nil { @@ -343,19 +343,12 @@ func (s *Store) prepareStatements() error { } if s.stmts["selectPendingInfohashes"], err = s.conn.Prepare( - `with get_order as ( - select t.id as torrent_id, min(pt.peer_id) as peer_id, count(pt.peer_id) as c - from torrents t - join peers_torrents pt on pt.torrent_id = t.id - where t.name is null - group by t.id - -- order by c desc - order by t.updated desc - limit ? - ) select p.address, t.infohash - from get_order go - join torrents t on t.id = go.torrent_id - join peers p on p.id = go.peer_id`, + `select max(p.address) as address, t.infohash + from torrents t + join peers_torrents pt on pt.torrent_id = t.id + join peers p on p.id = pt.peer_id + where t.name is null + group by t.infohash`, ); err != nil { return err } @@ -369,7 +362,7 @@ func (s *Store) prepareStatements() error { } if s.stmts["insertPeer"], err = s.conn.Prepare( - `insert or replace into peers + `insert or ignore into peers (address, created, updated) values (?, date('now'), date('now'))`, |
