34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
"""Speicherkontingent je Workspace und Größe der DuckDB-Datei je Upload
|
|
|
|
Revision ID: 0015
|
|
Revises: 0014
|
|
Erstellt: 2026-10-22 12:33:38.744411
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision = '0015'
|
|
down_revision = '0014'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.add_column('uploads', sa.Column('stored_size', sa.BigInteger(), server_default='0', nullable=False))
|
|
op.add_column('workspaces', sa.Column('storage_limit_mb', sa.Integer(), nullable=True))
|
|
# Bestand: Größe der DuckDB-Datei, wenn sie hier liegt, sonst die Größe der hochgeladenen Datei
|
|
from app.core.config import get_settings
|
|
root = Path(get_settings().upload_dir)
|
|
connection = op.get_bind()
|
|
for upload_id, workspace_id, size in connection.execute(sa.text("SELECT id, workspace_id, size FROM uploads")):
|
|
path = root / str(workspace_id) / f"{upload_id}.duckdb"
|
|
stored = path.stat().st_size if path.is_file() else size
|
|
connection.execute(sa.text("UPDATE uploads SET stored_size = :s WHERE id = :i"), {"s": stored, "i": upload_id})
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column('workspaces', 'storage_limit_mb')
|
|
op.drop_column('uploads', 'stored_size')
|