Archive Twitch chat badges

This commit is contained in:
Joakim Hellsén 2026-01-16 00:28:25 +01:00
commit 6842581656
No known key found for this signature in database
14 changed files with 1394 additions and 1 deletions

View file

@ -0,0 +1,153 @@
# 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")],
},
),
]