# Черновик Data Model Это черновик для будущих миграций PostgreSQL. Реальные таблицы добавим вместе с API. ## allowed_image_hosts ```text id hostname enabled description nullable created_at updated_at ``` Правила normalization: - lowercase; - без protocol; - без path; - без trailing slash; - без wildcard на первом этапе; - source URL должен быть `http` или `https`; - запрещены localhost, private IP, loopback, link-local. ## image_assets ```text id source_url source_host source_hash original_s3_key nullable status width nullable height nullable content_type nullable size_bytes nullable created_at updated_at ``` ## image_variants ```text id asset_id preset variant_hash format width height nullable quality s3_key status: pending | processing | ready | failed size_bytes nullable error nullable created_at updated_at last_accessed_at nullable ``` ## Unique constraints ```text allowed_image_hosts(hostname) image_assets(source_hash) image_variants(asset_id, variant_hash, format) ``` ## S3 layout ```text originals/{assetId}/source variants/{assetId}/{variantHash}.{format} ``` ## Presets Клиент не должен передавать произвольные трансформации. Сначала нужны ограниченные presets. Пример: ```text avatar: widths: 128, 256, 512 formats: avif, webp, jpg quality: 80 resize: fill card: widths: 320, 640, 960 formats: avif, webp, jpg quality: 80 resize: fit hero: widths: 1280, 1920 formats: avif, webp, jpg quality: 80 resize: fit ```