# Generated by Django 5.1.5 on 2025-03-10 11:38

import django.contrib.postgres.indexes
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
    initial = True

    dependencies = [
        ("core", "0001_initial"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name="order",
            name="user",
            field=models.ForeignKey(
                help_text="the user who placed the order",
                on_delete=django.db.models.deletion.CASCADE,
                related_name="orders",
                to=settings.AUTH_USER_MODEL,
                verbose_name="user",
            ),
        ),
        migrations.AddField(
            model_name="orderproduct",
            name="order",
            field=models.ForeignKey(
                help_text="reference to the parent order that contains this product",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="order_products",
                to="core.order",
                verbose_name="parent order",
            ),
        ),
        migrations.AddField(
            model_name="feedback",
            name="order_product",
            field=models.OneToOneField(
                help_text="references the specific product in an order that this feedback is about",
                on_delete=django.db.models.deletion.CASCADE,
                to="core.orderproduct",
                verbose_name="related order product",
            ),
        ),
        migrations.AddField(
            model_name="product",
            name="brand",
            field=models.ForeignKey(
                blank=True,
                help_text="optionally associate this product with a brand",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to="core.brand",
                verbose_name="brand",
            ),
        ),
        migrations.AddField(
            model_name="product",
            name="category",
            field=models.ForeignKey(
                help_text="category this product belongs to",
                on_delete=django.db.models.deletion.CASCADE,
                to="core.category",
                verbose_name="category",
            ),
        ),
        migrations.AddField(
            model_name="orderproduct",
            name="product",
            field=models.ForeignKey(
                blank=True,
                help_text="the specific product associated with this order line",
                null=True,
                on_delete=django.db.models.deletion.PROTECT,
                to="core.product",
                verbose_name="associated product",
            ),
        ),
        migrations.AddField(
            model_name="attributevalue",
            name="product",
            field=models.ForeignKey(
                help_text="the specific product associated with this attribute's value",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="attributes",
                to="core.product",
                verbose_name="associated product",
            ),
        ),
        migrations.AddField(
            model_name="productimage",
            name="product",
            field=models.ForeignKey(
                help_text="the product that this image represents",
                on_delete=django.db.models.deletion.CASCADE,
                related_name="images",
                to="core.product",
                verbose_name="associated product",
            ),
        ),
        migrations.AddField(
            model_name="product",
            name="tags",
            field=models.ManyToManyField(
                blank=True,
                help_text="tags that help describe or group this product",
                to="core.producttag",
                verbose_name="product tags",
            ),
        ),
        migrations.AddField(
            model_name="promocode",
            name="user",
            field=models.ForeignKey(
                blank=True,
                help_text="user assigned to this promocode if applicable",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="promocodes",
                to=settings.AUTH_USER_MODEL,
                verbose_name="assigned user",
            ),
        ),
        migrations.AddField(
            model_name="order",
            name="promo_code",
            field=models.ForeignKey(
                blank=True,
                help_text="optional promo code applied to this order",
                null=True,
                on_delete=django.db.models.deletion.PROTECT,
                to="core.promocode",
                verbose_name="applied promo code",
            ),
        ),
        migrations.AddField(
            model_name="promotion",
            name="products",
            field=models.ManyToManyField(
                blank=True,
                help_text="select which products are included in this promotion",
                to="core.product",
                verbose_name="included products",
            ),
        ),
        migrations.AddField(
            model_name="stock",
            name="product",
            field=models.ForeignKey(
                blank=True,
                help_text="the product associated with this stock entry",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="stocks",
                to="core.product",
                verbose_name="associated product",
            ),
        ),
        migrations.AddIndex(
            model_name="vendor",
            index=django.contrib.postgres.indexes.GinIndex(
                fields=["authentication"], name="core_vendor_authent_80dc1f_gin"
            ),
        ),
        migrations.AddField(
            model_name="stock",
            name="vendor",
            field=models.ForeignKey(
                help_text="the vendor supplying this product stock",
                on_delete=django.db.models.deletion.CASCADE,
                to="core.vendor",
                verbose_name="associated vendor",
            ),
        ),
        migrations.AddField(
            model_name="wishlist",
            name="products",
            field=models.ManyToManyField(
                blank=True,
                help_text="products that the user has marked as wanted",
                to="core.product",
                verbose_name="wishlisted products",
            ),
        ),
        migrations.AddField(
            model_name="wishlist",
            name="user",
            field=models.OneToOneField(
                blank=True,
                help_text="user who owns this wishlist",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                related_name="user_related_wishlist",
                to=settings.AUTH_USER_MODEL,
                verbose_name="wishlist owner",
            ),
        ),
        migrations.AddIndex(
            model_name="orderproduct",
            index=django.contrib.postgres.indexes.GinIndex(
                fields=["notifications", "attributes"], name="core_orderp_notific_cd27e9_gin"
            ),
        ),
    ]
