from django.db import models from django.contrib.postgres.fields import ArrayField from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') global_bio = models.TextField(default='A friendly tutor') global_language = models.CharField(max_length=100, default='English') global_mcp_tools = ArrayField( models.CharField(max_length=200), default=list, blank=True ) global_timer = models.IntegerField(default=10) # in seconds def __str__(self): return f"Profile of {self.user.username}" class ChatSession(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='chats') chat_name = models.CharField(max_length=255, default='Nuova Chat') language = models.CharField(max_length=100, default='English') character_bio = models.TextField(default='A friendly tutor') summary = models.TextField(blank=True, null=True) mcp_tools = ArrayField( models.CharField(max_length=200), default=list, blank=True ) telegram_thread_id = models.BigIntegerField(null=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) reply_timer = models.IntegerField(default=10) # in seconds def __str__(self): return f"{self.chat_name} ({self.user.username})" class Meta: db_table = 'chat_sessions' class PendingMessage(models.Model): chat = models.ForeignKey(ChatSession, on_delete=models.CASCADE, related_name='messages') content = models.TextField() is_user = models.BooleanField(default=True) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return f"{'User' if self.is_user else 'AI'} on {self.chat.chat_name}" class Meta: db_table = 'pending_messages'