Spaces:
Running
Running
from users.models import User, UserEmbeddings | |
from fastapi.exceptions import HTTPException | |
from core.security import get_password_hash | |
from datetime import datetime | |
from sqlalchemy.orm import Session | |
from users.schemas import UserCreate, UserUpdate, UserEmbeddingsModel | |
async def create_user_account(data:UserCreate, db:Session): | |
user = db.query(User).filter(User.email == data.email).first() | |
if user: | |
raise HTTPException(status_code=422, detail="Email already registered") | |
new_user = User( | |
email=data.email, | |
first_name=data.first_name, | |
last_name=data.last_name, | |
age=data.age, | |
preferences=data.preferences, | |
password = get_password_hash(data.password), | |
registered_at=datetime.now(), | |
updated_at=datetime.now(), | |
) | |
db.add(new_user) | |
db.commit() | |
db.refresh(new_user) | |
return new_user | |
async def create_user_embeddings(user_id:int, embeddings:UserEmbeddingsModel, db:Session): | |
user = db.query(User).filter(User.id == user_id).first() | |
if not user: | |
embeddings = UserEmbeddings(user_id=user_id, embeddings=embeddings.embeddings) | |
db.add(embeddings) | |
db.commit() | |
db.refresh(embeddings) | |
return embeddings | |
def get_user_by_id(user_id, db:Session): | |
return db.query(User).filter(User.id == user_id).first() | |
def get_user_by_email(email, db:Session): | |
return db.query(User).filter(User.email == email).first() | |
def get_users(db:Session, skip=0, limit=100): | |
return db.query(User).offset(skip).limit(limit).all() | |
def update_user(db:Session, user_id:int, user:UserUpdate): | |
user = db.query(User).filter(User.id == user_id).first() | |
if user: | |
update_data = user.dict(exclude_unset=True) | |
if 'password' in update_data: | |
update_data['password'] = get_password_hash(update_data['password']) | |
del update_data['password'] | |
for key, value in update_data.items(): | |
setattr(user, key, value) | |
db.commit() | |
db.refresh(user) | |
return user | |
def delete_user(user_id, db:Session): | |
user = db.query(User).filter(User.id == user_id).first() | |
if user: | |
db.delete(user) | |
db.commit() | |
return user | |
return None | |
async def update_user_embeddings(user_id:int, embeddings:UserEmbeddingsModel, db:Session): | |
embeddings = db.query(UserEmbeddings).filter(UserEmbeddings.user_id == user_id).first() | |
if embeddings: | |
embeddings.embeddings = embeddings.embeddings | |
db.commit() | |
db.refresh(embeddings) | |
return embeddings | |
return None | |