add migrations and switch to sqlalchemy
This commit is contained in:
parent
9c41144985
commit
9148e2068f
12 changed files with 358 additions and 63 deletions
|
|
@ -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}"}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue