wordle-solver / rs_wordle_player /firebase_connector.py
santit96's picture
Fix code style with black and isort
c412087
import os
from datetime import datetime
import firebase_admin
from dotenv import load_dotenv
from firebase_admin import credentials, firestore
class FirebaseConnector:
def __init__(self):
load_dotenv()
cert_path = self.get_credentials_path()
cred = credentials.Certificate(cert_path)
firebase_admin.initialize_app(cred)
self.db = self.get_db()
def get_db(self):
db = firestore.client()
return db
def get_credentials_path(self):
credentials_path = os.getenv("RS_FIREBASE_CREDENTIALS_PATH")
return credentials_path
def get_user(self):
user = os.getenv("RS_WORDLE_USER")
return user
def get_state_from_fb_result(self, firebase_result):
result_number_map = {"incorrect": "0", "misplaced": "1", "correct": "2"}
char_result_map = map(
lambda char_res: result_number_map[char_res], firebase_result
)
return "".join(char_result_map)
def today(self):
return datetime.today().strftime("%Y%m%d")
def today_user_results(self):
daily_results_col = "dailyResults"
currentUser = self.get_user()
# Execute the query and get the first result
docs = (
self.db.collection(daily_results_col)
.where("user.email", "==", currentUser)
.where("date", "==", self.today())
.limit(1)
.get()
)
return docs
def today_user_attempts(self):
docs = self.today_user_results()
attempted_words = []
if len(docs) > 0:
doc = docs[0]
attempted_words = doc.to_dict().get("attemptedWords")
return attempted_words
def today_word(self):
words_col = "words"
doc = self.db.collection(words_col).document(self.today())
return doc.get().get("word")