40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import uuid
|
|
|
|
from datetime import date
|
|
from typing import Optional
|
|
|
|
from sqlalchemy import Column, Date, Enum, PickleType, Unicode
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
|
|
from .meta import Base
|
|
from .setting_type import SettingType
|
|
|
|
|
|
class DbSetting(Base):
|
|
__tablename__ = "settings"
|
|
|
|
id: uuid.UUID = Column("id", UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
|
name: str = Column("name", Unicode(255), unique=True, nullable=False)
|
|
data: dict = Column("data", PickleType)
|
|
setting_type: SettingType = Column("setting_type", Enum(SettingType), nullable=False)
|
|
|
|
valid_from: Optional[date] = Column("valid_from", Date(), nullable=True)
|
|
valid_till: Optional[date] = Column("valid_till", Date(), nullable=True)
|
|
|
|
def __init__(
|
|
self,
|
|
setting_type: SettingType,
|
|
name: str,
|
|
data: dict,
|
|
valid_from: Optional[date] = None,
|
|
valid_till: Optional[date] = None,
|
|
id_: Optional[uuid.UUID] = None,
|
|
) -> None:
|
|
if id_ is not None:
|
|
self.id = id_
|
|
self.setting_type = setting_type
|
|
self.name = name
|
|
self.data = data
|
|
self.valid_from = valid_from
|
|
self.valid_till = valid_till
|