import logging import os from enum import Enum from utilsv2 import mongo, stats from utilsv2.log import logger from utilsv2.parser import parse from utilsv2.utils import toDateTime, toFloat, toInt OS = os.name MAIN_MENU = { "1": "Adicionar novos dados", "2": "Aplicar filtros", "3": "Estatísticas", "4": "Limpar filtros", "q": "Sair", } FILTER_MENU = { "1": "Data início", "2": "Magnitudes", "3": "Profundidade", "4": "GAP", "6": "Limpar filtros", "7": "Mostrar filtros", "q": "Voltar ao menu principal", } def clear_screen(): os.system("cls" if OS == "nt" else "clear") def print_menu(menu: dict[str, str]): clear_screen() for k, v in menu.items(): print(f"[{k}]: {v}") def filter_menu(old_fiters): filters = old_fiters while True: print_menu(FILTER_MENU) usrIn = input() match usrIn: # datas case "1": clear_screen() print( "Formato da data: YYYY-MM-DD\nInserir datas de corte, separadas por uma vírgula(,)" ) aux = input() d1, d2 = aux.split(",", maxsplit=1) d1 = toDateTime(d1) d2 = toDateTime(d2) filters["DateTime"] = {} if d1 != -1: filters["DateTime"]["$gte"] = d1 if d2 != -1: filters["DateTime"]["$lte"] = d2 # magnitudes case "2": clear_screen() print("Inserir magnitudes de corte, separadas por uma vírgula(,)") aux = input() d1, d2 = aux.split(",", maxsplit=1) d1 = toFloat(d1) d2 = toFloat(d2) filters["Magnitudes.L.Magnitude"] = {} if d1 != -1: filters["Magnitudes.L.Magnitude"]["$gte"] = d1 if d2 != -1: filters["Magnitudes.L.Magnitude"]["$lte"] = d2 case "2": clear_screen() print("Inserir profundidades de corte, separadas por uma vírgula(,)") aux = input() d1, d2 = aux.split(",", maxsplit=1) d1 = toFloat(d1) d2 = toFloat(d2) filters["Depth"] = {} if d1 != -1: filters["Depth"]["$gte"] = d1 if d2 != -1: filters["Depth"]["$lte"] = d2 case "4": clear_screen() print("Inserir GAP") aux = input() gap = toInt(aux) if aux: filters["GAP"]["$lte"] = gap case "6": fliters = {} case "7": print(filters) case "q": return filters def graph_menu(): pass def main(): cli = mongo.connect("mongodb://localhost:27017") filters = {} while True: print_menu(MAIN_MENU) usrIn = input() match usrIn: case "1": raise NotImplementedError case "2": filters = filter_menu(filters) case "3": print(filters) v = mongo.filter_query(cli, "quakes", filters, "test") stats.calculate_stats(v, filters) input() case "q": break mongo.close(cli) if __name__ == "__main__": logger = logging.getLogger(__name__) # initialization logger.info("Started") main() logger.info("Ended")