2023-03-07 16:42:34 +08:00
|
|
|
from typing import List
|
|
|
|
|
|
|
|
from Models.FileModel import UserFile
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from Schemas import FileSechemas
|
|
|
|
|
|
|
|
|
|
|
|
def get_file_by_md(db: Session, md: str):
|
|
|
|
item = db.query(UserFile).filter_by(md=md).first()
|
|
|
|
return item
|
|
|
|
|
|
|
|
|
|
|
|
def add_file(db: Session, data: FileSechemas.UserFileCreate):
|
|
|
|
new_file = UserFile(**data.dict())
|
|
|
|
db.add(new_file)
|
2023-04-17 17:00:29 +08:00
|
|
|
db.commit()
|
2023-03-07 16:42:34 +08:00
|
|
|
db.refresh(new_file)
|
|
|
|
return new_file
|
|
|
|
|
2023-04-04 17:08:38 +08:00
|
|
|
|
2023-03-07 16:42:34 +08:00
|
|
|
def file_query(db: Session, params: FileSechemas.UserFileQuery) -> (int, List[UserFile]):
|
|
|
|
query = db.query(UserFile)
|
|
|
|
if params.md:
|
|
|
|
query.filter(UserFile.md == params.md)
|
|
|
|
if params.name:
|
|
|
|
query.filter(UserFile.name.like(f'%{params.name}%'))
|
|
|
|
if params.user_id:
|
|
|
|
query.filter(UserFile.user_id == params.user_id)
|
|
|
|
if params.common_type:
|
|
|
|
query.filter(UserFile.common_type == params.common_type)
|
|
|
|
if params.mime_type:
|
|
|
|
query.filter(UserFile.mime_type == params.mime_type)
|
|
|
|
if params.file_url:
|
|
|
|
query.filter(UserFile.file_url == params.file_url)
|
|
|
|
count = query.count()
|
|
|
|
page = params.page
|
|
|
|
page_size = params.page_size
|
|
|
|
if page is not None and page_size is not None:
|
|
|
|
query = query.offset((page - 1) * page_size).limit(page_size).all()
|
|
|
|
return count, query
|