summaryrefslogtreecommitdiff
path: root/src/pyssg/database_entry.py
blob: 3fec92a2a648e2e48cd8331fac36d09173bfd266 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from typing import Union
from logging import Logger, getLogger

log: Logger = getLogger(__name__)


class DatabaseEntry:
    # not specifying the type of "list" as it could be only str
    #   or the actual values
    def __init__(self, entry: list) -> None:
        self.fname: str = entry[0]
        self.ctimestamp: float = float(entry[1])
        self.mtimestamp: float = float(entry[2])
        self.checksum: str = entry[3]
        self.tags: list[str]

        if isinstance(entry[4], list):
            self.tags = entry[4]
        else:
            if entry[4] == '-':
                self.tags = []
            else:
                self.tags = entry[4].split(',')

        log.debug('tag content: [%s]', ', '.join(self.tags))


    def __str__(self) -> str:
        _return_str: str = '[{}, {}, {}, {}, [{}]]'\
                .format(self.fname,
                        self.ctimestamp,
                        self.mtimestamp,
                        self.checksum,
                        ', '.join(self.tags))
        return _return_str


    def get_raw_entry(self) -> list[str]:
        return [self.fname,
                str(self.ctimestamp),
                str(self.mtimestamp),
                self.checksum,
                ','.join(self.tags) if self.tags else '-']


    def update_tags(self, new_tags: list[str]) -> None:
        self.tags = new_tags