From 7d81b1a1b584de25c48ba955b6ec283b6a916775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Hells=C3=A9n?= Date: Fri, 5 Sep 2025 01:04:25 +0200 Subject: [PATCH] Refactor TimeBasedDrop constraints to ensure required_minutes_watched is non-negative --- ...aseddrop_drop_positive_minutes_and_more.py | 21 +++++++++++++++++++ twitch/models.py | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 twitch/migrations/0011_remove_timebaseddrop_drop_positive_minutes_and_more.py diff --git a/twitch/migrations/0011_remove_timebaseddrop_drop_positive_minutes_and_more.py b/twitch/migrations/0011_remove_timebaseddrop_drop_positive_minutes_and_more.py new file mode 100644 index 0000000..ff323d4 --- /dev/null +++ b/twitch/migrations/0011_remove_timebaseddrop_drop_positive_minutes_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2.5 on 2025-09-04 23:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('twitch', '0010_alter_dropbenefit_id_alter_game_id_and_more'), + ] + + operations = [ + migrations.RemoveConstraint( + model_name='timebaseddrop', + name='drop_positive_minutes', + ), + migrations.AddConstraint( + model_name='timebaseddrop', + constraint=models.CheckConstraint(condition=models.Q(('required_minutes_watched__isnull', True), ('required_minutes_watched__gte', 0), _connector='OR'), name='drop_positive_minutes'), + ), + ] diff --git a/twitch/models.py b/twitch/models.py index 38debb0..a85d1e4 100644 --- a/twitch/models.py +++ b/twitch/models.py @@ -424,9 +424,9 @@ class TimeBasedDrop(models.Model): condition=models.Q(start_at__isnull=True) | models.Q(end_at__isnull=True) | models.Q(end_at__gt=models.F("start_at")), name="drop_valid_date_range", ), - # Ensure required_minutes_watched is positive when set + # Ensure required_minutes_watched is non-negative when set models.CheckConstraint( - condition=models.Q(required_minutes_watched__isnull=True) | models.Q(required_minutes_watched__gt=0), name="drop_positive_minutes" + condition=models.Q(required_minutes_watched__isnull=True) | models.Q(required_minutes_watched__gte=0), name="drop_positive_minutes" ), ] indexes: ClassVar[list] = [