new file mode 100644
@@ -0,0 +1,27 @@
+# Generated by Django 4.2.5 on 2026-08-11 00:00
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('orm', '0021_eventlogsimports'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='RecipeVariable',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('variables', models.BinaryField()),
+ ('variable_count', models.PositiveIntegerField(default=0)),
+ ('build', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orm.build')),
+ ('recipe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orm.recipe')),
+ ],
+ options={
+ 'unique_together': {('build', 'recipe')},
+ },
+ ),
+ ]
@@ -1346,6 +1346,16 @@ class Recipe(models.Model):
unique_together = (("layer_version", "file_path", "pathflags"), )
+class RecipeVariable(models.Model):
+ build = models.ForeignKey(Build, on_delete=models.CASCADE)
+ recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
+ variables = models.BinaryField()
+ variable_count = models.PositiveIntegerField(default=0)
+
+ class Meta:
+ unique_together = (("build", "recipe"), )
+
+
class Recipe_DependencyManager(models.Manager):
use_for_related_fields = True
Add one compressed variable snapshot per build and recipe. Store the entry count separately so recipe list queries do not need to decompress each snapshot. AI-Generated: Uses GitHub Copilot and OpenCode with GPT-5.6 Sol Signed-off-by: Paolo Wattebled <paolo.wattebled@savoirfairelinux.com> --- .../orm/migrations/0022_recipevariable.py | 27 +++++++++++++++++++ lib/toaster/orm/models.py | 10 +++++++ 2 files changed, 37 insertions(+) create mode 100644 lib/toaster/orm/migrations/0022_recipevariable.py