4
0
Эх сурвалжийг харах

perf(storage): extract a query from a cursor lock

The fetchFeedCounter query should happen before the the db.Query call, so that
a single database connection can be (re)used, instead of using a second one.
jvoisin 3 сар өмнө
parent
commit
9151dc5377

+ 5 - 5
internal/storage/feed_query_builder.go

@@ -194,16 +194,16 @@ func (f *feedQueryBuilder) GetFeeds() (model.Feeds, error) {
 
 
 	query = fmt.Sprintf(query, f.buildCondition(), f.buildSorting())
 	query = fmt.Sprintf(query, f.buildCondition(), f.buildSorting())
 
 
-	rows, err := f.store.db.Query(query, f.args...)
+	readCounters, unreadCounters, err := f.fetchFeedCounter()
 	if err != nil {
 	if err != nil {
-		return nil, fmt.Errorf(`store: unable to fetch feeds: %w`, err)
+		return nil, err
 	}
 	}
-	defer rows.Close()
 
 
-	readCounters, unreadCounters, err := f.fetchFeedCounter()
+	rows, err := f.store.db.Query(query, f.args...)
 	if err != nil {
 	if err != nil {
-		return nil, err
+		return nil, fmt.Errorf(`store: unable to fetch feeds: %w`, err)
 	}
 	}
+	defer rows.Close()
 
 
 	feeds := make(model.Feeds, 0)
 	feeds := make(model.Feeds, 0)
 	for rows.Next() {
 	for rows.Next() {