Skip to content

Commit 3a448e9

Browse files
committed
Move teams and user_teams into shared/models
1 parent 6594be6 commit 3a448e9

File tree

5 files changed

+27
-25
lines changed

5 files changed

+27
-25
lines changed

transformerlab/models/users.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
from fastapi_users import BaseUserManager, FastAPIUsers, UUIDIDMixin, schemas
66
from fastapi_users.authentication import AuthenticationBackend, BearerTransport, JWTStrategy
77
from fastapi_users.db import SQLAlchemyUserDatabase
8-
from transformerlab.shared.models.user_model import User, get_async_session, create_default_team, UserTeam
8+
from transformerlab.shared.models.user_model import User, get_async_session, create_default_team
9+
from transformerlab.shared.models.models import UserTeam
910
from sqlalchemy.ext.asyncio import AsyncSession
1011
from jose import jwt as _jose_jwt
1112
from datetime import datetime, timedelta

transformerlab/routers/auth2.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from fastapi import APIRouter, Depends, HTTPException
2-
from transformerlab.shared.models.user_model import User, Team, UserTeam, get_async_session, create_default_team
2+
from transformerlab.shared.models.user_model import User, get_async_session, create_default_team
3+
from transformerlab.shared.models.models import Team, UserTeam
34
from transformerlab.models.users import (
45
fastapi_users,
56
auth_backend,

transformerlab/routers/teams.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from fastapi import APIRouter, Depends, HTTPException
22
from sqlalchemy.ext.asyncio import AsyncSession
3-
from transformerlab.shared.models.user_model import User, Team, UserTeam, get_async_session
3+
from transformerlab.shared.models.user_model import User, get_async_session
4+
from transformerlab.shared.models.models import Team, UserTeam
45
from transformerlab.models.users import current_active_user
56
from pydantic import BaseModel
67
from sqlalchemy import select, delete, update

transformerlab/shared/models/models.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import Optional
2-
from sqlalchemy import String, JSON, DateTime, func, Integer, Index
2+
from sqlalchemy import String, JSON, DateTime, func, Integer, Index, ForeignKey
33
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
4+
import uuid
45

56

67
class Base(DeclarativeBase):
@@ -82,3 +83,20 @@ class WorkflowRun(Base):
8283
updated_at: Mapped[DateTime] = mapped_column(
8384
DateTime, server_default=func.now(), onupdate=func.now(), nullable=False
8485
)
86+
87+
class Team(Base):
88+
"""Team model."""
89+
90+
__tablename__ = "teams"
91+
92+
id: Mapped[str] = mapped_column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
93+
name: Mapped[str] = mapped_column(String, nullable=False)
94+
95+
96+
class UserTeam(Base):
97+
"""User-Team association model."""
98+
99+
__tablename__ = "users_teams"
100+
101+
user_id: Mapped[str] = mapped_column(String, ForeignKey("user.id"), primary_key=True)
102+
team_id: Mapped[str] = mapped_column(String, ForeignKey("teams.id"), primary_key=True)

transformerlab/shared/models/user_model.py

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,20 @@
11
# database.py
22
from typing import AsyncGenerator
33
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
4-
from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base
54
from sqlalchemy.orm import sessionmaker
65
from fastapi_users.db import SQLAlchemyBaseUserTableUUID
7-
from sqlalchemy import Column, String, ForeignKey, select
8-
import uuid
6+
from sqlalchemy import select
97

108
# Replace with your actual database URL (e.g., PostgreSQL, SQLite)
119
from transformerlab.db.constants import DATABASE_URL
12-
13-
Base: DeclarativeMeta = declarative_base()
10+
from .models import Base, Team
1411

1512

1613
# 1. Define your User Model (inherits from a FastAPI Users base class)
1714
class User(SQLAlchemyBaseUserTableUUID, Base):
1815
pass # You can add custom fields here later, like 'first_name: str'
1916

2017

21-
# 2. Define Team Model
22-
class Team(Base):
23-
__tablename__ = "teams"
24-
25-
id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
26-
name = Column(String, nullable=False)
27-
28-
29-
# 3. Define User-Team Association Model
30-
class UserTeam(Base):
31-
__tablename__ = "users_teams"
32-
33-
user_id = Column(String, ForeignKey("user.id"), primary_key=True)
34-
team_id = Column(String, ForeignKey("teams.id"), primary_key=True)
35-
36-
3718
# 2. Setup the Async Engine and Session
3819
engine = create_async_engine(DATABASE_URL)
3920
AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

0 commit comments

Comments
 (0)