Files
waterfundbot/bot/app/db/models.py
2023-11-14 16:15:21 +03:00

65 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, BigInteger, ForeignKey, Boolean
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship, backref
import uuid
from db.base import Base
from datetime import date
class User(Base):
__tablename__ = "user"
id = Column(BigInteger, primary_key=True)
name = Column(String(64))
username = Column(String(32))
owns_funds = relationship("Fund", backref="owner", lazy="dynamic")
fund_members = relationship("FundMember", backref="user", lazy="dynamic")
group_members = relationship("GroupMember", backref="user", lazy="dynamic")
class Group(Base):
__tablename__ = "group"
id = Column(BigInteger, primary_key=True)
funds = relationship("Fund", backref="group", lazy="dynamic")
group_members = relationship("GroupMember", backref="group", lazy="dynamic")
class GroupMember(Base):
__tablename__ = "groupmember"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id = Column(BigInteger, ForeignKey("user.id"))
group_id = Column(BigInteger, ForeignKey("group.id"))
class Fund(Base):
__tablename__ = "fund"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name = Column(
String(40), default="Сбор {date}".format(date=date.today().strftime("%d.%m"))
)
description = Column(String(120), default=None)
owner_id = Column(BigInteger, ForeignKey("user.id"))
group_id = Column(BigInteger, ForeignKey("group.id"))
amount = Column(Integer)
active = Column(Boolean, default=True)
members = relationship("FundMember", backref="fund", lazy="dynamic")
class FundMember(Base):
__tablename__ = "fundmember"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id = Column(BigInteger, ForeignKey("user.id"))
fund_id = Column(UUID(as_uuid=True), ForeignKey("fund.id"))
contributed = Column(Boolean, default=False)