ttvdrops/twitch/migrations/0006_add_chat_badges.py

202 lines
7.2 KiB
Python

# Generated by Django 6.0.1 on 2026-01-15 21:57
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",
),
],
},
),
]