from sqlalchemy.orm import Session from . import models, schemas def get_user(db: Session, user_id: int): return db.query(models.User).filter(models.User.id == user_id).first() def get_user_by_email(db: Session, email: str): return db.query(models.User).filter(models.User.email == email).first() def create_user(db: Session, user: schemas.UserCreate): db_user = models.User(email=user.email) db.add(db_user) db.commit() db.refresh(db_user) return db_user def get_account(db: Session, account_id: int): return db.query(models.Account).filter(models.Account.id == account_id).first() def get_accounts(db: Session, user_id: int): return db.query(models.Account).filter(models.Account.user_id == user_id).all() def create_account(db: Session, account: schemas.AccountCreate, user_id: int): db_account = models.Account(**account.dict(), user_id=user_id) db.add(db_account) db.commit() db.refresh(db_account) return db_account def get_file_by_token(db: Session, token: str): return db.query(models.File).filter(models.File.download_token == token).first() def create_file(db: Session, file: schemas.FileCreate, user_id: int, parts: list): db_file = models.File( user_id=user_id, filename=file.filename, original_size=file.original_size, sha256=file.sha256, download_token=file.download_token ) db.add(db_file) db.commit() db.refresh(db_file) for part_data in parts: db_part = models.FilePart( file_id=db_file.id, part_index=part_data['part_index'], size=part_data['size'], account_id=part_data['account_id'], drive_file_id=part_data['drive_file_id'], sha256=part_data['sha256'] ) db.add(db_part) db.commit() db.refresh(db_file) return db_file