from django.db import models

from accounts.models import Workspace


class TimestampedModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True


class Rule(TimestampedModel):
    workspace = models.ForeignKey(Workspace, on_delete=models.CASCADE, related_name="rules")
    name = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    predicate = models.JSONField(default=dict, blank=True)
    action = models.CharField(max_length=200)
    action_params = models.JSONField(default=dict, blank=True)
    priority = models.IntegerField(default=0)
    is_enabled = models.BooleanField(default=True)

    class Meta:
        ordering = ["-priority", "id"]

    def __str__(self) -> str:
        return self.name
