Добавлены новые функции для работы с промокодами в integration_api.py, включая создание и получение промокодов для Telegram-агентов. Обновлены модели и добавлен новый файл generate_sql.py для генерации SQL-скрипта создания таблиц. Обновлены fill_db.py для генерации промокодов при заполнении базы данных. Также обновлены sql_models.py для добавления модели PromoCode и соответствующих связей. Улучшена структура кода и добавлены отладочные сообщения.
This commit is contained in:
@@ -15,6 +15,11 @@ class Company(SQLModel, table=True):
|
||||
auto_approve_transactions: bool = Field(default=False) # Отвечает за автоматическое одобрение агентских транзакций на вывод.
|
||||
|
||||
integration_tokens: List["IntegrationToken"] = Relationship(back_populates="company")
|
||||
tg_agents: List["TgAgent"] = Relationship(back_populates="company")
|
||||
sales: List["Sale"] = Relationship(back_populates="company")
|
||||
partner_transactions: List["PartnerTransaction"] = Relationship(back_populates="company")
|
||||
company_balance: Optional["CompanyBalance"] = Relationship(back_populates="company")
|
||||
accounts: List["Account"] = Relationship(back_populates="company")
|
||||
|
||||
class TgAgent(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
@@ -28,6 +33,12 @@ class TgAgent(SQLModel, table=True):
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
company: "Company" = Relationship(back_populates="tg_agents")
|
||||
refs: List["Ref"] = Relationship(back_populates="tg_agent")
|
||||
agent_transactions: List["AgentTransaction"] = Relationship(back_populates="tg_agent")
|
||||
agent_balance: Optional["AgentBalance"] = Relationship(back_populates="tg_agent")
|
||||
promocodes: List["PromoCode"] = Relationship(back_populates="agent")
|
||||
|
||||
class Ref(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
tg_agent_id: int = Field(foreign_key="tgagent.id")
|
||||
@@ -36,6 +47,9 @@ class Ref(SQLModel, table=True):
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
tg_agent: "TgAgent" = Relationship(back_populates="refs")
|
||||
sales: List["Sale"] = Relationship(back_populates="ref_obj")
|
||||
|
||||
class Sale(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
cost: float
|
||||
@@ -47,6 +61,9 @@ class Sale(SQLModel, table=True):
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
ref_obj: "Ref" = Relationship(back_populates="sales")
|
||||
company: "Company" = Relationship(back_populates="sales")
|
||||
|
||||
class AgentTransaction(SQLModel, table=True):
|
||||
__tablename__ = "agent_transactions"
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
@@ -57,6 +74,9 @@ class AgentTransaction(SQLModel, table=True):
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
tg_agent: "TgAgent" = Relationship(back_populates="agent_transactions")
|
||||
partner_transactions: List["PartnerTransaction"] = Relationship(back_populates="agent_transaction")
|
||||
|
||||
class PartnerTransaction(SQLModel, table=True):
|
||||
__tablename__ = "partner_transactions"
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
@@ -69,6 +89,9 @@ class PartnerTransaction(SQLModel, table=True):
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
company: "Company" = Relationship(back_populates="partner_transactions")
|
||||
agent_transaction: Optional["AgentTransaction"] = Relationship(back_populates="partner_transactions")
|
||||
|
||||
class CompanyBalance(SQLModel, table=True):
|
||||
__tablename__ = "company_balances"
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
@@ -77,6 +100,8 @@ class CompanyBalance(SQLModel, table=True):
|
||||
pending_balance: float = Field(default=0.0)
|
||||
updated_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
company: "Company" = Relationship(back_populates="company_balance")
|
||||
|
||||
class AgentBalance(SQLModel, table=True):
|
||||
__tablename__ = "agent_balances"
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
@@ -85,6 +110,8 @@ class AgentBalance(SQLModel, table=True):
|
||||
frozen_balance: float = Field(default=0.0)
|
||||
updated_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
tg_agent: "TgAgent" = Relationship(back_populates="agent_balance")
|
||||
|
||||
class Account(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
login: str = Field(index=True, unique=True)
|
||||
@@ -97,6 +124,8 @@ class Account(SQLModel, table=True):
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
company: "Company" = Relationship(back_populates="accounts")
|
||||
|
||||
# Новая модель для интеграционных токенов
|
||||
class IntegrationToken(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
@@ -108,4 +137,15 @@ class IntegrationToken(SQLModel, table=True):
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow, nullable=False)
|
||||
use_dttm: Optional[datetime] = None
|
||||
|
||||
company: Company = Relationship(back_populates="integration_tokens")
|
||||
company: "Company" = Relationship(back_populates="integration_tokens")
|
||||
|
||||
class PromoCode(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
promocode: str = Field(index=True, unique=True)
|
||||
perc: float = Field(default=10.0)
|
||||
agent_id: int = Field(foreign_key="tgagent.id")
|
||||
description: Optional[str] = None
|
||||
create_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
update_dttm: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
agent: "TgAgent" = Relationship(back_populates="promocodes")
|
||||
Reference in New Issue
Block a user