added .env + delete file + handle error when file didns saved but added to db

This commit is contained in:
dm
2025-08-26 20:11:01 +03:00
parent 0462921ee4
commit 53a5ce905b
5 changed files with 79 additions and 8 deletions

View File

@@ -4,9 +4,13 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import Session, sessionmaker
from sqlalchemy import select
PADDING = 5
from dotenv import load_dotenv
import os
load_dotenv()
PADDING = int(os.getenv("FILES_PADDING"))
DATABASE_NAME = os.getenv("DATABASE_NAME")
engine = create_engine("sqlite:///example.db")
engine = create_engine(f"sqlite:///{DATABASE_NAME}.db")
session = Session(bind=engine)
class Base(DeclarativeBase): pass
@@ -38,6 +42,22 @@ def to_base36(n: int, width: int) -> str:
result.append(chars[rem])
return "".join(reversed(result)).rjust(width, "0")
def from_base36(s: str) -> int:
chars = "0123456789abcdefghijklmnopqrstuvwxyz"
char_to_val = {c: i for i, c in enumerate(chars)}
s = s.lower().lstrip("0")
if not s:
return 0
n = 0
for ch in s:
if ch not in char_to_val:
raise ValueError(f"Invalid base36 character: {ch}")
n = n * 36 + char_to_val[ch]
return n
Base.metadata.create_all(bind=engine)
def get_all_files():
@@ -83,6 +103,17 @@ def add_file(filename: str, content_type, size: int, hash):
return url
def remove_file(file_url: str):
with Session(autoflush=False, bind=engine) as db:
file_id = from_base36(file_url.rsplit(".")[0])
file = db.get(File, file_id)
if not file:
return None
db.delete(file)
db.commit()
return True
if __name__ == "__main__":
for i in get_all_files():
print(f"{i.id} {i.name}.{i.extension} ({i.hash}) {i.content_type} {i.size}")