# Generated by Django 6.0.1 on 2026-01-15 21:57 from __future__ import annotations import django.db.models.deletion from django.db import migrations from django.db import models class Migration(migrations.Migration): """Add ChatBadgeSet and ChatBadge models for Twitch chat badges.""" dependencies = [ ("twitch", "0005_add_reward_campaign"), ] operations = [ migrations.CreateModel( name="ChatBadgeSet", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "set_id", models.TextField( help_text="Identifier for this badge set (e.g., 'vip', 'subscriber', 'bits').", unique=True, verbose_name="Set ID", ), ), ( "added_at", models.DateTimeField( auto_now_add=True, help_text="Timestamp when this badge set record was created.", verbose_name="Added At", ), ), ( "updated_at", models.DateTimeField( auto_now=True, help_text="Timestamp when this badge set record was last updated.", verbose_name="Updated At", ), ), ], options={ "ordering": ["set_id"], "indexes": [ models.Index(fields=["set_id"], name="twitch_chat_set_id_9319f2_idx"), models.Index(fields=["added_at"], name="twitch_chat_added_a_b0023a_idx"), models.Index(fields=["updated_at"], name="twitch_chat_updated_90afed_idx"), ], }, ), migrations.CreateModel( name="ChatBadge", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "badge_id", models.TextField( help_text="Version identifier for this badge (e.g., '1', 'Alliance', '10000').", verbose_name="Badge ID", ), ), ( "image_url_1x", models.URLField( help_text="URL to the small version (18px x 18px) of the badge.", max_length=500, verbose_name="Image URL (18px)", ), ), ( "image_url_2x", models.URLField( help_text="URL to the medium version (36px x 36px) of the badge.", max_length=500, verbose_name="Image URL (36px)", ), ), ( "image_url_4x", models.URLField( help_text="URL to the large version (72px x 72px) of the badge.", max_length=500, verbose_name="Image URL (72px)", ), ), ("title", models.TextField(help_text="The title of the badge (e.g., 'VIP').", verbose_name="Title")), ( "description", models.TextField(help_text="The description of the badge.", verbose_name="Description"), ), ( "click_action", models.TextField( blank=True, help_text="The action to take when clicking on the badge (e.g., 'visit_url').", null=True, verbose_name="Click Action", ), ), ( "click_url", models.URLField( blank=True, help_text="The URL to navigate to when clicking on the badge.", max_length=500, null=True, verbose_name="Click URL", ), ), ( "added_at", models.DateTimeField( auto_now_add=True, help_text="Timestamp when this badge record was created.", verbose_name="Added At", ), ), ( "updated_at", models.DateTimeField( auto_now=True, help_text="Timestamp when this badge record was last updated.", verbose_name="Updated At", ), ), ( "badge_set", models.ForeignKey( help_text="The badge set this badge belongs to.", on_delete=django.db.models.deletion.CASCADE, related_name="badges", to="twitch.chatbadgeset", verbose_name="Badge Set", ), ), ], options={ "ordering": ["badge_set", "badge_id"], "indexes": [ models.Index(fields=["badge_set"], name="twitch_chat_badge_s_54f225_idx"), models.Index(fields=["badge_id"], name="twitch_chat_badge_i_58a68a_idx"), models.Index(fields=["title"], name="twitch_chat_title_0f42d2_idx"), models.Index(fields=["added_at"], name="twitch_chat_added_a_9ba7dd_idx"), models.Index(fields=["updated_at"], name="twitch_chat_updated_568ad1_idx"), ], "constraints": [models.UniqueConstraint(fields=("badge_set", "badge_id"), name="unique_badge_set_id")], }, ), ]