# Generated by Django 5.1.13 on 2025-10-04 14:35

import django_channels_postgres.models
import pgtrigger.compiler
import pgtrigger.migrations
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name="GroupChannel",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4, editable=False, primary_key=True, serialize=False
                    ),
                ),
                ("group_key", models.TextField(db_index=True)),
                ("channel", models.TextField(db_index=True)),
                (
                    "expires",
                    models.DateTimeField(
                        db_index=True, default=django_channels_postgres.models._default_group_expiry
                    ),
                ),
            ],
            options={
                "verbose_name": "Group channel",
                "verbose_name_plural": "Group channels",
                "indexes": [
                    models.Index(
                        fields=["group_key", "channel"], name="django_chan_group_k_173f44_idx"
                    ),
                    models.Index(
                        fields=["group_key", "expires"], name="django_chan_group_k_45d2e0_idx"
                    ),
                ],
            },
        ),
        migrations.CreateModel(
            name="Message",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4, editable=False, primary_key=True, serialize=False
                    ),
                ),
                ("channel", models.TextField(db_index=True)),
                ("message", models.BinaryField()),
                (
                    "expires",
                    models.DateTimeField(
                        db_index=True,
                        default=django_channels_postgres.models._default_message_expiry,
                    ),
                ),
            ],
            options={
                "verbose_name": "Message",
                "verbose_name_plural": "Messages",
                "indexes": [
                    models.Index(
                        fields=["channel", "expires"], name="django_chan_channel_e8ca51_idx"
                    )
                ],
            },
        ),
        pgtrigger.migrations.AddTrigger(
            model_name="message",
            trigger=pgtrigger.compiler.Trigger(
                name="notify_new_channels_message",
                sql=pgtrigger.compiler.UpsertTriggerSql(
                    constraint="CONSTRAINT",
                    declare="DECLARE payload text; encoded_message text; epoch text;",
                    func="\n                    encoded_message := encode(NEW.message, 'base64');\n                    epoch := extract(epoch from NEW.expires)::text;\n                    IF octet_length(NEW.id::text) + octet_length(NEW.channel) + octet_length(epoch) + octet_length(encoded_message) + 3 <= 8000 THEN\n                        payload := NEW.id::text || ':' || NEW.channel || ':' || epoch || ':' || encoded_message;\n                    ELSE\n                        payload := NEW.id::text || ':' || NEW.channel || ':' || epoch;\n                    END IF;\n\n                    PERFORM pg_notify('channels_messages', payload);\n                    RETURN NEW;\n                ",
                    hash="cf7a665df0bbb7d865cdbc92b63d818fd25733d8",
                    operation="INSERT",
                    pgid="pgtrigger_notify_new_channels_message_d21ae",
                    table="django_channels_postgres_message",
                    timing="DEFERRABLE INITIALLY DEFERRED",
                    when="AFTER",
                ),
            ),
        ),
    ]
