GalaxyTab commited on
Commit
900b8d5
·
1 Parent(s): 0b8124a

Added functionality to have at max 10 backups always the most up to date

Browse files
Files changed (1) hide show
  1. chat_application/main.py +27 -4
chat_application/main.py CHANGED
@@ -33,11 +33,12 @@ from datetime import datetime
33
 
34
  class datasetHandler():
35
 
36
- def __init__(self,hf_token,mongoDB_name):
37
  login(hf_token)
38
  self.api = HfApi(token = hf_token)
39
  self.DB_name = mongoDB_name
40
  self.timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
 
41
 
42
  def make_dump(self):
43
  try:
@@ -49,19 +50,40 @@ class datasetHandler():
49
 
50
  def upload_dump(self):
51
  try:
52
- upload_folder(folder_path="/tmp/mongoDBContents",path_in_repo=f"mongoDump_{self.timestamp}", repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
53
  return 0
54
  except Exception as e:
55
  print(e)
56
  return 1
57
 
58
- def list_items(self):
59
  all_files = self.api.list_repo_files(repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
60
- return all_files
 
 
 
 
 
 
 
 
 
 
61
 
 
 
 
 
 
 
 
62
  def dump_db(self):
63
  self.make_dump()
64
  self.upload_dump()
 
 
 
 
65
  # End database backup code
66
 
67
  #controls
@@ -472,6 +494,7 @@ def backup_mongo(time):
472
  token = os.getenv("HF_TOKEN")
473
  handler = datasetHandler(token , 'huggingFaceData')
474
  handler.dump_db()
 
475
  socketio.sleep(time)
476
 
477
  # Build the routes
 
33
 
34
  class datasetHandler():
35
 
36
+ def __init__(self,hf_token,mongoDB_name,max_dumps = 10):
37
  login(hf_token)
38
  self.api = HfApi(token = hf_token)
39
  self.DB_name = mongoDB_name
40
  self.timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
41
+ self.max_dumps = max_dumps
42
 
43
  def make_dump(self):
44
  try:
 
50
 
51
  def upload_dump(self):
52
  try:
53
+ upload_folder(folder_path="/tmp/mongoDBContents",path_in_repo=f"mongoDump_{self.timestamp}", repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
54
  return 0
55
  except Exception as e:
56
  print(e)
57
  return 1
58
 
59
+ def list_dumps(self):
60
  all_files = self.api.list_repo_files(repo_id="ProjectFrozone/MongoDBDumps", repo_type="dataset")
61
+ all_dirs = set([f[:f.index("/")] for f in all_files if "mongoDump_" in f])
62
+ dates = sorted([date[date.index("_") + 1:] for date in all_dirs])
63
+ return (all_dirs, dates)
64
+
65
+ def delete_dump(self,dump_name):
66
+ self.api.delete_folder(
67
+ repo_id="ProjectFrozone/MongoDBDumps",
68
+ path_in_repo=f"{dump_name}",
69
+ repo_type="dataset",
70
+ commit_message=f"Deleted {dump_name}"
71
+ )
72
 
73
+ def cleanup_dataset(self,dirs,dates):
74
+ if len(dates) > self.max_dumps:
75
+ to_remove = dirs[0]
76
+ self.delete_dump(to_remove)
77
+ return f"Deleted {to_remove}"
78
+ return "Nothing to delete"
79
+
80
  def dump_db(self):
81
  self.make_dump()
82
  self.upload_dump()
83
+
84
+ def clean(self):
85
+ dirs,dates = self.list_dumps()
86
+ print(self.cleanup_dataset(dirs,dates))
87
  # End database backup code
88
 
89
  #controls
 
494
  token = os.getenv("HF_TOKEN")
495
  handler = datasetHandler(token , 'huggingFaceData')
496
  handler.dump_db()
497
+ handler.clean()
498
  socketio.sleep(time)
499
 
500
  # Build the routes