# backend/api/models.py

from django.db import models
from django.conf import settings

class LinkGroup(models.Model):
    owner = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='api_link_groups'
    )
    name = models.CharField(max_length=100)
    order = models.PositiveIntegerField(default=0)
    description = models.TextField(blank=True, null=True)
    icon = models.ImageField(
        upload_to='link_groups/',
        null=True,
        blank=True,
        help_text='Иконка группы ссылок'
    )
    
    # Новые поля для кастомизации
    header_color = models.CharField(
        max_length=7,
        default='#ffffff',
        help_text='Цвет заголовка группы (hex)'
    )
    background_image = models.ImageField(
        upload_to='group_backgrounds/',
        null=True,
        blank=True,
        help_text='Фоновое изображение группы'
    )
    is_expanded = models.BooleanField(
        default=True,
        help_text='Развернута ли группа по умолчанию'
    )
    display_style = models.CharField(
        max_length=20,
        choices=[
            ('list', 'Список'),
            ('grid', 'Сетка'),
            ('cards', 'Карточки'),
            ('compact', 'Компактный'),
            ('sidebar', 'Боковая панель'),
            ('masonry', 'Кладка'),
            ('timeline', 'Лента времени'),
            ('magazine', 'Журнальный'),
        ],
        default='list',
        help_text='Стиль отображения ссылок в группе'
    )
    
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    is_public = models.BooleanField(default=False)
    is_favorite = models.BooleanField(default=False)

    def __str__(self):
        return f"{self.owner.username} — {self.name}"


class Link(models.Model):
    owner = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        related_name='links'
    )
    group = models.ForeignKey(
        LinkGroup,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='links'
    )
    title = models.CharField(max_length=200)
    url = models.URLField()
    description = models.TextField(blank=True, null=True)
    icon = models.ImageField(
        upload_to='links/',
        null=True,
        blank=True,
        help_text='Иконка для этой ссылки'
    )
    order = models.PositiveIntegerField(default=0)

    def __str__(self):
        return self.title
