Skip to content

Commit 7b3be0c

Browse files
committed
chore: improved records fetch via one call
1 parent a4bd9e4 commit 7b3be0c

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

pkg/database/db_interface.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ type MB3Database interface {
141141
// database.
142142
GetRecord(*string) (*string, error)
143143

144+
GetRecords(*[]string) (*[]string, error)
145+
144146
// GetSimpleRecord gets a single simple MassBank record by the Accession string.
145147
// It should return nil and a [NotFoundError] if the record is not in the
146148
// database.

pkg/database/postgres.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,31 @@ func (p *PostgresSQLDB) GetMetadata() (*massbank.MbMetaData, error) {
315315
return result, nil
316316
}
317317

318+
func (p *PostgresSQLDB) GetRecords(s *[]string) (*[]string, error) {
319+
320+
var query = "SELECT record_text FROM records WHERE accession = ANY ($1);"
321+
stmt, err := p.database.Prepare(query)
322+
if err != nil {
323+
return nil, err
324+
}
325+
var recordStrings = []string{}
326+
rows, err := stmt.Query(pq.Array(s))
327+
stmt.Close()
328+
if err != nil {
329+
return nil, err
330+
}
331+
defer rows.Close()
332+
for rows.Next() {
333+
var record string
334+
if err := rows.Scan(&record); err != nil {
335+
return nil, err
336+
}
337+
recordStrings = append(recordStrings, record)
338+
}
339+
340+
return &recordStrings, nil
341+
}
342+
318343
// GetRecord see [MB3Database.GetRecord]
319344
func (p *PostgresSQLDB) GetRecord(s *string) (*string, error) {
320345

pkg/mb3server/api-impl.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -526,12 +526,16 @@ func GetRecords(contributor []string, instrumentType []string, msType []string,
526526
}
527527

528528
result := []MbRecord{}
529+
accessions := []string{}
529530
for _, searchResultDataInner := range searchResult.Data {
530-
mb3RecordJson, err := db.GetRecord(&searchResultDataInner.Accession)
531-
if err != nil {
532-
return nil, err
533-
}
534-
record, err := ConvertJsonStringToMb3Record(*mb3RecordJson)
531+
accessions = append(accessions, searchResultDataInner.Accession)
532+
}
533+
recordStrings, err := db.GetRecords(&accessions)
534+
if err != nil {
535+
return nil, err
536+
}
537+
for _, recordString := range *recordStrings {
538+
record, err := ConvertJsonStringToMb3Record(recordString)
535539
if err != nil {
536540
return nil, err
537541
}

0 commit comments

Comments
 (0)