nucliadb 6.5.0.post4420__py3-none-any.whl → 6.5.0.post4426__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- migrations/0036_backfill_catalog_slug.py +81 -0
- migrations/pg/0007_catalog_slug.py +31 -0
- nucliadb/ingest/orm/processor/pgcatalog.py +5 -3
- {nucliadb-6.5.0.post4420.dist-info → nucliadb-6.5.0.post4426.dist-info}/METADATA +6 -6
- {nucliadb-6.5.0.post4420.dist-info → nucliadb-6.5.0.post4426.dist-info}/RECORD +8 -6
- {nucliadb-6.5.0.post4420.dist-info → nucliadb-6.5.0.post4426.dist-info}/WHEEL +0 -0
- {nucliadb-6.5.0.post4420.dist-info → nucliadb-6.5.0.post4426.dist-info}/entry_points.txt +0 -0
- {nucliadb-6.5.0.post4420.dist-info → nucliadb-6.5.0.post4426.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
# Copyright (C) 2021 Bosutech XXI S.L.
|
2
|
+
#
|
3
|
+
# nucliadb is offered under the AGPL v3.0 and as commercial software.
|
4
|
+
# For commercial licensing, contact us at info@nuclia.com.
|
5
|
+
#
|
6
|
+
# AGPL:
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU Affero General Public License as
|
9
|
+
# published by the Free Software Foundation, either version 3 of the
|
10
|
+
# License, or (at your option) any later version.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU Affero General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Affero General Public License
|
18
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#
|
20
|
+
|
21
|
+
"""Migration #36
|
22
|
+
|
23
|
+
Backfill catalog slug field
|
24
|
+
|
25
|
+
"""
|
26
|
+
|
27
|
+
import logging
|
28
|
+
from typing import cast
|
29
|
+
|
30
|
+
from nucliadb.common.maindb.pg import PGDriver, PGTransaction
|
31
|
+
from nucliadb.migrator.context import ExecutionContext
|
32
|
+
|
33
|
+
logger = logging.getLogger(__name__)
|
34
|
+
|
35
|
+
|
36
|
+
async def migrate(context: ExecutionContext) -> None:
|
37
|
+
driver = cast(PGDriver, context.kv_driver)
|
38
|
+
|
39
|
+
BATCH_SIZE = 10_000
|
40
|
+
async with driver.transaction() as txn:
|
41
|
+
txn = cast(PGTransaction, txn)
|
42
|
+
start_key = ""
|
43
|
+
while True:
|
44
|
+
async with txn.connection.cursor() as cur:
|
45
|
+
logger.info(f"Filling {BATCH_SIZE} catalog slugs from {start_key}")
|
46
|
+
# Get a batch of slugs from the resource table
|
47
|
+
await cur.execute(
|
48
|
+
"""
|
49
|
+
CREATE TEMPORARY TABLE tmp_0036_backfill_catalog ON COMMIT DROP AS
|
50
|
+
SELECT
|
51
|
+
key,
|
52
|
+
SPLIT_PART(key, '/', 3)::UUID AS kbid,
|
53
|
+
SPLIT_PART(key, '/', 5) AS slug,
|
54
|
+
ENCODE(value, 'escape')::UUID AS rid
|
55
|
+
FROM resources
|
56
|
+
WHERE key ~ '^/kbs/[^/]+/s/.*'
|
57
|
+
AND key > %s
|
58
|
+
ORDER BY key
|
59
|
+
LIMIT %s
|
60
|
+
""",
|
61
|
+
(start_key, BATCH_SIZE),
|
62
|
+
)
|
63
|
+
|
64
|
+
# Set the key for next iteration
|
65
|
+
await cur.execute("SELECT MAX(key) FROM tmp_0036_backfill_catalog")
|
66
|
+
start_key = (await cur.fetchone())[0] # type: ignore
|
67
|
+
if start_key is None:
|
68
|
+
break
|
69
|
+
|
70
|
+
# Update the catalog with the slugs
|
71
|
+
await cur.execute(
|
72
|
+
"""
|
73
|
+
UPDATE catalog c SET slug = tmp.slug
|
74
|
+
FROM tmp_0036_backfill_catalog tmp
|
75
|
+
WHERE c.kbid = tmp.kbid AND c.rid = tmp.rid
|
76
|
+
"""
|
77
|
+
)
|
78
|
+
await txn.commit()
|
79
|
+
|
80
|
+
|
81
|
+
async def migrate_kb(context: ExecutionContext, kbid: str) -> None: ...
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Copyright (C) 2021 Bosutech XXI S.L.
|
2
|
+
#
|
3
|
+
# nucliadb is offered under the AGPL v3.0 and as commercial software.
|
4
|
+
# For commercial licensing, contact us at info@nuclia.com.
|
5
|
+
#
|
6
|
+
# AGPL:
|
7
|
+
# This program is free software: you can redistribute it and/or modify
|
8
|
+
# it under the terms of the GNU Affero General Public License as
|
9
|
+
# published by the Free Software Foundation, either version 3 of the
|
10
|
+
# License, or (at your option) any later version.
|
11
|
+
#
|
12
|
+
# This program is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
# GNU Affero General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Affero General Public License
|
18
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#
|
20
|
+
|
21
|
+
from nucliadb.common.maindb.pg import PGTransaction
|
22
|
+
|
23
|
+
|
24
|
+
async def migrate(txn: PGTransaction) -> None:
|
25
|
+
async with txn.connection.cursor() as cur:
|
26
|
+
await cur.execute(
|
27
|
+
"""
|
28
|
+
ALTER TABLE catalog ADD COLUMN slug TEXT;
|
29
|
+
CREATE INDEX ON catalog(slug);
|
30
|
+
"""
|
31
|
+
)
|
@@ -57,14 +57,15 @@ async def pgcatalog_update(txn: Transaction, kbid: str, resource: Resource, inde
|
|
57
57
|
await cur.execute(
|
58
58
|
"""
|
59
59
|
INSERT INTO catalog
|
60
|
-
(kbid, rid, title, created_at, modified_at, labels)
|
60
|
+
(kbid, rid, title, created_at, modified_at, labels, slug)
|
61
61
|
VALUES
|
62
|
-
(%(kbid)s, %(rid)s, %(title)s, %(created_at)s, %(modified_at)s, %(labels)s)
|
62
|
+
(%(kbid)s, %(rid)s, %(title)s, %(created_at)s, %(modified_at)s, %(labels)s, %(slug)s)
|
63
63
|
ON CONFLICT (kbid, rid) DO UPDATE SET
|
64
64
|
title = excluded.title,
|
65
65
|
created_at = excluded.created_at,
|
66
66
|
modified_at = excluded.modified_at,
|
67
|
-
labels = excluded.labels
|
67
|
+
labels = excluded.labels,
|
68
|
+
slug = excluded.slug""",
|
68
69
|
{
|
69
70
|
"kbid": resource.kb.kbid,
|
70
71
|
"rid": resource.uuid,
|
@@ -72,6 +73,7 @@ async def pgcatalog_update(txn: Transaction, kbid: str, resource: Resource, inde
|
|
72
73
|
"created_at": created_at,
|
73
74
|
"modified_at": modified_at,
|
74
75
|
"labels": list(index_message.labels),
|
76
|
+
"slug": resource.basic.slug,
|
75
77
|
},
|
76
78
|
)
|
77
79
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nucliadb
|
3
|
-
Version: 6.5.0.
|
3
|
+
Version: 6.5.0.post4426
|
4
4
|
Summary: NucliaDB
|
5
5
|
Author-email: Nuclia <nucliadb@nuclia.com>
|
6
6
|
License-Expression: AGPL-3.0-or-later
|
@@ -19,11 +19,11 @@ Classifier: Programming Language :: Python :: 3.12
|
|
19
19
|
Classifier: Programming Language :: Python :: 3 :: Only
|
20
20
|
Requires-Python: <4,>=3.9
|
21
21
|
Description-Content-Type: text/markdown
|
22
|
-
Requires-Dist: nucliadb-telemetry[all]>=6.5.0.
|
23
|
-
Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.5.0.
|
24
|
-
Requires-Dist: nucliadb-protos>=6.5.0.
|
25
|
-
Requires-Dist: nucliadb-models>=6.5.0.
|
26
|
-
Requires-Dist: nidx-protos>=6.5.0.
|
22
|
+
Requires-Dist: nucliadb-telemetry[all]>=6.5.0.post4426
|
23
|
+
Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.5.0.post4426
|
24
|
+
Requires-Dist: nucliadb-protos>=6.5.0.post4426
|
25
|
+
Requires-Dist: nucliadb-models>=6.5.0.post4426
|
26
|
+
Requires-Dist: nidx-protos>=6.5.0.post4426
|
27
27
|
Requires-Dist: nucliadb-admin-assets>=1.0.0.post1224
|
28
28
|
Requires-Dist: nuclia-models>=0.24.2
|
29
29
|
Requires-Dist: uvicorn[standard]
|
@@ -31,6 +31,7 @@ migrations/0032_remove_old_relations.py,sha256=ZaswhmRRsLgw6DVYVdT7cP-gdBf4X3PL9
|
|
31
31
|
migrations/0033_rollover_nidx_relation_2.py,sha256=9etpqNLVS3PA14qIdsdhorReZxenDaBl-IJNN2AK_Fg,1340
|
32
32
|
migrations/0034_rollover_nidx_texts_3.py,sha256=t19QtWUgHxmTaBPoR1DooAby2IYmkLTQj8qu1z2XkFc,1452
|
33
33
|
migrations/0035_rollover_nidx_texts_4.py,sha256=W0_AUd01pjMpYMDC3yqF6HzDLgcnnPprL80kfyb1WZI,1187
|
34
|
+
migrations/0036_backfill_catalog_slug.py,sha256=mizRM-HfPswKq4iEmqofu4kIT6Gd97ruT3qhb257vZk,2954
|
34
35
|
migrations/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
|
35
36
|
migrations/pg/0001_bootstrap.py,sha256=Fsqkeof50m7fKiJN05kmNEMwiKDlOrAgcAS5sLLkutA,1256
|
36
37
|
migrations/pg/0002_catalog.py,sha256=Rsleecu351Ty19kYZgOpqX5G3MEAY8nMxCJrAeuS2Mw,1690
|
@@ -38,6 +39,7 @@ migrations/pg/0003_catalog_kbid_index.py,sha256=uKq_vtnuf73GVf0mtl2rhzdk_czAoEU1
|
|
38
39
|
migrations/pg/0004_catalog_facets.py,sha256=FJFASHjfEHG3sNve9BP2HnnLO4xr7dnR6Qpctnmt4LE,2180
|
39
40
|
migrations/pg/0005_purge_tasks_index.py,sha256=3mtyFgpcK0QQ_NONYay7V9xICijCLNkyTPuoc0PBjRg,1139
|
40
41
|
migrations/pg/0006_catalog_title_indexes.py,sha256=n2OGxwE4oeCwHAYaxBkja4t10BmwTjZ2IoCyOdjEBSc,1710
|
42
|
+
migrations/pg/0007_catalog_slug.py,sha256=mArzZCBO-RD5DkWxRIyDKgEzrnAcis1TOGvSNUe7Kgg,1150
|
41
43
|
migrations/pg/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
|
42
44
|
nucliadb/__init__.py,sha256=_abCmDJ_0ku483Os4UAjPX7Nywm39cQgAV_DiyjsKeQ,891
|
43
45
|
nucliadb/health.py,sha256=UIxxA4oms4HIsCRZM_SZsdkIZIlgzmOxw-qSHLlWuak,3465
|
@@ -162,7 +164,7 @@ nucliadb/ingest/orm/utils.py,sha256=fCQRuyecgqhaY7mcBG93oaXMkzkKb9BFjOcy4-ZiSNw,
|
|
162
164
|
nucliadb/ingest/orm/processor/__init__.py,sha256=Aqd9wCNTvggkMkCY3WvoI8spdr94Jnqk-0iq9XpLs18,922
|
163
165
|
nucliadb/ingest/orm/processor/auditing.py,sha256=TeYhXGJRyQ7ROytbb2u8R0fIh_FYi3HgTu3S1ribY3U,4623
|
164
166
|
nucliadb/ingest/orm/processor/data_augmentation.py,sha256=v-pj4GbBWSuO8dQyahs5UDr5ghsyfhCZDS0ftKd6ZYc,5179
|
165
|
-
nucliadb/ingest/orm/processor/pgcatalog.py,sha256=
|
167
|
+
nucliadb/ingest/orm/processor/pgcatalog.py,sha256=Zh6s0gj_bwDKPBXSs61jlMKJ6XP-dLnPGbrMGD6RHcM,3195
|
166
168
|
nucliadb/ingest/orm/processor/processor.py,sha256=jaEBwbv--WyoC8zcdxWAyF0dAzVA5crVDJl56Bqv1eI,31444
|
167
169
|
nucliadb/ingest/orm/processor/sequence_manager.py,sha256=uqEphtI1Ir_yk9jRl2gPf7BlzzXWovbARY5MNZSBI_8,1704
|
168
170
|
nucliadb/ingest/service/__init__.py,sha256=LHQFUkdmNBOWqBG0Md9sMMI7g5TQZ-hLAnhw6ZblrJg,2002
|
@@ -370,8 +372,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
|
|
370
372
|
nucliadb/writer/tus/s3.py,sha256=vF0NkFTXiXhXq3bCVXXVV-ED38ECVoUeeYViP8uMqcU,8357
|
371
373
|
nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
|
372
374
|
nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
|
373
|
-
nucliadb-6.5.0.
|
374
|
-
nucliadb-6.5.0.
|
375
|
-
nucliadb-6.5.0.
|
376
|
-
nucliadb-6.5.0.
|
377
|
-
nucliadb-6.5.0.
|
375
|
+
nucliadb-6.5.0.post4426.dist-info/METADATA,sha256=fRo_rQ3D5zAGctuqOfk22MzKACI4nZ8mijFy-JSGaT0,4152
|
376
|
+
nucliadb-6.5.0.post4426.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
377
|
+
nucliadb-6.5.0.post4426.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
|
378
|
+
nucliadb-6.5.0.post4426.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
|
379
|
+
nucliadb-6.5.0.post4426.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|