# Generated by Django 5.2 on 2025-07-04 14:19

import django.db.models.deletion
import hub.services.models.base
import hub.services.models.images
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ("services", "0039_article_article_date"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name="ImageLibrary",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "name",
                    models.CharField(
                        help_text="Descriptive name for the image", max_length=200
                    ),
                ),
                (
                    "slug",
                    models.SlugField(
                        help_text="URL-friendly version of the name",
                        max_length=250,
                        unique=True,
                    ),
                ),
                (
                    "description",
                    models.TextField(
                        blank=True, help_text="Optional description of the image"
                    ),
                ),
                (
                    "alt_text",
                    models.CharField(
                        help_text="Alternative text for accessibility", max_length=255
                    ),
                ),
                (
                    "image",
                    models.ImageField(
                        help_text="Upload image file (max 1MB)",
                        upload_to=hub.services.models.images.get_image_upload_path,
                        validators=[hub.services.models.base.validate_image_size],
                    ),
                ),
                (
                    "width",
                    models.PositiveIntegerField(
                        blank=True, help_text="Image width in pixels", null=True
                    ),
                ),
                (
                    "height",
                    models.PositiveIntegerField(
                        blank=True, help_text="Image height in pixels", null=True
                    ),
                ),
                (
                    "file_size",
                    models.PositiveIntegerField(
                        blank=True, help_text="File size in bytes", null=True
                    ),
                ),
                (
                    "category",
                    models.CharField(
                        choices=[
                            ("logo", "Logo"),
                            ("article", "Article Image"),
                            ("banner", "Banner"),
                            ("icon", "Icon"),
                            ("screenshot", "Screenshot"),
                            ("photo", "Photo"),
                            ("other", "Other"),
                        ],
                        default="other",
                        help_text="Category of the image",
                        max_length=20,
                    ),
                ),
                (
                    "tags",
                    models.CharField(
                        blank=True,
                        help_text="Comma-separated tags for searching",
                        max_length=500,
                    ),
                ),
                (
                    "uploaded_at",
                    models.DateTimeField(
                        auto_now_add=True,
                        help_text="Date and time when image was uploaded",
                    ),
                ),
                (
                    "updated_at",
                    models.DateTimeField(
                        auto_now=True,
                        help_text="Date and time when image was last updated",
                    ),
                ),
                (
                    "usage_count",
                    models.PositiveIntegerField(
                        default=0, help_text="Number of times this image is referenced"
                    ),
                ),
                (
                    "uploaded_by",
                    models.ForeignKey(
                        blank=True,
                        help_text="User who uploaded the image",
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
            options={
                "verbose_name": "Image",
                "verbose_name_plural": "Image Library",
                "ordering": ["-uploaded_at"],
            },
        ),
    ]
