improved search food api performance
This commit is contained in:
parent
44236f611e
commit
924d1cb71b
@ -87,7 +87,7 @@ from cookbook.serializer import (AutomationSerializer, BookmarkletImportListSeri
|
|||||||
SupermarketCategorySerializer, SupermarketSerializer,
|
SupermarketCategorySerializer, SupermarketSerializer,
|
||||||
SyncLogSerializer, SyncSerializer, UnitSerializer,
|
SyncLogSerializer, SyncSerializer, UnitSerializer,
|
||||||
UserFileSerializer, UserSerializer, UserPreferenceSerializer,
|
UserFileSerializer, UserSerializer, UserPreferenceSerializer,
|
||||||
UserSpaceSerializer, ViewLogSerializer, AccessTokenSerializer)
|
UserSpaceSerializer, ViewLogSerializer, AccessTokenSerializer, FoodSimpleSerializer)
|
||||||
from cookbook.views.import_export import get_integration
|
from cookbook.views.import_export import get_integration
|
||||||
from recipes import settings
|
from recipes import settings
|
||||||
|
|
||||||
@ -533,6 +533,11 @@ class FoodViewSet(viewsets.ModelViewSet, TreeMixin):
|
|||||||
.prefetch_related('onhand_users', 'inherit_fields', 'child_inherit_fields', 'substitute') \
|
.prefetch_related('onhand_users', 'inherit_fields', 'child_inherit_fields', 'substitute') \
|
||||||
.select_related('recipe', 'supermarket_category')
|
.select_related('recipe', 'supermarket_category')
|
||||||
|
|
||||||
|
def get_serializer_class(self):
|
||||||
|
if self.request and self.request.query_params.get('simple', False):
|
||||||
|
return FoodSimpleSerializer
|
||||||
|
return self.serializer_class
|
||||||
|
|
||||||
@decorators.action(detail=True, methods=['PUT'], serializer_class=FoodShoppingUpdateSerializer, )
|
@decorators.action(detail=True, methods=['PUT'], serializer_class=FoodShoppingUpdateSerializer, )
|
||||||
# TODO DRF only allows one action in a decorator action without overriding get_operation_id_base() this should be PUT and DELETE probably
|
# TODO DRF only allows one action in a decorator action without overriding get_operation_id_base() this should be PUT and DELETE probably
|
||||||
def shopping(self, request, pk):
|
def shopping(self, request, pk):
|
||||||
@ -655,7 +660,7 @@ class IngredientViewSet(viewsets.ModelViewSet):
|
|||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
if self.request and self.request.query_params.get('simple', False):
|
if self.request and self.request.query_params.get('simple', False):
|
||||||
return IngredientSimpleSerializer
|
return IngredientSimpleSerializer
|
||||||
return IngredientSerializer
|
return self.serializer_class
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
queryset = self.queryset.filter(step__recipe__space=self.request.space)
|
queryset = self.queryset.filter(step__recipe__space=self.request.space)
|
||||||
|
@ -155,8 +155,9 @@ export default {
|
|||||||
pageSize: this.limit,
|
pageSize: this.limit,
|
||||||
query: query,
|
query: query,
|
||||||
limit: this.limit,
|
limit: this.limit,
|
||||||
|
options: {query: {simple: 1}}, // for API endpoints that support a simple view
|
||||||
}
|
}
|
||||||
console.log(query, options)
|
|
||||||
this.genericAPI(this.model, this.Actions.LIST, options).then((result) => {
|
this.genericAPI(this.model, this.Actions.LIST, options).then((result) => {
|
||||||
this.objects = this.sticky_options.concat(result.data?.results ?? result.data)
|
this.objects = this.sticky_options.concat(result.data?.results ?? result.data)
|
||||||
if (this.nothingSelected && this.objects.length > 0) {
|
if (this.nothingSelected && this.objects.length > 0) {
|
||||||
|
@ -359,6 +359,7 @@ export const ApiMixin = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// if passing parameters that are not part of the offical schema of the endpoint use parameter: options: {query: {simple: 1}}
|
||||||
genericAPI: function (model, action, options) {
|
genericAPI: function (model, action, options) {
|
||||||
let setup = getConfig(model, action)
|
let setup = getConfig(model, action)
|
||||||
if (setup?.config?.function) {
|
if (setup?.config?.function) {
|
||||||
|
Loading…
Reference in New Issue
Block a user