59 lines
1.8 KiB
Python
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
|