| 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 |
|
|