Anothervin1 commited on
Commit
1b7c7bc
·
verified ·
1 Parent(s): 1281c2f

Update src/firestore_db.py

Browse files
Files changed (1) hide show
  1. 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
- # Tạo key duy nhất với timestamp để tránh ghi đè
30
- key = f"{data['ngay']}_{data['dai']}_{datetime.now().strftime('%Y%m%d%H%M%S%f')}"
31
- self.lottery.document(key).set(data)
32
- logger.info(f"Đã lưu lottery: {key}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 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)