mirror of https://gitlab.com/tildes/tildes.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
993 B
30 lines
993 B
"""Contains the UserGroupSettings class."""
|
|
|
|
from typing import Optional
|
|
|
|
from sqlalchemy import Column, ForeignKey, Integer, Text
|
|
from sqlalchemy.dialects.postgresql import ENUM
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from tildes.enums import TopicSortOption
|
|
from tildes.models import DatabaseModel
|
|
from tildes.models.group import Group
|
|
from tildes.models.user import User
|
|
|
|
|
|
class UserGroupSettings(DatabaseModel):
|
|
"""Model for a user's settings related to a specific group."""
|
|
|
|
__tablename__ = "user_group_settings"
|
|
|
|
user_id: int = Column(
|
|
Integer, ForeignKey("users.user_id"), nullable=False, primary_key=True
|
|
)
|
|
group_id: int = Column(
|
|
Integer, ForeignKey("groups.group_id"), nullable=False, primary_key=True
|
|
)
|
|
default_order: Optional[TopicSortOption] = Column(ENUM(TopicSortOption))
|
|
default_period: Optional[str] = Column(Text)
|
|
|
|
user: User = relationship("User", innerjoin=True)
|
|
group: Group = relationship("Group", innerjoin=True)
|