"""
This module contains a basic Setting Model
"""
from datetime import datetime
from sqlalchemy.orm import Mapped, mapped_column
from .base import BaseModel
from .service.annotated_types import str_016
from .service.table_names import T_NAME_SETTINGS
[docs]
class BaseSetting(BaseModel):
"""Base Setting's DB Model
Describes a table structure for storing dictionary settings.
<details><summary>Show Examples</summary><p>
```python
{'id': 1, 'last_word_id': 10141,
'date': datetime.datetime(2020, 10, 25, 5, 10, 20),
'db_release': '4.5.9', 'db_version': 2}
```
</p></details>
"""
__tablename__ = T_NAME_SETTINGS
def __init__(
self,
date: Mapped[datetime],
db_version: Mapped[int],
last_word_id: Mapped[int],
db_release: Mapped[str_016],
):
super().__init__()
self.date = date
self.db_version = db_version
self.last_word_id = last_word_id
self.db_release = db_release
[docs]
def __str__(self):
"""
Returns:
"""
return (
f"<{self.__class__.__name__}"
f"{' ID ' + str(self.id) + ' ' if self.id else ' '}"
f"db version {self.db_version} (release {self.db_release})>"
)
date: Mapped[datetime] = mapped_column(nullable=False, unique=True)
"""*Last modified date*
**dateime.datetime** : nullable=False, unique=True"""
db_version: Mapped[int] = mapped_column(nullable=False)
"""*Database version (for old application)*
**int** : nullable=False, unique=False"""
last_word_id: Mapped[int] = mapped_column(nullable=False)
"""*ID number of the last word in DB*
**int** : nullable=False, unique=False"""
db_release: Mapped[str_016] = mapped_column(nullable=False)
"""*Database release (for new application)*
**str** : max_length=16, nullable=False, unique=True"""