import datetime

from django.db import models


def get_current_datetime() -> datetime.datetime:
    return datetime.datetime.now(tz=datetime.timezone.utc)


class InstagramPost(models.Model):
    """
    Model representing an Instgram post obtained from its API through the
    update_instagram management command.
    """

    remote_id = models.CharField(
        verbose_name="ID Postu",
        max_length=64,
        unique=True,
    )
    timestamp = models.DateTimeField(
        verbose_name="Datum a čas vytvoření", default=get_current_datetime
    )

    author_name = models.CharField(
        verbose_name="Jméno autora",
        max_length=64,
    )
    author_username = models.CharField(
        verbose_name="Username autora",
        max_length=64,
    )

    caption = models.TextField(
        verbose_name="Popis",
        blank=True,
        null=True,
    )
    image = models.ImageField(
        verbose_name="Obrázek",
        upload_to="instagram",
    )
    url = models.URLField(
        verbose_name="Odkaz",
        blank=True,
        null=True,
    )

    def __str__(self) -> str:
        return f"@{self.author_username} - {self.caption}"

    class Meta:
        ordering = ("timestamp",)