QueryTorrents for postgreSQL - initail implementation
This commit is contained in:
parent
5546a941e4
commit
345901583c
@ -197,7 +197,53 @@ func (db *postgresDatabase) QueryTorrents(
|
|||||||
lastOrderedValue *float64,
|
lastOrderedValue *float64,
|
||||||
lastID *uint64,
|
lastID *uint64,
|
||||||
) ([]TorrentMetadata, error) {
|
) ([]TorrentMetadata, error) {
|
||||||
return nil, NotImplementedError
|
|
||||||
|
if query == "" && orderBy == ByRelevance {
|
||||||
|
return nil, fmt.Errorf("torrents cannot be ordered by relevance when the query is empty")
|
||||||
|
}
|
||||||
|
if (lastOrderedValue == nil) != (lastID == nil) {
|
||||||
|
return nil, fmt.Errorf("lastOrderedValue and lastID should be supplied together, if supplied")
|
||||||
|
}
|
||||||
|
|
||||||
|
//doJoin := query != ""
|
||||||
|
//firstPage := lastID == nil
|
||||||
|
|
||||||
|
// executeTemplate is used to prepare the SQL query, WITH PLACEHOLDERS FOR USER INPUT.
|
||||||
|
rows, err := db.conn.Query(`
|
||||||
|
SELECT id
|
||||||
|
, info_hash
|
||||||
|
, name
|
||||||
|
, total_size
|
||||||
|
, discovered_on
|
||||||
|
, (SELECT COUNT(*) FROM files WHERE torrents.id = files.torrent_id) AS n_files
|
||||||
|
FROM torrents
|
||||||
|
LIMIT $1;`, limit)
|
||||||
|
|
||||||
|
defer db.closeRows(rows)
|
||||||
|
if err != nil {
|
||||||
|
zap.L().Error(fmt.Sprint(err))
|
||||||
|
return nil, errors.Wrap(err, "query error")
|
||||||
|
}
|
||||||
|
|
||||||
|
torrents := make([]TorrentMetadata, 0)
|
||||||
|
for rows.Next() {
|
||||||
|
var torrent TorrentMetadata
|
||||||
|
err = rows.Scan(
|
||||||
|
&torrent.ID,
|
||||||
|
&torrent.InfoHash,
|
||||||
|
&torrent.Name,
|
||||||
|
&torrent.Size,
|
||||||
|
&torrent.DiscoveredOn,
|
||||||
|
&torrent.NFiles,
|
||||||
|
//&torrent.Relevance,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
torrents = append(torrents, torrent)
|
||||||
|
}
|
||||||
|
|
||||||
|
return torrents, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *postgresDatabase) GetTorrent(infoHash []byte) (*TorrentMetadata, error) {
|
func (db *postgresDatabase) GetTorrent(infoHash []byte) (*TorrentMetadata, error) {
|
||||||
@ -234,7 +280,8 @@ func (db *postgresDatabase) GetFiles(infoHash []byte) ([]File, error) {
|
|||||||
SELECT
|
SELECT
|
||||||
f.size,
|
f.size,
|
||||||
f.path
|
f.path
|
||||||
FROM files f, torrents t WHERE f.torrent_id = t.id AND t.info_hash = $1;`,
|
FROM files f, torrents t
|
||||||
|
WHERE f.torrent_id = t.id AND t.info_hash = $1;`,
|
||||||
infoHash,
|
infoHash,
|
||||||
)
|
)
|
||||||
defer db.closeRows(rows)
|
defer db.closeRows(rows)
|
||||||
|
Loading…
Reference in New Issue
Block a user