Spaces:
Sleeping
Sleeping
File size: 1,913 Bytes
9b38408 8430de7 aead3eb 8430de7 c10a05f 8430de7 |
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import os
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
from datetime import datetime
from dotenv import load_dotenv
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')
|