Spaces:
Build error
Build error
Update src/firestore_db.py
Browse files- src/firestore_db.py +21 -5
src/firestore_db.py
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
from firebase_admin import credentials, firestore, initialize_app
|
2 |
from config.settings import Settings
|
3 |
from src.logger import logger
|
@@ -26,10 +27,26 @@ class FirestoreDB:
|
|
26 |
return [(doc.to_dict()["text"], doc.to_dict()["vector"]) for doc in self.documents.stream()]
|
27 |
|
28 |
def save_lottery(self, data):
|
29 |
-
#
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
def lottery_exists(self, key):
|
35 |
return bool(self.lottery.document(key).get().exists)
|
@@ -42,7 +59,6 @@ class FirestoreDB:
|
|
42 |
.stream()]
|
43 |
|
44 |
def get_lottery_by_date(self, dai, date):
|
45 |
-
# Tìm document gần đúng với ngày và đài
|
46 |
docs = [doc.to_dict() for doc in self.lottery
|
47 |
.where("dai", "==", dai)
|
48 |
.where("ngay", "==", date)
|
|
|
1 |
+
# File: src/firestore_db.py (đã chỉnh sửa)
|
2 |
from firebase_admin import credentials, firestore, initialize_app
|
3 |
from config.settings import Settings
|
4 |
from src.logger import logger
|
|
|
27 |
return [(doc.to_dict()["text"], doc.to_dict()["vector"]) for doc in self.documents.stream()]
|
28 |
|
29 |
def save_lottery(self, data):
|
30 |
+
# Kiểm tra trùng lặp dựa trên ngay và dai
|
31 |
+
ngay = data.get("ngay")
|
32 |
+
dai = data.get("dai")
|
33 |
+
if not all([ngay, dai]):
|
34 |
+
logger.error("Dữ liệu thiếu ngay hoặc dai")
|
35 |
+
return False
|
36 |
+
|
37 |
+
# Tạo query để kiểm tra document có cùng ngay và dai
|
38 |
+
query = self.lottery.where("ngay", "==", ngay).where("dai", "==", dai).limit(1).get()
|
39 |
+
exists = any(doc.exists for doc in query)
|
40 |
+
|
41 |
+
if not exists:
|
42 |
+
# Tạo key duy nhất nếu chưa tồn tại
|
43 |
+
key = f"{ngay}_{dai}_{datetime.now().strftime('%Y%m%d%H%M%S%f')}"
|
44 |
+
self.lottery.document(key).set(data)
|
45 |
+
logger.info(f"Đã lưu lottery: {key}")
|
46 |
+
return True
|
47 |
+
else:
|
48 |
+
logger.warning(f"Document với ngay={ngay} và dai={dai} đã tồn tại, bỏ qua lưu.")
|
49 |
+
return False
|
50 |
|
51 |
def lottery_exists(self, key):
|
52 |
return bool(self.lottery.document(key).get().exists)
|
|
|
59 |
.stream()]
|
60 |
|
61 |
def get_lottery_by_date(self, dai, date):
|
|
|
62 |
docs = [doc.to_dict() for doc in self.lottery
|
63 |
.where("dai", "==", dai)
|
64 |
.where("ngay", "==", date)
|