added padding

This commit is contained in:
dm
2025-08-26 16:27:44 +03:00
parent 98aa13b5f2
commit 6f315d33a2

12
db.py
View File

@@ -4,6 +4,8 @@ from sqlalchemy import create_engine
from sqlalchemy.orm import Session, sessionmaker from sqlalchemy.orm import Session, sessionmaker
from sqlalchemy import select from sqlalchemy import select
PADDING = 5
engine = create_engine("sqlite:///example.db") engine = create_engine("sqlite:///example.db")
session = Session(bind=engine) session = Session(bind=engine)
@@ -22,19 +24,19 @@ class File(Base):
def __repr__(self): def __repr__(self):
return f"<File(id={self.id}, extension='{self.extension}', hash='{self.hash}')>" return f"<File(id={self.id}, extension='{self.extension}', hash='{self.hash}')>"
def to_base36(n: int) -> str: def to_base36(n: int, width: int) -> str:
if n < 0: if n < 0:
raise ValueError("Only non-negative integers supported") raise ValueError("Only non-negative integers supported")
chars = "0123456789abcdefghijklmnopqrstuvwxyz" chars = "0123456789abcdefghijklmnopqrstuvwxyz"
if n == 0: if n == 0:
return "0" return "0".rjust(width, "0")
result = [] result = []
while n > 0: while n > 0:
n, rem = divmod(n, 36) n, rem = divmod(n, 36)
result.append(chars[rem]) result.append(chars[rem])
return "".join(reversed(result)) return "".join(reversed(result)).rjust(width, "0")
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
@@ -55,7 +57,7 @@ def file_exists(size: int, hash_value: str) -> bool:
if existed_file is None: if existed_file is None:
return None return None
url = f"{to_base36(existed_file.id)}" url = f"{to_base36(existed_file.id, PADDING)}"
if existed_file.extension: if existed_file.extension:
url += f".{existed_file.extension}" url += f".{existed_file.extension}"
@@ -75,7 +77,7 @@ def add_file(filename: str, content_type, size: int, hash):
new_file.hash = hash new_file.hash = hash
db.add(new_file) db.add(new_file)
db.commit() db.commit()
url = f"{to_base36(new_file.id)}" url = f"{to_base36(new_file.id, PADDING)}"
if new_file.extension: if new_file.extension:
url += f".{new_file.extension}" url += f".{new_file.extension}"