555e282cc4
pi-agent-plugin checks / lint (push) Has been cancelled
pi-agent-plugin checks / test (20) (push) Has been cancelled
pi-agent-plugin checks / test (22) (push) Has been cancelled
pi-agent-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / check_changes (push) Has been cancelled
TypeScript SDK CI / changelog_check (push) Has been cancelled
ci / changelog_check (push) Has been cancelled
ci / check_changes (push) Has been cancelled
ci / build_mem0 (3.10) (push) Has been cancelled
ci / build_mem0 (3.11) (push) Has been cancelled
ci / build_mem0 (3.12) (push) Has been cancelled
CLI Node CI / lint (push) Has been cancelled
CLI Node CI / test (20) (push) Has been cancelled
CLI Node CI / test (22) (push) Has been cancelled
CLI Node CI / build (push) Has been cancelled
CLI Python CI / lint (push) Has been cancelled
CLI Python CI / test (3.10) (push) Has been cancelled
CLI Python CI / test (3.11) (push) Has been cancelled
CLI Python CI / test (3.12) (push) Has been cancelled
CLI Python CI / build (push) Has been cancelled
openclaw checks / lint (push) Has been cancelled
openclaw checks / test (20) (push) Has been cancelled
openclaw checks / test (22) (push) Has been cancelled
openclaw checks / build (push) Has been cancelled
opencode-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (22) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (22) (push) Has been cancelled
34 lines
1001 B
Python
34 lines
1001 B
Python
from typing import Tuple
|
|
|
|
from app.models import App, User
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
def get_or_create_user(db: Session, user_id: str) -> User:
|
|
"""Get or create a user with the given user_id"""
|
|
user = db.query(User).filter(User.user_id == user_id).first()
|
|
if not user:
|
|
user = User(user_id=user_id)
|
|
db.add(user)
|
|
db.commit()
|
|
db.refresh(user)
|
|
return user
|
|
|
|
|
|
def get_or_create_app(db: Session, user: User, app_id: str) -> App:
|
|
"""Get or create an app for the given user"""
|
|
app = db.query(App).filter(App.owner_id == user.id, App.name == app_id).first()
|
|
if not app:
|
|
app = App(owner_id=user.id, name=app_id)
|
|
db.add(app)
|
|
db.commit()
|
|
db.refresh(app)
|
|
return app
|
|
|
|
|
|
def get_user_and_app(db: Session, user_id: str, app_id: str) -> Tuple[User, App]:
|
|
"""Get or create both user and their app"""
|
|
user = get_or_create_user(db, user_id)
|
|
app = get_or_create_app(db, user, app_id)
|
|
return user, app
|