add migrations and switch to sqlalchemy

This commit is contained in:
CEF Server 2024-05-15 00:01:58 +00:00
parent 9c41144985
commit 9148e2068f
12 changed files with 358 additions and 63 deletions

View file

@ -4,17 +4,18 @@ from minio import Minio
import mimetypes
import re
from . import sql
from .auth import JWTBearer
from .sql import SessionMaker, Uploads
from . import util
import config
from datetime import datetime, timedelta
minioClient = Minio(
config.MINIO_ADDR,
access_key=config.MINIO_ACCESS_KEY,
secret_key=config.MINIO_SECRET_KEY,
).g
)
app = FastAPI()
app.add_middleware(
@ -34,12 +35,15 @@ async def upload(file: UploadFile, request: Request):
if len(spl) == 2:
safeFilename += "." + util.safeName.sub("_", spl[1])
sha = await util.SHA256(file)
if sql.SqlExecuteFetchOne("SELECT * FROM `uploads` WHERE `hash` = %s", sha):
sql.SqlExecute("UPDATE `uploads` SET `expiry` = (NOW() + INTERVAL 1 WEEK) WHERE `hash` = %s", sha)
session = SessionMaker()
if existing := session.query(Uploads).where(Uploads.hash == sha).first():
existing.expiry = datetime.now() + timedelta(days=7)
else:
mime = mimetypes.guess_type(safeFilename)
minioClient.put_object("uploads", sha, file.file, file.size, content_type=mime[0])
sql.SqlExecute("INSERT INTO `uploads`(`hash`) VALUES (%s)", sha)
up = Uploads(hash=sha)
session.add(up)
session.commit()
return {"url": f"https://{config.MINIO_ADDR}/uploads/{sha}/{safeFilename}"}