File size: 1,375 Bytes
d91bbbb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Text
from sqlalchemy.orm import relationship
from datetime import datetime, timezone
from .database import Base


class User(Base):
    __tablename__ = "users"

    id               = Column(Integer, primary_key=True, index=True)
    username         = Column(String(64),  unique=True, index=True, nullable=False)
    email            = Column(String(255), unique=True, index=True, nullable=False)
    hashed_password  = Column(String(255), nullable=False)
    created_at       = Column(DateTime, default=lambda: datetime.now(timezone.utc))

    proxies = relationship("ProxyConfig", back_populates="owner", cascade="all, delete-orphan")


class ProxyConfig(Base):
    __tablename__ = "proxy_configs"

    id                = Column(Integer, primary_key=True, index=True)
    user_id           = Column(Integer, ForeignKey("users.id"), nullable=False)
    proxy_token       = Column(String(64), unique=True, index=True, nullable=False)
    name              = Column(String(128), nullable=False)
    openai_base_url   = Column(String(512), nullable=False)
    encrypted_api_key = Column(Text, nullable=False)
    model_mapping     = Column(Text, default="{}")
    created_at        = Column(DateTime, default=lambda: datetime.now(timezone.utc))

    owner = relationship("User", back_populates="proxies")