# Generated by Django 5.2.17 on 2026-08-29 09:03

import django.db.models.deletion
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='JobCategory',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, unique=True)),
                ('slug', models.SlugField(max_length=120, unique=True)),
                ('icon', models.CharField(blank=True, default='fa-briefcase', max_length=50)),
            ],
            options={
                'verbose_name_plural': 'job categories',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Job',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('slug', models.SlugField(max_length=220, unique=True)),
                ('company_name', models.CharField(max_length=150)),
                ('company_slug', models.SlugField(blank=True, max_length=170)),
                ('company_initials', models.CharField(max_length=4)),
                ('company_logo_gradient', models.CharField(default='linear-gradient(135deg,#2c3e50,#34495e)', max_length=120)),
                ('company_industry', models.CharField(blank=True, max_length=100)),
                ('location', models.CharField(max_length=120)),
                ('job_type', models.CharField(choices=[('full_time', 'Full-Time'), ('part_time', 'Part-Time'), ('contract', 'Contract'), ('remote', 'Remote'), ('internship', 'Internship')], default='full_time', max_length=20)),
                ('experience_level', models.CharField(choices=[('entry', 'Entry Level'), ('mid', 'Mid Level'), ('senior', 'Senior'), ('executive', 'Executive')], default='mid', max_length=20)),
                ('salary_min', models.PositiveIntegerField(blank=True, null=True)),
                ('salary_max', models.PositiveIntegerField(blank=True, null=True)),
                ('badge', models.CharField(blank=True, choices=[('', 'None'), ('hot', 'Hot'), ('new', 'New'), ('premium', 'Premium')], default='', max_length=20)),
                ('summary', models.TextField(blank=True)),
                ('description', models.TextField()),
                ('responsibilities', models.TextField(help_text='One item per line')),
                ('requirements', models.TextField(help_text='One item per line')),
                ('nice_to_have', models.TextField(blank=True, help_text='One item per line')),
                ('benefits', models.TextField(blank=True, help_text='One benefit per line')),
                ('how_to_apply', models.TextField(blank=True)),
                ('cover_image_url', models.URLField(blank=True)),
                ('deadline', models.DateField(blank=True, null=True)),
                ('is_active', models.BooleanField(default=True)),
                ('is_featured', models.BooleanField(default=False)),
                ('views_count', models.PositiveIntegerField(default=0)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('posted_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='posted_jobs', to=settings.AUTH_USER_MODEL)),
                ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='jobs', to='jobs.jobcategory')),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='JobApplication',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('cover_letter', models.TextField(blank=True)),
                ('cv_file', models.FileField(blank=True, null=True, upload_to='applications/cv/')),
                ('linkedin_url', models.URLField(blank=True)),
                ('status', models.CharField(choices=[('pending', 'Pending'), ('review', 'Under Review'), ('shortlisted', 'Shortlisted'), ('rejected', 'Rejected'), ('hired', 'Hired')], default='pending', max_length=20)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('applicant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='job_applications', to=settings.AUTH_USER_MODEL)),
                ('job', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='applications', to='jobs.job')),
            ],
            options={
                'ordering': ['-created_at'],
                'unique_together': {('job', 'applicant')},
            },
        ),
        migrations.CreateModel(
            name='SavedJob',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('job', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='saved_by', to='jobs.job')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='saved_jobs', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-created_at'],
                'unique_together': {('user', 'job')},
            },
        ),
    ]
