from django.db import models
from apps.business.distributor.models import DistributorID
from apps.business.schemes.models import OpportunityBundle

class PoolEntry(models.Model):
    distributor = models.ForeignKey(DistributorID, on_delete=models.CASCADE, related_name='pool_entries')
    global_position = models.PositiveIntegerField()
    opportunity_bundle = models.ForeignKey(OpportunityBundle, on_delete=models.CASCADE, related_name='pool_entries')
    amount = models.DecimalField(max_digits=12, decimal_places=2)
    reference_id = models.CharField(max_length=64, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['distributor'], name='unique_poolentry_per_distributor')
        ]
        ordering = ['-created_at']
        indexes = [
            models.Index(fields=['distributor']),
            models.Index(fields=['global_position']),
            models.Index(fields=['opportunity_bundle']),
            models.Index(fields=['created_at']),
        ]

    def __str__(self):
        return f"PoolEntry(distributor={self.distributor_id}, amount={self.amount})"