tools.win_pg_dump_controller

Yohn Y. 2022-07-11 Parent:a38a008ce3e8

7:92c88f8fb6c9 Go to Latest

tools.win_pg_dump_controller/win_pg_dump_controller/store_controller.py

.. import D6

History
     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]