ttvdrops/kick/migrations/0001_initial.py
Joakim Helleśen d762081bd5
All checks were successful
Deploy to Server / deploy (push) Successful in 10s
Add support for Kick
2026-03-15 04:19:03 +01:00

545 lines
19 KiB
Python

# Generated by Django 6.0.3 on 2026-03-14 05:12
import auto_prefetch
import django.db.models.deletion
import django.db.models.manager
from django.db import migrations
from django.db import models
class Migration(migrations.Migration):
"""Initial migration for the kick app."""
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="KickChannel",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"kick_id",
models.PositiveBigIntegerField(
editable=False,
unique=True,
verbose_name="Kick Channel ID",
),
),
("slug", models.TextField(blank=True, default="", verbose_name="Slug")),
(
"description",
models.TextField(
blank=True,
default="",
verbose_name="Description",
),
),
(
"banner_picture_url",
models.TextField(
blank=True,
default="",
help_text="May be empty or a relative path.",
verbose_name="Banner Picture URL",
),
),
("added_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
],
options={
"verbose_name": "Kick Channel",
"verbose_name_plural": "Kick Channels",
"ordering": ["slug"],
"abstract": False,
"base_manager_name": "prefetch_manager",
},
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.CreateModel(
name="KickCategory",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"kick_id",
models.PositiveIntegerField(
editable=False,
help_text="Integer identifier from the Kick API.",
unique=True,
verbose_name="Kick Category ID",
),
),
("name", models.TextField(verbose_name="Name")),
(
"slug",
models.SlugField(
blank=True,
default="",
max_length=200,
verbose_name="Slug",
),
),
(
"image_url",
models.URLField(
blank=True,
default="",
max_length=500,
verbose_name="Image URL",
),
),
("added_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
],
options={
"verbose_name": "Kick Category",
"verbose_name_plural": "Kick Categories",
"ordering": ["name"],
"abstract": False,
"base_manager_name": "prefetch_manager",
"indexes": [
models.Index(
fields=["kick_id"],
name="kick_kickca_kick_id_7a71c0_idx",
),
models.Index(fields=["name"], name="kick_kickca_name_bb9784_idx"),
models.Index(fields=["slug"], name="kick_kickca_slug_c983b1_idx"),
],
},
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.CreateModel(
name="KickOrganization",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"kick_id",
models.TextField(
editable=False,
help_text="ULID string identifier from the Kick API.",
unique=True,
verbose_name="Kick Organization ID",
),
),
("name", models.TextField(verbose_name="Name")),
(
"logo_url",
models.URLField(
blank=True,
default="",
max_length=500,
verbose_name="Logo URL",
),
),
(
"url",
models.URLField(
blank=True,
default="",
max_length=500,
verbose_name="URL",
),
),
(
"restricted",
models.BooleanField(default=False, verbose_name="Restricted"),
),
("added_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
],
options={
"verbose_name": "Kick Organization",
"verbose_name_plural": "Kick Organizations",
"ordering": ["name"],
"abstract": False,
"base_manager_name": "prefetch_manager",
"indexes": [
models.Index(
fields=["kick_id"],
name="kick_kickor_kick_id_c64a0d_idx",
),
models.Index(fields=["name"], name="kick_kickor_name_2f9336_idx"),
],
},
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.CreateModel(
name="KickDropCampaign",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"kick_id",
models.TextField(
editable=False,
help_text="ULID string identifier from the Kick API.",
unique=True,
verbose_name="Kick Campaign ID",
),
),
("name", models.TextField(verbose_name="Name")),
(
"status",
models.CharField(
blank=True,
default="",
help_text="e.g. 'active' or 'expired'.",
max_length=50,
verbose_name="Status",
),
),
(
"starts_at",
models.DateTimeField(
blank=True,
null=True,
verbose_name="Starts At",
),
),
(
"ends_at",
models.DateTimeField(blank=True, null=True, verbose_name="Ends At"),
),
(
"connect_url",
models.URLField(
blank=True,
default="",
help_text="URL to link an account for the campaign.",
max_length=500,
verbose_name="Connect URL",
),
),
(
"url",
models.URLField(
blank=True,
default="",
max_length=500,
verbose_name="URL",
),
),
(
"rule_id",
models.PositiveIntegerField(
blank=True,
null=True,
verbose_name="Rule ID",
),
),
(
"rule_name",
models.TextField(blank=True, default="", verbose_name="Rule Name"),
),
(
"created_at",
models.DateTimeField(
blank=True,
help_text="When the campaign was created on Kick.",
null=True,
verbose_name="Created At (Kick)",
),
),
(
"api_updated_at",
models.DateTimeField(
blank=True,
help_text="When the campaign was last updated on Kick.",
null=True,
verbose_name="Updated At (Kick)",
),
),
("added_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"category",
auto_prefetch.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="campaigns",
to="kick.kickcategory",
verbose_name="Category",
),
),
(
"channels",
models.ManyToManyField(
blank=True,
related_name="campaigns",
to="kick.kickchannel",
verbose_name="Channels",
),
),
(
"organization",
auto_prefetch.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="campaigns",
to="kick.kickorganization",
verbose_name="Organization",
),
),
],
options={
"verbose_name": "Kick Drop Campaign",
"verbose_name_plural": "Kick Drop Campaigns",
"ordering": ["-starts_at"],
"abstract": False,
"base_manager_name": "prefetch_manager",
},
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.CreateModel(
name="KickReward",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"kick_id",
models.TextField(
editable=False,
help_text="ULID string identifier from the Kick API.",
unique=True,
verbose_name="Kick Reward ID",
),
),
("name", models.TextField(verbose_name="Name")),
(
"image_url",
models.TextField(
blank=True,
default="",
help_text="May be a relative path (e.g. 'drops/reward-image/...').",
verbose_name="Image URL",
),
),
(
"required_units",
models.PositiveIntegerField(
default=0,
help_text="Number of watch-minutes required to earn this reward.",
verbose_name="Required Units",
),
),
("added_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"campaign",
auto_prefetch.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="rewards",
to="kick.kickdropcampaign",
verbose_name="Campaign",
),
),
(
"category",
auto_prefetch.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="rewards",
to="kick.kickcategory",
verbose_name="Category",
),
),
(
"organization",
auto_prefetch.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="rewards",
to="kick.kickorganization",
verbose_name="Organization",
),
),
],
options={
"verbose_name": "Kick Reward",
"verbose_name_plural": "Kick Rewards",
"ordering": ["required_units", "name"],
"abstract": False,
"base_manager_name": "prefetch_manager",
},
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.CreateModel(
name="KickUser",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"kick_id",
models.PositiveBigIntegerField(
editable=False,
unique=True,
verbose_name="Kick User ID",
),
),
("username", models.TextField(verbose_name="Username")),
(
"profile_picture",
models.URLField(
blank=True,
default="",
max_length=500,
verbose_name="Profile Picture URL",
),
),
("added_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
],
options={
"verbose_name": "Kick User",
"verbose_name_plural": "Kick Users",
"ordering": ["username"],
"abstract": False,
"base_manager_name": "prefetch_manager",
"indexes": [
models.Index(
fields=["kick_id"],
name="kick_kickus_kick_id_5eda21_idx",
),
models.Index(
fields=["username"],
name="kick_kickus_usernam_68f5af_idx",
),
],
},
managers=[
("objects", django.db.models.manager.Manager()),
("prefetch_manager", django.db.models.manager.Manager()),
],
),
migrations.AddField(
model_name="kickchannel",
name="user",
field=auto_prefetch.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="channels",
to="kick.kickuser",
verbose_name="User",
),
),
migrations.AddIndex(
model_name="kickdropcampaign",
index=models.Index(
fields=["kick_id"],
name="kick_kickdr_kick_id_2d0bcf_idx",
),
),
migrations.AddIndex(
model_name="kickdropcampaign",
index=models.Index(fields=["name"], name="kick_kickdr_name_26e308_idx"),
),
migrations.AddIndex(
model_name="kickdropcampaign",
index=models.Index(fields=["status"], name="kick_kickdr_status_fbc875_idx"),
),
migrations.AddIndex(
model_name="kickdropcampaign",
index=models.Index(
fields=["-starts_at"],
name="kick_kickdr_starts__f84d8a_idx",
),
),
migrations.AddIndex(
model_name="kickdropcampaign",
index=models.Index(
fields=["ends_at"],
name="kick_kickdr_ends_at_ed0dbd_idx",
),
),
migrations.AddIndex(
model_name="kickreward",
index=models.Index(
fields=["kick_id"],
name="kick_kickre_kick_id_687d52_idx",
),
),
migrations.AddIndex(
model_name="kickreward",
index=models.Index(
fields=["required_units"],
name="kick_kickre_require_9953e6_idx",
),
),
migrations.AddIndex(
model_name="kickchannel",
index=models.Index(
fields=["kick_id"],
name="kick_kickch_kick_id_4e780e_idx",
),
),
migrations.AddIndex(
model_name="kickchannel",
index=models.Index(fields=["slug"], name="kick_kickch_slug_1a8efe_idx"),
),
]