# Generated by Django 5.2 on 2025-05-12 05:40

import django.contrib.gis.db.models.fields
import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='SoilType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('description', models.TextField(blank=True, null=True)),
                ('texture', models.CharField(blank=True, max_length=100, null=True)),
                ('ph_min', models.FloatField(blank=True, null=True)),
                ('ph_max', models.FloatField(blank=True, null=True)),
                ('organic_matter_percentage', models.FloatField(blank=True, null=True)),
                ('drainage_rate', models.CharField(blank=True, max_length=50, null=True)),
                ('water_holding_capacity', models.FloatField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='ThirdPartyAPIKey',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('service_name', models.CharField(max_length=100)),
                ('api_key', models.CharField(max_length=255)),
                ('api_url', models.URLField(blank=True, null=True)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
        ),
        migrations.CreateModel(
            name='ZoneType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('description', models.TextField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='Farm',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('name', models.CharField(max_length=255)),
                ('description', models.TextField(blank=True, null=True)),
                ('boundary', django.contrib.gis.db.models.fields.MultiPolygonField(geography=True, srid=4326)),
                ('area_hectares', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
                ('address', models.TextField(blank=True, null=True)),
                ('elevation', models.FloatField(blank=True, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='farms', to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.CreateModel(
            name='SatelliteImage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('image_url', models.URLField()),
                ('image_date', models.URLField()),
                ('satellite_name', models.CharField(max_length=100)),
                ('cloud_cover_percentage', models.FloatField(blank=True, null=True)),
                ('resolution', models.CharField(blank=True, max_length=50, null=True)),
                ('bands', models.CharField(blank=True, max_length=255, null=True)),
                ('ndvi_avg', models.FloatField(blank=True, null=True)),
                ('evi_avg', models.FloatField(blank=True, null=True)),
                ('data_source', models.CharField(blank=True, max_length=255, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('farm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='satellite_images', to='farms.farm')),
            ],
        ),
        migrations.CreateModel(
            name='Zone',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('name', models.CharField(max_length=255)),
                ('boundary', django.contrib.gis.db.models.fields.PolygonField(geography=True, srid=4326)),
                ('area_hectares', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)),
                ('description', models.TextField(blank=True, null=True)),
                ('active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('farm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='zones', to='farms.farm')),
                ('zone_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='zones', to='farms.zonetype')),
            ],
        ),
        migrations.CreateModel(
            name='SoilData',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('ph_value', models.FloatField(blank=True, null=True)),
                ('organic_matter', models.FloatField(blank=True, null=True)),
                ('nitrogen', models.FloatField(blank=True, null=True)),
                ('phosphorus', models.FloatField(blank=True, null=True)),
                ('potassium', models.FloatField(blank=True, null=True)),
                ('sand_percentage', models.FloatField(blank=True, null=True)),
                ('silt_percentage', models.FloatField(blank=True, null=True)),
                ('clay_percentage', models.FloatField(blank=True, null=True)),
                ('cec', models.FloatField(blank=True, null=True)),
                ('ec', models.FloatField(blank=True, null=True)),
                ('data_source', models.CharField(blank=True, max_length=255, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('soil_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='farms.soiltype')),
                ('zone', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='soil_data', to='farms.zone')),
            ],
        ),
        migrations.CreateModel(
            name='WeatherData',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateField()),
                ('temperature_min', models.FloatField(blank=True, null=True)),
                ('temperature_max', models.FloatField(blank=True, null=True)),
                ('temperature_avg', models.FloatField(blank=True, null=True)),
                ('humidity', models.FloatField(blank=True, null=True)),
                ('precipitation', models.FloatField(blank=True, null=True)),
                ('wind_speed', models.FloatField(blank=True, null=True)),
                ('wind_direction', models.CharField(blank=True, max_length=50, null=True)),
                ('cloud_cover', models.FloatField(blank=True, null=True)),
                ('solar_radiation', models.FloatField(blank=True, null=True)),
                ('evapotranspiration', models.FloatField(blank=True, null=True)),
                ('data_source', models.CharField(blank=True, max_length=255, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('farm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='weather_data', to='farms.farm')),
            ],
            options={
                'unique_together': {('farm', 'date')},
            },
        ),
    ]
