"""
Data model for journal-manager api.
"""
from danoan.toml_dataclass import TomlDataClassIO, TomlTableDataClassIO
from dataclasses import dataclass
from enum import Enum
from typing import List, Optional, TypeVar, Type, Dict, Any
[docs]class LogicOperator(Enum):
OR = 0
AND = 1
[docs]@dataclass
class Parameters(TomlDataClassIO):
default_text_editor_path: Optional[str] = None
[docs]@dataclass
class ConfigurationFile(TomlDataClassIO):
T = TypeVar("T", bound="ConfigurationFile")
default_journal_folder: str
default_template_folder: str
journal_data_filepath: str
template_data_filepath: str
parameters: Parameters
[docs] @classmethod
def from_dict(cls: Type[T], d: Dict[str, Any]) -> T:
d["parameters"] = Parameters(**d["parameters"])
return cls(**d)
[docs] def as_dict(self) -> Dict[str, Any]:
d = self.__dict__
d["parameters"] = d["parameters"].as_dict()
return d
[docs]@dataclass
class JournalData(TomlDataClassIO):
name: str
location_folder: str
active: bool
title: str
last_edit_date: str
[docs]@dataclass
class JournalDataList(TomlTableDataClassIO):
list_of_journal_data: List[JournalData]
[docs]@dataclass
class JournalTemplate(TomlDataClassIO):
name: str
filepath: str
[docs]@dataclass
class JournalTemplateList(TomlTableDataClassIO):
list_of_template_data: List[JournalTemplate]
[docs]@dataclass
class BuildInstructions(TomlDataClassIO):
build_location: Optional[str] = None
build_index: bool = True
build_inactive: bool = False
with_http_server: bool = False
journals_names_to_build: Optional[List[str]] = None
journals_locations_to_build: Optional[List[str]] = None
include_all_folder: Optional[str] = None