# 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"), ), ]