# Generated by Django 6.0 on 2026-01-19 19:16

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


class Migration(migrations.Migration):
    dependencies = [
        ("accounts", "0004_populate_existing_users_onboarding"),
        ("core_messages", "0003_backfill_activity_at"),
        ("members", "0002_add_avatar_url_to_member"),
        ("sources", "0001_initial"),
    ]

    operations = [
        migrations.CreateModel(
            name="Signal",
            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)),
                (
                    "signal_type",
                    models.CharField(
                        choices=[
                            ("mention", "Mention"),
                            ("star", "Star"),
                            ("fork", "Fork"),
                            ("release", "Release"),
                            ("follow", "Follow"),
                        ],
                        db_index=True,
                        max_length=20,
                    ),
                ),
                ("occurred_at", models.DateTimeField(db_index=True)),
                ("title", models.CharField(max_length=255)),
                ("external_url", models.URLField(max_length=500)),
                ("external_id", models.CharField(blank=True, max_length=255)),
                ("body", models.TextField(blank=True)),
                ("metadata", models.JSONField(blank=True, default=dict)),
            ],
        ),
        migrations.AddField(
            model_name="thread",
            name="thread_type",
            field=models.CharField(
                choices=[("conversation", "Conversation"), ("post", "Post")],
                db_index=True,
                default="conversation",
                max_length=20,
            ),
        ),
        migrations.AddIndex(
            model_name="thread",
            index=models.Index(
                fields=["workspace", "thread_type", "-activity_at"], name="core_messag_workspa_c0650c_idx"
            ),
        ),
        migrations.AddField(
            model_name="signal",
            name="actor",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="signals",
                to="members.member",
            ),
        ),
        migrations.AddField(
            model_name="signal",
            name="source",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE, related_name="signals", to="sources.source"
            ),
        ),
        migrations.AddField(
            model_name="signal",
            name="workspace",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE, related_name="signals", to="accounts.workspace"
            ),
        ),
        migrations.AddIndex(
            model_name="signal",
            index=models.Index(fields=["workspace", "-occurred_at"], name="core_messag_workspa_8ee292_idx"),
        ),
        migrations.AddIndex(
            model_name="signal",
            index=models.Index(
                fields=["workspace", "signal_type", "-occurred_at"], name="core_messag_workspa_719018_idx"
            ),
        ),
        migrations.AddConstraint(
            model_name="signal",
            constraint=models.UniqueConstraint(
                condition=models.Q(("external_id__gt", "")),
                fields=("source", "external_id"),
                name="unique_signal_source_external_id",
            ),
        ),
    ]
