not working shit

This commit is contained in:
2023-11-12 22:43:47 +03:00
commit 9f76abcfc4
10 changed files with 410 additions and 0 deletions
+11
View 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
View 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
View 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}"