Skip to content

Commit ebd7790

Browse files
feat: ROOT-1: Add offset to storage link model to support storage link to task within file of tasks on cloud storage (#7534)
Co-authored-by: Jo Booth <jo.m.booth@gmail.com> Co-authored-by: matt-bernstein <matt-bernstein@users.noreply.github.com>
1 parent 9abd726 commit ebd7790

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

label_studio/io_storages/base_models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,11 +689,17 @@ class ImportStorageLink(models.Model):
689689

690690
task = models.OneToOneField('tasks.Task', on_delete=models.CASCADE, related_name='%(app_label)s_%(class)s')
691691
key = models.TextField(_('key'), null=False, help_text='External link key')
692+
693+
# This field is set to True on creation and never updated; it should not be relied upon.
692694
object_exists = models.BooleanField(
693695
_('object exists'), help_text='Whether object under external link still exists', default=True
694696
)
697+
695698
created_at = models.DateTimeField(_('created at'), auto_now_add=True, help_text='Creation time')
696699

700+
row_group = models.IntegerField(null=True, blank=True, help_text='Parquet row group')
701+
row_index = models.IntegerField(null=True, blank=True, help_text='Parquet row index, or JSON[L] object index')
702+
697703
@classmethod
698704
def exists(cls, key, storage):
699705
return cls.objects.filter(key=key, storage=storage.id).exists()
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Generated by Django 5.1.9 on 2025-05-14 17:23
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("io_storages", "0018_alter_azureblobexportstorage_project_and_more"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="azureblobimportstoragelink",
15+
name="row_group",
16+
field=models.IntegerField(
17+
blank=True, help_text="Parquet row group", null=True
18+
),
19+
),
20+
migrations.AddField(
21+
model_name="azureblobimportstoragelink",
22+
name="row_index",
23+
field=models.IntegerField(
24+
blank=True,
25+
help_text="Parquet row index, or JSON[L] object index",
26+
null=True,
27+
),
28+
),
29+
migrations.AddField(
30+
model_name="gcsimportstoragelink",
31+
name="row_group",
32+
field=models.IntegerField(
33+
blank=True, help_text="Parquet row group", null=True
34+
),
35+
),
36+
migrations.AddField(
37+
model_name="gcsimportstoragelink",
38+
name="row_index",
39+
field=models.IntegerField(
40+
blank=True,
41+
help_text="Parquet row index, or JSON[L] object index",
42+
null=True,
43+
),
44+
),
45+
migrations.AddField(
46+
model_name="localfilesimportstoragelink",
47+
name="row_group",
48+
field=models.IntegerField(
49+
blank=True, help_text="Parquet row group", null=True
50+
),
51+
),
52+
migrations.AddField(
53+
model_name="localfilesimportstoragelink",
54+
name="row_index",
55+
field=models.IntegerField(
56+
blank=True,
57+
help_text="Parquet row index, or JSON[L] object index",
58+
null=True,
59+
),
60+
),
61+
migrations.AddField(
62+
model_name="redisimportstoragelink",
63+
name="row_group",
64+
field=models.IntegerField(
65+
blank=True, help_text="Parquet row group", null=True
66+
),
67+
),
68+
migrations.AddField(
69+
model_name="redisimportstoragelink",
70+
name="row_index",
71+
field=models.IntegerField(
72+
blank=True,
73+
help_text="Parquet row index, or JSON[L] object index",
74+
null=True,
75+
),
76+
),
77+
migrations.AddField(
78+
model_name="s3importstoragelink",
79+
name="row_group",
80+
field=models.IntegerField(
81+
blank=True, help_text="Parquet row group", null=True
82+
),
83+
),
84+
migrations.AddField(
85+
model_name="s3importstoragelink",
86+
name="row_index",
87+
field=models.IntegerField(
88+
blank=True,
89+
help_text="Parquet row index, or JSON[L] object index",
90+
null=True,
91+
),
92+
),
93+
]

0 commit comments

Comments
 (0)