from djongo import models
from accounts.models import Usuario
from bson import ObjectId

class JWTToken(models.Model):
    
    token_type_choices = (
        ('access', 'Access'),
        ('refresh', 'Refresh'),
    )
    
    id = models.ObjectIdField(db_column='_id', primary_key=True, editable=False)
    user = models.ArrayReferenceField(to=Usuario, default=None)
    token = models.TextField(default=None)
    token_type = models.CharField(max_length=255, choices=token_type_choices, default='access')
    created_at = models.DateTimeField(auto_now_add=True)
    expires = models.DateTimeField(default=None)
    blacklisted = models.BooleanField(default=False)
    blacklisted_at = models.DateTimeField(default=None)

    # def __str__(self):
    #     user_email = []
    #     for user_id in self.user_id:
    #         user_email.append(Usuario.objects.get(id=ObjectId(user_id)).email)
    #     return f"{user_email[0]} - {self.created_at}"
    
    class Meta:
        verbose_name = 'JWT Token'
        verbose_name_plural = 'JWT Tokens'
        app_label = 'auth_app'
    
    objects = models.DjongoManager()
    
    
# class UserAccess(models.Model):
#     access_type_choices = (
#         ('login', 'Login'),
#         ('logout', 'Logout'),
#         ('check', 'Check'),
#         ('refresh', 'Refresh'),
#     )
    
#     id = models.ObjectIdField(db_column='_id', primary_key=True, editable=False)
#     user = models.ArrayReferenceField(to=Usuario, default=None)
#     user_email = models.CharField(max_length=255, default=None)
#     date = models.DateTimeField(auto_now_add=True)
#     access_type = models.CharField(max_length=255, choices=access_type_choices, default='login')
    
#     def __str__(self):
#         return f"{self.user_email} - {self.date}"
    
#     class Meta:
#         verbose_name = 'User Access'
#         verbose_name_plural = 'User Access'
#         app_label = 'auth_app'
    
#     objects = models.DjongoManager()



# class JustAnyData(models.Model):
#     id = models.ObjectIdField(db_column='_id', primary_key=True, editable=False)
#     text = models.CharField(max_length=255)
#     created = models.DateTimeField(auto_now_add=True)
    
#     class Meta:
#         verbose_name = 'Just Any Data'
#         verbose_name_plural = 'Just Any Data'
#         app_label = 'auth_app'
    
#     objects = models.DjongoManager()