From adf62f55407ac10542b43d23444b59e8370db618 Mon Sep 17 00:00:00 2001 From: Martin Aceto Date: Mon, 22 Jul 2024 19:23:40 -0400 Subject: [PATCH] Implementing FieldFilter --- functions/cwvtech/libs/queries.py | 36 ++++++++++++++----------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/functions/cwvtech/libs/queries.py b/functions/cwvtech/libs/queries.py index ae7b012..e395b03 100644 --- a/functions/cwvtech/libs/queries.py +++ b/functions/cwvtech/libs/queries.py @@ -1,35 +1,31 @@ import os -import json from google.cloud import firestore +from google.cloud.firestore_v1.base_query import FieldFilter from .result import Result from .utils import convert_to_array DB = firestore.Client(project=os.environ.get('PROJECT'), database=os.environ.get('DATABASE')) +TABLE = 'core_web_vitals' def list_data(params): - ref = DB.collection(u'core_web_vitals') - - query = ref - - if 'start' in params: - query = query.where('date', '>=', params['start']) - if 'end' in params: - query = query.where('date', '<=', params['end']) - - if 'geo' in params: - query = query.where('geo', '==', params['geo']) + technology_array = convert_to_array(params['technology']) + data = [] + + for technology in technology_array: + query = DB.collection(TABLE) - if 'technology' in params: - params_array = convert_to_array(params['technology']) - query = query.where('technology', 'in', params_array) + if 'start' in params: + query = query.where('date', '>=', params['start']) + if 'end' in params: + query = query.where('date', '<=', params['end']) - if 'rank' in params: + query = query.where('geo', '==', params['geo']) query = query.where('rank', '==', params['rank']) + query = query.where(filter=FieldFilter('technology', '==', technology)) - documents = query.stream() + documents = query.stream() - data = [] - for doc in documents: - data.append(doc.to_dict()) + for doc in documents: + data.append(doc.to_dict()) return Result(result=data)