Files
multidrive-box/app/crud.py
Julian Freeman 85b97a626c add acounts
2025-07-03 19:18:36 -04:00

59 lines
1.8 KiB
Python

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