All checks were successful
Deploy to Server / deploy (push) Successful in 10s
545 lines
19 KiB
Python
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"),
|
|
),
|
|
]
|