From 266e125e5dbca2e6481a017050347ef290aa66a6 Mon Sep 17 00:00:00 2001
From: Kenzo-Hugo Hillion <kenzo-hugo.hillion1@pasteur.fr>
Date: Mon, 4 Nov 2019 18:36:54 +0100
Subject: [PATCH] use prefetch and select to improve performances

---
 backend/metagenedb/api/catalog/views/gene.py     | 2 +-
 backend/metagenedb/api/catalog/views/taxonomy.py | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/backend/metagenedb/api/catalog/views/gene.py b/backend/metagenedb/api/catalog/views/gene.py
index ec6bf39..935a712 100644
--- a/backend/metagenedb/api/catalog/views/gene.py
+++ b/backend/metagenedb/api/catalog/views/gene.py
@@ -43,7 +43,7 @@ class DocGeneLength(object):
 
 
 class GeneViewSet(BulkViewSet):
-    queryset = Gene.objects.all()
+    queryset = Gene.objects.select_related('taxonomy').prefetch_related('functions').all()
     serializer_class = GeneSerializer
     lookup_field = 'gene_id'
     GENE_LENGTH_COL = 'length'
diff --git a/backend/metagenedb/api/catalog/views/taxonomy.py b/backend/metagenedb/api/catalog/views/taxonomy.py
index 2f9b484..f86e65a 100644
--- a/backend/metagenedb/api/catalog/views/taxonomy.py
+++ b/backend/metagenedb/api/catalog/views/taxonomy.py
@@ -8,7 +8,8 @@ from .bulk_viewset import BulkViewSet
 
 
 class TaxonomyViewSet(BulkViewSet):
-    queryset = Taxonomy.objects.all()
+    queryset = Taxonomy.objects.select_related(
+        "parent", "superkingdom", "kingdom", "phylum", "class_rank", "order", "family", "genus", "species").all()
     serializer_class = TaxonomySerializer
     lookup_field = 'tax_id'
     filterset_class = TaxonomyFilter
-- 
GitLab