File size: 1,368 Bytes
bf41ce7 e8a6b78 bf41ce7 38d2586 bf41ce7 1fac9b0 bf41ce7 e8a6b78 38d2586 e8a6b78 38d2586 bf41ce7 e8a6b78 bf41ce7 e8a6b78 bf41ce7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | from os import remove
from typing import Any
import firebase_admin
from firebase_admin import firestore
from Brain.src.model.feedback_model import FeedbackModel
"""service to manage feedback collection"""
class FeedbackService:
db: Any
feedbacks_ref: Any
def __init__(self, firebase_app: firebase_admin.App):
self.firebase_app = firebase_app
def init_firestore(self):
self.db = firestore.client(app=self.firebase_app)
self.feedbacks_ref = self.db.collection("feedbacks")
"""add a new feedback"""
def add(self, feedback: FeedbackModel):
self.init_firestore()
return self.feedbacks_ref.document().set(feedback.to_json())
"""get list of feedback"""
def get(self, search, rating):
self.init_firestore()
if rating == 0:
query = self.feedbacks_ref.where("rating", "!=", rating)
else:
query = self.feedbacks_ref.where("rating", "==", rating)
if search.replace(" ", "") != "":
query = query.where("prompt.message", ">=", search).where(
"prompt.message", "<=", search + "~"
)
docs = query.stream()
result = []
for item in docs:
item_data = item.to_dict()
result.append({"id": item.id, "data": item_data})
print(result)
return result
|