import json
from django.db import models

class RolePermission(models.Model):
    id = models.BigAutoField(primary_key=True)
    role = models.ForeignKey("api.Role", on_delete=models.CASCADE)
    permission = models.CharField(max_length=100)  # e.g. "view_report", "export_report"

    class Meta:
        db_table = "role_permission"
        constraints = [
            models.UniqueConstraint(fields=["role", "permission"], name="unique_role_permission")
        ]

    @staticmethod
    def bulk_insert(role_id, permissions: list[str]):
        existing = set(
            RolePermission.objects.filter(role_id=role_id)
            .values_list("permission", flat=True)
        )

        # remove exists permission
        new_permission = [val for val in permissions if val not in existing]

        objs = [
            RolePermission(role_id=role_id, permission=permission)
            for permission in new_permission
        ]
        return RolePermission.objects.bulk_create(objs)