Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. from pymongo import MongoClient
  2. from utils import *
  3. from files.config import *
  4.  
  5. import logging
  6.  
  7. logging.basicConfig(
  8.     filename="logs/{}.log".format(get_time()),
  9.     filemode="w",
  10.     level="DEBUG",
  11.     format="[%(asctime)s %(levelname)s] %(message)s"
  12. )
  13. log = logging.getLogger("VKBot")
  14.  
  15.  
  16. class Database:
  17.  
  18.     DATE: str = get_time(False)
  19.     __URL: str = "mongodb+srv://test:test123@cluster0-vzzgu.mongodb.net/test?retryWrites=true&w=majority"
  20.  
  21.     def __init__(self):
  22.         self.con: MongoClient = MongoClient(self.__URL)
  23.         self.db = self.con["support"]
  24.         self.col = self.db["stats"]
  25.         log.info("Connected to Database!")
  26.         self.__load()
  27.         if self.DATE not in stats.keys():
  28.             self.update_date()
  29.         stats[self.DATE]['messages'] += 10
  30.  
  31.     def __load(self):
  32.         """ @Protected method.
  33.        Loads all data from collection.
  34.        :return: -> None
  35.        """
  36.         for i in self.col.find({}).sort([("_id", -1)]):
  37.             stats.update({i["_id"]: {
  38.                 **i
  39.             }})
  40.             stats[i["_id"]].pop("_id")
  41.  
  42.     def update_stats(self):
  43.         """ Updates collection stats
  44.        every 5 minutes.
  45.        :return:
  46.        """
  47.         self.col.update(
  48.             {"_id": self.DATE},
  49.             {"$set": {**stats[self.DATE]}}
  50.         )
  51.  
  52.     def update_date(self):
  53.         """ Inserts new date
  54.        every 00:00 (GMT+3)
  55.        :return:
  56.        """
  57.         dialogs.clear()
  58.         self.DATE = get_time(False)
  59.         query = {
  60.             '_id': self.DATE,
  61.             'messages': 0,
  62.             'symbols': 0,
  63.             'dialogs': 0,
  64.             'photo': 0,
  65.             'video': 0,
  66.             'stickers': 0,
  67.             'buttons': 0,
  68.             'smiles': 0,
  69.             'swears': 0
  70.         }
  71.         self.col.insert(query)
  72.         stats.update({self.DATE: {
  73.             **query
  74.         }})
  75.         stats[self.DATE].pop("_id")
  76.         log.info(f"Updated collection. Added date: {self.DATE}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement