init commit

This commit is contained in:
prod-tech
2024-11-17 02:31:42 +03:00
commit cf933c770c
217 changed files with 19340 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
from sqlalchemy import BigInteger
from sqlalchemy import Column
from sqlmodel import create_engine
from sqlmodel import Field
from sqlmodel import Relationship
from sqlmodel import Session
from sqlmodel import SQLModel
from app.core.config import config
from .links import ItemUserLink
class User(SQLModel, table=True):
id: int = Field(sa_column=Column(BigInteger(), primary_key=True))
username: str = Field(nullable=False)
events: list['Event'] = Relationship(back_populates='users')
items: list['Item'] = Relationship(
back_populates='assigned_to', link_model=ItemUserLink
)
transactions: list['Transaction'] = Relationship(back_populates='payer')
async def get_or_create_user(self):
engine = create_engine(url=config.DATABASE_URL)
with Session(engine) as session:
user = session.get(User, self.id)
if not user:
user = User(
id=self.id,
username=self.username,
)
session.add(user)
session.commit()
session.refresh(user)
return user