from django.db import models


class AppliedEngineResponse(models.Model):
    class Outcome(models.TextChoices):
        APPLIED = "applied", "Applied"
        NO_CHANGES = "no_changes", "No changes"

    request_id = models.CharField(max_length=190, unique=True)
    response_hash = models.CharField(max_length=64)
    protocol_version = models.CharField(max_length=32, default="1")
    change_set_id = models.UUIDField(db_index=True)
    outcome = models.CharField(max_length=24, choices=Outcome.choices, default=Outcome.APPLIED)
    response_received_at = models.DateTimeField(null=True, blank=True)
    applied_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "applied_engine_response"

    def __str__(self):
        return f"{self.request_id}:{self.response_hash[:12]}"
