tools.win_pg_dump_controller
2022-07-11
Parent:a38a008ce3e8
tools.win_pg_dump_controller/win_pg_dump_controller/store_controller.py
.. import D6
1.1 --- a/win_pg_dump_controller/store_controller.py Mon Jun 13 19:14:44 2022 +0300 1.2 +++ b/win_pg_dump_controller/store_controller.py Mon Jul 11 22:36:06 2022 +0300 1.3 @@ -2,9 +2,11 @@ 1.4 1.5 import json 1.6 from datetime import datetime 1.7 -from os.path import exists, join as p_join, basename 1.8 +from os.path import exists, join as p_join 1.9 from os import remove as file_remove 1.10 from typing import Dict, List 1.11 +from dataclasses import dataclass, asdict 1.12 +from os import stat as f_stat 1.13 1.14 from .error import Error 1.15 from .config import DBTask 1.16 @@ -74,10 +76,18 @@ 1.17 ) 1.18 1.19 1.20 +@dataclass() 1.21 +class TaskStatus(object): 1.22 + status: bool = False 1.23 + size: int = 0 1.24 + time: int = 0 1.25 + 1.26 + 1.27 class StoreController(StoreControllerBase): 1.28 def __init__(self, task: DBTask): 1.29 self.task = task 1.30 self.index_name = self.get_filename(f'{task.name}.index') 1.31 + self.status_name = self.get_filename(f'{task.name}.status') 1.32 self.idx: Dict[int, IndexItem] = {} 1.33 self.op_adv_status = [] 1.34 1.35 @@ -128,6 +138,18 @@ 1.36 if item.is_exists(): 1.37 file_remove(item.get_path()) 1.38 1.39 + def status(self, last_status: bool): 1.40 + res = TaskStatus(status=last_status) 1.41 + 1.42 + for i in self.idx.values(): 1.43 + if res.time < i.time: 1.44 + res.time = i.time 1.45 + 1.46 + res.size += f_stat(i.get_path()).st_size 1.47 + 1.48 + with open(self.status_name, 'w') as OUT: 1.49 + json.dump(asdict(res), OUT) 1.50 + 1.51 def __iter__(self): 1.52 for i in sorted(self.idx, reverse=True): 1.53 yield self.idx[i]