# Generated by Django 5.2.4 on 2026-01-14 16:46

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name="CarStock",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                (
                    "vin",
                    models.CharField(
                        db_index=True,
                        help_text="Vehicle Identification Number",
                        max_length=32,
                        unique=True,
                    ),
                ),
                (
                    "stock_number",
                    models.CharField(
                        db_index=True,
                        help_text="Internal stock number",
                        max_length=50,
                        unique=True,
                    ),
                ),
                ("make", models.CharField(db_index=True, max_length=50)),
                ("model", models.CharField(db_index=True, max_length=50)),
                ("year", models.PositiveIntegerField(db_index=True)),
                (
                    "price",
                    models.DecimalField(
                        decimal_places=2, help_text="Selling price", max_digits=12
                    ),
                ),
                (
                    "mileage",
                    models.PositiveIntegerField(
                        help_text="Mileage in kilometers or miles depending on market"
                    ),
                ),
                ("color", models.CharField(blank=True, max_length=50)),
                ("fuel_type", models.CharField(blank=True, max_length=20)),
                ("transmission", models.CharField(blank=True, max_length=20)),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("available", "Available"),
                            ("sold", "Sold"),
                            ("reserved", "Reserved"),
                            ("inactive", "Inactive"),
                        ],
                        db_index=True,
                        default="available",
                        max_length=20,
                    ),
                ),
                ("description", models.TextField(blank=True)),
                (
                    "is_active",
                    models.BooleanField(
                        default=True, help_text="Soft delete flag for enterprise safety"
                    ),
                ),
            ],
            options={
                "db_table": "car_stock",
                "ordering": ["-created_at"],
                "indexes": [
                    models.Index(fields=["vin"], name="car_stock_vin_f1cd55_idx"),
                    models.Index(
                        fields=["stock_number"], name="car_stock_stock_n_9f8014_idx"
                    ),
                    models.Index(fields=["status"], name="car_stock_status_c8b585_idx"),
                    models.Index(
                        fields=["make", "model"], name="car_stock_make_a2c804_idx"
                    ),
                ],
            },
        ),
        migrations.CreateModel(
            name="CarImage",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "image",
                    models.ImageField(
                        help_text="Vehicle image", upload_to="cars_tock/images/"
                    ),
                ),
                (
                    "is_primary",
                    models.BooleanField(
                        default=False, help_text="Main image for listings"
                    ),
                ),
                (
                    "order",
                    models.PositiveIntegerField(
                        default=0, help_text="Display order in UI"
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "car",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="images",
                        to="car_stock.carstock",
                    ),
                ),
            ],
            options={
                "db_table": "car_stock_image",
                "ordering": ["order", "id"],
                "indexes": [
                    models.Index(fields=["car"], name="car_stock_i_car_id_84b57e_idx"),
                    models.Index(
                        fields=["is_primary"], name="car_stock_i_is_prim_e8b68b_idx"
                    ),
                ],
                "constraints": [
                    models.UniqueConstraint(
                        condition=models.Q(("is_primary", True)),
                        fields=("car",),
                        name="unique_primary_image_per_car",
                    )
                ],
            },
        ),
        migrations.CreateModel(
            name="CarStockSource",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "provider",
                    models.CharField(
                        help_text="e.g. dealer_api, auto_trader, internal_erp",
                        max_length=50,
                    ),
                ),
                ("external_id", models.CharField(db_index=True, max_length=100)),
                ("synced_at", models.DateTimeField(auto_now=True)),
                (
                    "car",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="source",
                        to="car_stock.carstock",
                    ),
                ),
            ],
            options={
                "db_table": "car_stock_source",
                "unique_together": {("provider", "external_id")},
            },
        ),
    ]
