not working shit
This commit is contained in:
11
bot/app/db/base.py
Normal file
11
bot/app/db/base.py
Normal file
@ -0,0 +1,11 @@
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.exc import OperationalError
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from db.settings import Settings
|
||||
|
||||
engine = create_engine(Settings().uri)
|
||||
|
||||
Session = sessionmaker(bind=engine)
|
||||
|
||||
Base = declarative_base()
|
||||
64
bot/app/db/models.py
Normal file
64
bot/app/db/models.py
Normal file
@ -0,0 +1,64 @@
|
||||
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")
|
||||
fund_members = relationship("FundMember", backref="user")
|
||||
group_members = relationship("GroupMember", backref="user")
|
||||
|
||||
|
||||
class Group(Base):
|
||||
__tablename__ = "group"
|
||||
|
||||
id = Column(BigInteger, primary_key=True)
|
||||
|
||||
funds = relationship("Fund", backref="group")
|
||||
|
||||
group_members = relationship("GroupMember", backref="group")
|
||||
|
||||
|
||||
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)
|
||||
|
||||
users = relationship("FundMember", backref="fund")
|
||||
|
||||
|
||||
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)
|
||||
17
bot/app/db/settings.py
Normal file
17
bot/app/db/settings.py
Normal file
@ -0,0 +1,17 @@
|
||||
from dataclasses import dataclass
|
||||
import os
|
||||
|
||||
|
||||
@dataclass
|
||||
class Settings:
|
||||
dialect: str = os.getenv("DIALECT", "postgresql")
|
||||
driver: str = os.getenv("DRIVER", "psycopg2")
|
||||
user: str = os.getenv("USER", "user")
|
||||
password: str = os.getenv("PASSWORD", "password")
|
||||
db_name: str = os.getenv("DB_NAME", "db")
|
||||
host: str = os.getenv("HOST", "postgres")
|
||||
port: int = os.getenv("PORT", 5432)
|
||||
|
||||
@property
|
||||
def uri(self) -> str:
|
||||
return f"{self.dialect}+{self.driver}://{self.user}:{self.password}@{self.host}:{self.port}/{self.db_name}"
|
||||
Reference in New Issue
Block a user