brewman/brewman/brewman/models/db_setting.py

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