Skip to content

Commit

Permalink
implementing more than 30 technologies
Browse files Browse the repository at this point in the history
  • Loading branch information
maceto committed Jul 23, 2024
1 parent f821101 commit faa083a
Showing 1 changed file with 24 additions and 19 deletions.
43 changes: 24 additions & 19 deletions functions/adoption/libs/queries.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,37 @@
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 = 'adoption'

def list_data(params):
ref = DB.collection(u'adoption')

query = ref
technology_array = convert_to_array(params['technology'])
data = []

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'])
if 'technology' in params:
params_array = convert_to_array(params['technology'])
query = query.where('technology', 'in', params_array)
if 'rank' in params:
query = query.where('rank', '==', params['rank'])
for technology in technology_array:
query = DB.collection(TABLE)

documents = query.stream()
if 'start' in params:
query = query.where(filter=FieldFilter('date', '>=', params['start']))

data = []
for doc in documents:
data.append(doc.to_dict())
if 'end' in params:
query = query.where(filter=FieldFilter('date', '<=', params['end']))

if 'geo' in params:
query = query.where(filter=FieldFilter('geo', '==', params['geo']))

if 'rank' in params:
query = query.where(filter=FieldFilter('rank', '==', params['rank']))

query = query.where(filter=FieldFilter('technology', '==', technology))

documents = query.stream()

for doc in documents:
data.append(doc.to_dict())

return Result(result=data)
return Result(result=data)

0 comments on commit faa083a

Please sign in to comment.