@eightyfourthousand/data-access 2026.4.1 → 2026.4.2
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.
- package/lib/auth.js +34 -35
- package/lib/auth.js.map +1 -1
- package/lib/bibliography.js +6 -7
- package/lib/bibliography.js.map +1 -1
- package/lib/client-ssr.js +4 -5
- package/lib/client-ssr.js.map +1 -1
- package/lib/feedback.js +37 -42
- package/lib/feedback.js.map +1 -1
- package/lib/folio.js +6 -7
- package/lib/folio.js.map +1 -1
- package/lib/glossary/batch.js +5 -7
- package/lib/glossary/batch.js.map +1 -1
- package/lib/glossary/instance.js +6 -7
- package/lib/glossary/instance.js.map +1 -1
- package/lib/glossary/landing.js +4 -5
- package/lib/glossary/landing.js.map +1 -1
- package/lib/glossary/pagination.js +24 -25
- package/lib/glossary/pagination.js.map +1 -1
- package/lib/imprint.js +6 -7
- package/lib/imprint.js.map +1 -1
- package/lib/library.js +23 -24
- package/lib/library.js.map +1 -1
- package/lib/local-storage.js +1 -1
- package/lib/local-storage.js.map +1 -1
- package/lib/lookup-entity.js +15 -16
- package/lib/lookup-entity.js.map +1 -1
- package/lib/passage/batch.js +21 -25
- package/lib/passage/batch.js.map +1 -1
- package/lib/passage/pagination.js +19 -22
- package/lib/passage/pagination.js.map +1 -1
- package/lib/passage/read.js +13 -15
- package/lib/passage/read.js.map +1 -1
- package/lib/passage/replace-persistence.js +13 -14
- package/lib/passage/replace-persistence.js.map +1 -1
- package/lib/passage/save.js +78 -82
- package/lib/passage/save.js.map +1 -1
- package/lib/proxy.js +38 -41
- package/lib/proxy.js.map +1 -1
- package/lib/publications.js +45 -48
- package/lib/publications.js.map +1 -1
- package/lib/replace.js +23 -6
- package/lib/replace.js.map +1 -1
- package/lib/storage.js +3 -4
- package/lib/storage.js.map +1 -1
- package/lib/types/annotation/heading.js +4 -1
- package/lib/types/annotation/heading.js.map +1 -1
- package/lib/types/annotation/transform.js +7 -6
- package/lib/types/annotation/transform.js.map +1 -1
- package/lib/types/bibliography.js +3 -4
- package/lib/types/bibliography.js.map +1 -1
- package/lib/types/glossary.js +2 -2
- package/lib/types/glossary.js.map +1 -1
- package/lib/types/imprint.js +11 -4
- package/lib/types/imprint.js.map +1 -1
- package/lib/types/passage.js +4 -1
- package/lib/types/passage.js.map +1 -1
- package/lib/types/title.js +2 -3
- package/lib/types/title.js.map +1 -1
- package/lib/types/work.js +11 -14
- package/lib/types/work.js.map +1 -1
- package/lib/use-bookmark.js +4 -5
- package/lib/use-bookmark.js.map +1 -1
- package/package.json +2 -2
package/lib/passage/batch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/batch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
const EMPTY_PASSAGE_CONNECTION = {
|
|
3
2
|
nodes: [],
|
|
4
3
|
nextCursor: null,
|
|
@@ -18,7 +17,6 @@ function buildPassageConnection(nodes, nextCursor, prevCursor, hasMoreAfter, has
|
|
|
18
17
|
};
|
|
19
18
|
}
|
|
20
19
|
function rowToPassageConnectionNode(row, workUuid) {
|
|
21
|
-
var _a, _b;
|
|
22
20
|
return {
|
|
23
21
|
uuid: row.uuid,
|
|
24
22
|
workUuid,
|
|
@@ -26,11 +24,11 @@ function rowToPassageConnectionNode(row, workUuid) {
|
|
|
26
24
|
label: row.label,
|
|
27
25
|
sort: row.sort,
|
|
28
26
|
type: row.type,
|
|
29
|
-
toh:
|
|
30
|
-
xmlId:
|
|
27
|
+
toh: row.toh ?? null,
|
|
28
|
+
xmlId: row.xmlId ?? null,
|
|
31
29
|
};
|
|
32
30
|
}
|
|
33
|
-
export const getWorkPassagesConnection =
|
|
31
|
+
export const getWorkPassagesConnection = async ({ client, workUuid, cursor, limit = DEFAULT_PASSAGE_CONNECTION_LIMIT, filter, direction = 'FORWARD', }) => {
|
|
34
32
|
const clampedLimit = Math.min(Math.max(limit, 1), MAX_PASSAGE_CONNECTION_LIMIT);
|
|
35
33
|
if (direction === 'AROUND') {
|
|
36
34
|
return getWorkPassagesAround({
|
|
@@ -44,7 +42,7 @@ export const getWorkPassagesConnection = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
44
42
|
const isForward = direction === 'FORWARD';
|
|
45
43
|
let cursorSort = null;
|
|
46
44
|
if (cursor) {
|
|
47
|
-
const { data: cursorPassage } =
|
|
45
|
+
const { data: cursorPassage } = await client
|
|
48
46
|
.from('passages')
|
|
49
47
|
.select('sort')
|
|
50
48
|
.eq('uuid', cursor)
|
|
@@ -64,21 +62,21 @@ export const getWorkPassagesConnection = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
64
62
|
? query.gt('sort', cursorSort)
|
|
65
63
|
: query.lt('sort', cursorSort);
|
|
66
64
|
}
|
|
67
|
-
if (
|
|
65
|
+
if (filter?.types && filter.types.length > 0) {
|
|
68
66
|
query = query.in('type', filter.types);
|
|
69
67
|
}
|
|
70
|
-
else if (filter
|
|
68
|
+
else if (filter?.type) {
|
|
71
69
|
query = query.filter('type', 'match', `${filter.type}.*`);
|
|
72
70
|
}
|
|
73
|
-
if (filter
|
|
71
|
+
if (filter?.label) {
|
|
74
72
|
query = query.ilike('label', filter.label);
|
|
75
73
|
}
|
|
76
|
-
const { data, error } =
|
|
74
|
+
const { data, error } = await query;
|
|
77
75
|
if (error) {
|
|
78
76
|
console.error('Error fetching passages:', error);
|
|
79
77
|
return EMPTY_PASSAGE_CONNECTION;
|
|
80
78
|
}
|
|
81
|
-
const passages = (data
|
|
79
|
+
const passages = (data ?? []);
|
|
82
80
|
const hasMore = passages.length > clampedLimit;
|
|
83
81
|
let resultPassages = hasMore ? passages.slice(0, clampedLimit) : passages;
|
|
84
82
|
if (!isForward) {
|
|
@@ -93,14 +91,13 @@ export const getWorkPassagesConnection = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
93
91
|
const firstPassage = resultPassages[0];
|
|
94
92
|
const lastPassage = resultPassages[resultPassages.length - 1];
|
|
95
93
|
return buildPassageConnection(nodes, hasMoreAfter ? lastPassage.uuid : null, hasMoreBefore ? firstPassage.uuid : null, hasMoreAfter, hasMoreBefore);
|
|
96
|
-
}
|
|
97
|
-
export const getWorkPassagesAround =
|
|
98
|
-
var _b, _c;
|
|
94
|
+
};
|
|
95
|
+
export const getWorkPassagesAround = async ({ client, workUuid, cursor, limit, filter, }) => {
|
|
99
96
|
if (!cursor) {
|
|
100
97
|
console.error('AROUND direction requires a cursor');
|
|
101
98
|
return EMPTY_PASSAGE_CONNECTION;
|
|
102
99
|
}
|
|
103
|
-
const { data: cursorPassage } =
|
|
100
|
+
const { data: cursorPassage } = await client
|
|
104
101
|
.from('passages')
|
|
105
102
|
.select('sort')
|
|
106
103
|
.eq('uuid', cursor)
|
|
@@ -127,20 +124,20 @@ export const getWorkPassagesAround = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
127
124
|
.gte('sort', cursorSort)
|
|
128
125
|
.order('sort', { ascending: true })
|
|
129
126
|
.limit(limitAfter + 1);
|
|
130
|
-
if (
|
|
127
|
+
if (filter?.types && filter.types.length > 0) {
|
|
131
128
|
beforeQuery = beforeQuery.in('type', filter.types);
|
|
132
129
|
afterQuery = afterQuery.in('type', filter.types);
|
|
133
130
|
}
|
|
134
|
-
else if (filter
|
|
131
|
+
else if (filter?.type) {
|
|
135
132
|
const pattern = `${filter.type}.*`;
|
|
136
133
|
beforeQuery = beforeQuery.filter('type', 'match', pattern);
|
|
137
134
|
afterQuery = afterQuery.filter('type', 'match', pattern);
|
|
138
135
|
}
|
|
139
|
-
if (filter
|
|
136
|
+
if (filter?.label) {
|
|
140
137
|
beforeQuery = beforeQuery.ilike('label', filter.label);
|
|
141
138
|
afterQuery = afterQuery.ilike('label', filter.label);
|
|
142
139
|
}
|
|
143
|
-
const [beforeResult, afterResult] =
|
|
140
|
+
const [beforeResult, afterResult] = await Promise.all([
|
|
144
141
|
beforeQuery,
|
|
145
142
|
afterQuery,
|
|
146
143
|
]);
|
|
@@ -148,8 +145,8 @@ export const getWorkPassagesAround = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
148
145
|
console.error('Error fetching passages around:', beforeResult.error || afterResult.error);
|
|
149
146
|
return EMPTY_PASSAGE_CONNECTION;
|
|
150
147
|
}
|
|
151
|
-
const passagesBefore = (
|
|
152
|
-
const passagesAfter = (
|
|
148
|
+
const passagesBefore = (beforeResult.data ?? []);
|
|
149
|
+
const passagesAfter = (afterResult.data ?? []);
|
|
153
150
|
const hasMoreBefore = passagesBefore.length > limitBefore;
|
|
154
151
|
const hasMoreAfter = passagesAfter.length > limitAfter;
|
|
155
152
|
const trimmedBefore = hasMoreBefore
|
|
@@ -166,5 +163,5 @@ export const getWorkPassagesAround = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
166
163
|
const firstPassage = resultPassages[0];
|
|
167
164
|
const lastPassage = resultPassages[resultPassages.length - 1];
|
|
168
165
|
return buildPassageConnection(nodes, hasMoreAfter ? lastPassage.uuid : null, hasMoreBefore ? firstPassage.uuid : null, hasMoreAfter, hasMoreBefore);
|
|
169
|
-
}
|
|
166
|
+
};
|
|
170
167
|
//# sourceMappingURL=pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/pagination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/pagination.ts"],"names":[],"mappings":"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"}
|
package/lib/passage/read.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import { annotationsFromDTO, passageFromDTO, } from '../types';
|
|
3
|
-
export const getPassage =
|
|
4
|
-
const { data } =
|
|
2
|
+
export const getPassage = async ({ client, uuid, }) => {
|
|
3
|
+
const { data } = await client
|
|
5
4
|
.rpc('get_passage_with_annotations', {
|
|
6
5
|
uuid_input: uuid,
|
|
7
6
|
})
|
|
@@ -11,10 +10,9 @@ export const getPassage = (_a) => __awaiter(void 0, [_a], void 0, function* ({ c
|
|
|
11
10
|
return undefined;
|
|
12
11
|
}
|
|
13
12
|
const dto = data;
|
|
14
|
-
return passageFromDTO(dto, annotationsFromDTO(
|
|
15
|
-
}
|
|
16
|
-
export const getPassageByUuidOrXmlId =
|
|
17
|
-
var _b, _c;
|
|
13
|
+
return passageFromDTO(dto, annotationsFromDTO(dto?.annotations || [], dto?.content.length || 0));
|
|
14
|
+
};
|
|
15
|
+
export const getPassageByUuidOrXmlId = async ({ client, uuid, xmlId, }) => {
|
|
18
16
|
if (!uuid && !xmlId) {
|
|
19
17
|
return null;
|
|
20
18
|
}
|
|
@@ -27,7 +25,7 @@ export const getPassageByUuidOrXmlId = (_a) => __awaiter(void 0, [_a], void 0, f
|
|
|
27
25
|
else if (xmlId) {
|
|
28
26
|
query = query.eq('xmlId', xmlId);
|
|
29
27
|
}
|
|
30
|
-
const { data, error } =
|
|
28
|
+
const { data, error } = await query.single();
|
|
31
29
|
if (error) {
|
|
32
30
|
console.error(`Error fetching passage ${uuid || xmlId}:`, error);
|
|
33
31
|
return null;
|
|
@@ -42,12 +40,12 @@ export const getPassageByUuidOrXmlId = (_a) => __awaiter(void 0, [_a], void 0, f
|
|
|
42
40
|
label: data.label,
|
|
43
41
|
sort: data.sort,
|
|
44
42
|
type: data.type,
|
|
45
|
-
toh:
|
|
46
|
-
xmlId:
|
|
43
|
+
toh: data.toh ?? null,
|
|
44
|
+
xmlId: data.xmlId ?? null,
|
|
47
45
|
};
|
|
48
|
-
}
|
|
49
|
-
export const getPassageUuidByXmlId =
|
|
50
|
-
const { data, error } =
|
|
46
|
+
};
|
|
47
|
+
export const getPassageUuidByXmlId = async ({ client, xmlId, }) => {
|
|
48
|
+
const { data, error } = await client
|
|
51
49
|
.from('passages')
|
|
52
50
|
.select('uuid, workUuid:work_uuid')
|
|
53
51
|
.eq('xmlId', xmlId)
|
|
@@ -56,6 +54,6 @@ export const getPassageUuidByXmlId = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
56
54
|
console.error(`Error fetching passage uuid for xmlId: ${xmlId}`, error);
|
|
57
55
|
return;
|
|
58
56
|
}
|
|
59
|
-
return data
|
|
60
|
-
}
|
|
57
|
+
return data?.uuid;
|
|
58
|
+
};
|
|
61
59
|
//# sourceMappingURL=read.js.map
|
package/lib/passage/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/read.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC;AAIlB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,MAAM,EACN,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM;SAC1B,GAAG,CAAC,8BAA8B,EAAE;QACnC,UAAU,EAAE,IAAI;KACjB,CAAC;SACD,MAAM,EAAE,CAAC;IAEZ,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAkB,CAAC;IAC/B,OAAO,cAAc,CACnB,GAAG,EACH,kBAAkB,CAAC,GAAG,EAAE,WAAW,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,EAC5C,MAAM,EACN,IAAI,EACJ,KAAK,GAKN,EAAyC,EAAE;IAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,GAAG,MAAM;SACf,IAAI,CAAC,UAAU,CAAC;SAChB,MAAM,CAAC,yDAAyD,CAAC,CAAC;IAErE,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,KAAK,EAAE,CAAC;QACjB,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;IAE7C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,IAAI,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;KAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,MAAM,EACN,KAAK,GAIN,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM;SACjC,IAAI,CAAC,UAAU,CAAC;SAChB,MAAM,CAAC,0BAA0B,CAAC;SAClC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,0CAA0C,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,OAAO,IAAI,EAAE,IAAI,CAAC;AACpB,CAAC,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import { ANNOTATIONS_TO_IGNORE, passagesToDTO, passagesToRowDTO, } from '../types';
|
|
3
|
-
export const fetchReplaceRows =
|
|
4
|
-
const { data, error } =
|
|
2
|
+
export const fetchReplaceRows = async ({ client, targetUuids, }) => {
|
|
3
|
+
const { data, error } = await client
|
|
5
4
|
.from('passages')
|
|
6
5
|
.select('uuid, work_uuid, content, label, sort, type, toh, xmlId')
|
|
7
6
|
.in('uuid', targetUuids);
|
|
@@ -12,7 +11,7 @@ export const fetchReplaceRows = (_a) => __awaiter(void 0, [_a], void 0, function
|
|
|
12
11
|
error: `Failed to fetch replace targets: ${error.message}`,
|
|
13
12
|
};
|
|
14
13
|
}
|
|
15
|
-
const rowsByUuid = new Map((data
|
|
14
|
+
const rowsByUuid = new Map((data ?? []).map((row) => [row.uuid, row]));
|
|
16
15
|
const missingUuids = targetUuids.filter((uuid) => !rowsByUuid.has(uuid));
|
|
17
16
|
if (missingUuids.length > 0) {
|
|
18
17
|
return {
|
|
@@ -26,9 +25,9 @@ export const fetchReplaceRows = (_a) => __awaiter(void 0, [_a], void 0, function
|
|
|
26
25
|
.map((uuid) => rowsByUuid.get(uuid))
|
|
27
26
|
.filter((row) => Boolean(row)),
|
|
28
27
|
};
|
|
29
|
-
}
|
|
30
|
-
export const fetchReplaceAnnotations =
|
|
31
|
-
const { data, error } =
|
|
28
|
+
};
|
|
29
|
+
export const fetchReplaceAnnotations = async ({ client, targetUuids, }) => {
|
|
30
|
+
const { data, error } = await client
|
|
32
31
|
.from('passage_annotations')
|
|
33
32
|
.select('uuid, content, end, start, type, passage_uuid, toh')
|
|
34
33
|
.in('passage_uuid', targetUuids)
|
|
@@ -42,17 +41,17 @@ export const fetchReplaceAnnotations = (_a) => __awaiter(void 0, [_a], void 0, f
|
|
|
42
41
|
}
|
|
43
42
|
return {
|
|
44
43
|
ok: true,
|
|
45
|
-
rawAnnotations: (data
|
|
44
|
+
rawAnnotations: (data ?? []),
|
|
46
45
|
};
|
|
47
|
-
}
|
|
48
|
-
export const persistReplaceChanges =
|
|
46
|
+
};
|
|
47
|
+
export const persistReplaceChanges = async ({ client, rawAnnotations, updatedPassages, }) => {
|
|
49
48
|
const passageRowDtos = passagesToRowDTO(updatedPassages);
|
|
50
49
|
const annotationDtos = passagesToDTO(updatedPassages).flatMap((passage) => passage.annotations || []);
|
|
51
50
|
const updatedPassageUuids = updatedPassages.map((passage) => passage.uuid);
|
|
52
51
|
const updatedAnnotationUuids = new Set(annotationDtos.map((a) => a.uuid));
|
|
53
52
|
const annotationsToDelete = rawAnnotations.filter((annotation) => updatedPassageUuids.includes(annotation.passage_uuid || '') &&
|
|
54
53
|
!updatedAnnotationUuids.has(annotation.uuid));
|
|
55
|
-
const { error: passageError } =
|
|
54
|
+
const { error: passageError } = await client
|
|
56
55
|
.from('passages')
|
|
57
56
|
.upsert(passageRowDtos, { onConflict: 'uuid' });
|
|
58
57
|
if (passageError) {
|
|
@@ -63,7 +62,7 @@ export const persistReplaceChanges = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
63
62
|
};
|
|
64
63
|
}
|
|
65
64
|
if (annotationDtos.length > 0) {
|
|
66
|
-
const { error: annotationError } =
|
|
65
|
+
const { error: annotationError } = await client
|
|
67
66
|
.from('passage_annotations')
|
|
68
67
|
.upsert(annotationDtos, { onConflict: 'uuid' });
|
|
69
68
|
if (annotationError) {
|
|
@@ -75,7 +74,7 @@ export const persistReplaceChanges = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
if (annotationsToDelete.length > 0) {
|
|
78
|
-
const { error: deleteError } =
|
|
77
|
+
const { error: deleteError } = await client
|
|
79
78
|
.from('passage_annotations')
|
|
80
79
|
.delete()
|
|
81
80
|
.in('uuid', annotationsToDelete.map((annotation) => annotation.uuid));
|
|
@@ -90,5 +89,5 @@ export const persistReplaceChanges = (_a) => __awaiter(void 0, [_a], void 0, fun
|
|
|
90
89
|
return {
|
|
91
90
|
ok: true,
|
|
92
91
|
};
|
|
93
|
-
}
|
|
92
|
+
};
|
|
94
93
|
//# sourceMappingURL=replace-persistence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace-persistence.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/replace-persistence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replace-persistence.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/passage/replace-persistence.ts"],"names":[],"mappings":"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"}
|
package/lib/passage/save.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import { ANNOTATIONS_TO_IGNORE, passagesToDTO, passagesToRowDTO, } from '../types';
|
|
3
2
|
const SAVE_PAGE_SIZE = 500;
|
|
4
|
-
export const savePassages =
|
|
3
|
+
export const savePassages = async ({ client, passages, }) => {
|
|
5
4
|
/**
|
|
6
5
|
* 1. Extract all annotations from savePassages
|
|
7
6
|
* 2. Query the database for all current annotations for the savePassages
|
|
@@ -14,13 +13,13 @@ export const savePassages = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
14
13
|
const passageRowDtos = passagesToRowDTO(passages);
|
|
15
14
|
const passageUuids = passages.map((p) => p.uuid);
|
|
16
15
|
const annotations = dtos.flatMap((p) => p.annotations || []);
|
|
17
|
-
const { data: existingAnnotations } =
|
|
16
|
+
const { data: existingAnnotations } = await client
|
|
18
17
|
.from('passage_annotations')
|
|
19
18
|
.select(`uuid`)
|
|
20
19
|
.in('passage_uuid', passageUuids)
|
|
21
20
|
.not('type', 'in', `(${ANNOTATIONS_TO_IGNORE.join(',')})`);
|
|
22
|
-
const annotationsToDelete = existingAnnotations
|
|
23
|
-
const { error: passageError } =
|
|
21
|
+
const annotationsToDelete = existingAnnotations?.filter((ea) => !annotations.find((a) => a.uuid === ea.uuid));
|
|
22
|
+
const { error: passageError } = await client
|
|
24
23
|
.from('passages')
|
|
25
24
|
.upsert(passageRowDtos, { onConflict: 'uuid' });
|
|
26
25
|
if (passageError) {
|
|
@@ -28,7 +27,7 @@ export const savePassages = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
28
27
|
return;
|
|
29
28
|
}
|
|
30
29
|
if (annotations.length > 0) {
|
|
31
|
-
const { error: annotationError } =
|
|
30
|
+
const { error: annotationError } = await client
|
|
32
31
|
.from('passage_annotations')
|
|
33
32
|
.upsert(annotations, { onConflict: 'uuid' });
|
|
34
33
|
if (annotationError) {
|
|
@@ -37,7 +36,7 @@ export const savePassages = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
if (annotationsToDelete && annotationsToDelete.length > 0) {
|
|
40
|
-
const { error: deleteError } =
|
|
39
|
+
const { error: deleteError } = await client
|
|
41
40
|
.from('passage_annotations')
|
|
42
41
|
.delete()
|
|
43
42
|
.in('uuid', annotationsToDelete.map((a) => a.uuid));
|
|
@@ -46,83 +45,80 @@ export const savePassages = (_a) => __awaiter(void 0, [_a], void 0, function* ({
|
|
|
46
45
|
throw deleteError;
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
|
-
}
|
|
50
|
-
function normalizePassageLabelsAfter(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
};
|
|
49
|
+
async function normalizePassageLabelsAfter({ client, workUuid, fromSort, fromLabel, delta, }) {
|
|
50
|
+
const parts = fromLabel.split('.');
|
|
51
|
+
const depth = parts.length;
|
|
52
|
+
const prefix = depth > 1 ? `${parts.slice(0, -1).join('.')}.` : '';
|
|
53
|
+
let nextInt = Number.parseInt(parts[depth - 1], 10) + Math.max(delta, 0);
|
|
54
|
+
let lastSort = fromSort;
|
|
55
|
+
let done = false;
|
|
56
|
+
while (!done) {
|
|
57
|
+
const { data, error } = await client
|
|
58
|
+
.from('passages')
|
|
59
|
+
.select('uuid, label, sort')
|
|
60
|
+
.eq('work_uuid', workUuid)
|
|
61
|
+
.gt('sort', lastSort)
|
|
62
|
+
.order('sort', { ascending: true })
|
|
63
|
+
.limit(SAVE_PAGE_SIZE);
|
|
64
|
+
if (error || !data || data.length === 0)
|
|
65
|
+
break;
|
|
66
|
+
const labelUpdates = [];
|
|
67
|
+
const prefixRenames = [];
|
|
68
|
+
for (const row of data) {
|
|
69
|
+
const rowParts = (row.label ?? '').split('.');
|
|
70
|
+
if (rowParts.length < depth || !row.label?.startsWith(prefix)) {
|
|
71
|
+
done = true;
|
|
68
72
|
break;
|
|
69
|
-
const labelUpdates = [];
|
|
70
|
-
const prefixRenames = [];
|
|
71
|
-
for (const row of data) {
|
|
72
|
-
const rowParts = ((_b = row.label) !== null && _b !== void 0 ? _b : '').split('.');
|
|
73
|
-
if (rowParts.length < depth || !((_c = row.label) === null || _c === void 0 ? void 0 : _c.startsWith(prefix))) {
|
|
74
|
-
done = true;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
if (rowParts.length > depth)
|
|
78
|
-
continue;
|
|
79
|
-
const expectedLabel = prefix + nextInt;
|
|
80
|
-
if (row.label === expectedLabel) {
|
|
81
|
-
done = true;
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
labelUpdates.push({ uuid: row.uuid, label: expectedLabel });
|
|
85
|
-
prefixRenames.push({
|
|
86
|
-
oldPrefix: `${row.label}.`,
|
|
87
|
-
newPrefix: `${expectedLabel}.`,
|
|
88
|
-
});
|
|
89
|
-
nextInt++;
|
|
90
73
|
}
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
74
|
+
if (rowParts.length > depth)
|
|
75
|
+
continue;
|
|
76
|
+
const expectedLabel = prefix + nextInt;
|
|
77
|
+
if (row.label === expectedLabel) {
|
|
78
|
+
done = true;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
labelUpdates.push({ uuid: row.uuid, label: expectedLabel });
|
|
82
|
+
prefixRenames.push({
|
|
83
|
+
oldPrefix: `${row.label}.`,
|
|
84
|
+
newPrefix: `${expectedLabel}.`,
|
|
85
|
+
});
|
|
86
|
+
nextInt++;
|
|
87
|
+
}
|
|
88
|
+
if (labelUpdates.length > 0) {
|
|
89
|
+
const { error: upsertError } = await client
|
|
90
|
+
.from('passages')
|
|
91
|
+
.upsert(labelUpdates, { onConflict: 'uuid' });
|
|
92
|
+
if (upsertError) {
|
|
93
|
+
console.error('Error normalizing passage labels:', upsertError);
|
|
94
|
+
}
|
|
95
|
+
for (const { oldPrefix, newPrefix } of prefixRenames) {
|
|
96
|
+
const { error: prefixError } = await client.rpc('rename_passage_label_prefix', {
|
|
97
|
+
p_work_uuid: workUuid,
|
|
98
|
+
p_old_prefix: oldPrefix,
|
|
99
|
+
p_new_prefix: newPrefix,
|
|
100
|
+
});
|
|
101
|
+
if (prefixError) {
|
|
102
|
+
console.error('Error renaming passage label prefix:', prefixError);
|
|
107
103
|
}
|
|
108
104
|
}
|
|
109
|
-
if (done || data.length < SAVE_PAGE_SIZE)
|
|
110
|
-
break;
|
|
111
|
-
lastSort = data[data.length - 1].sort;
|
|
112
105
|
}
|
|
113
|
-
|
|
106
|
+
if (done || data.length < SAVE_PAGE_SIZE)
|
|
107
|
+
break;
|
|
108
|
+
lastSort = data[data.length - 1].sort;
|
|
109
|
+
}
|
|
114
110
|
}
|
|
115
|
-
export const savePassagesWithDeletions =
|
|
111
|
+
export const savePassagesWithDeletions = async ({ client, passages, deletedUuids = [], }) => {
|
|
116
112
|
const inputUuids = passages.map((p) => p.uuid);
|
|
117
|
-
const { data: existingRows } =
|
|
113
|
+
const { data: existingRows } = await client
|
|
118
114
|
.from('passages')
|
|
119
115
|
.select('uuid')
|
|
120
116
|
.in('uuid', inputUuids);
|
|
121
|
-
const existingUuidSet = new Set((existingRows
|
|
117
|
+
const existingUuidSet = new Set((existingRows ?? []).map((r) => r.uuid));
|
|
122
118
|
const newPassages = passages.filter((p) => !existingUuidSet.has(p.uuid));
|
|
123
119
|
const sortedNewPassages = [...newPassages].sort((a, b) => b.sort - a.sort);
|
|
124
120
|
for (const passage of sortedNewPassages) {
|
|
125
|
-
const { error } =
|
|
121
|
+
const { error } = await client.rpc('shift_passage_sorts', {
|
|
126
122
|
p_work_uuid: passage.workUuid,
|
|
127
123
|
p_from_sort: passage.sort,
|
|
128
124
|
p_delta: 1,
|
|
@@ -132,7 +128,7 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
132
128
|
}
|
|
133
129
|
}
|
|
134
130
|
for (const passage of sortedNewPassages) {
|
|
135
|
-
|
|
131
|
+
await normalizePassageLabelsAfter({
|
|
136
132
|
client,
|
|
137
133
|
workUuid: passage.workUuid,
|
|
138
134
|
fromSort: passage.sort,
|
|
@@ -142,14 +138,14 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
142
138
|
}
|
|
143
139
|
let deletedCount = 0;
|
|
144
140
|
if (deletedUuids.length > 0) {
|
|
145
|
-
const { data: deletedPassages } =
|
|
141
|
+
const { data: deletedPassages } = await client
|
|
146
142
|
.from('passages')
|
|
147
143
|
.select('uuid, sort, label, work_uuid')
|
|
148
144
|
.in('uuid', deletedUuids);
|
|
149
145
|
if (deletedPassages && deletedPassages.length > 0) {
|
|
150
146
|
const sortedDeleted = [...deletedPassages].sort((a, b) => b.sort - a.sort);
|
|
151
147
|
for (const deletedPassage of sortedDeleted) {
|
|
152
|
-
|
|
148
|
+
await normalizePassageLabelsAfter({
|
|
153
149
|
client,
|
|
154
150
|
workUuid: deletedPassage.work_uuid,
|
|
155
151
|
fromSort: deletedPassage.sort,
|
|
@@ -157,14 +153,14 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
157
153
|
delta: -1,
|
|
158
154
|
});
|
|
159
155
|
}
|
|
160
|
-
const { error: deleteAnnotationsError } =
|
|
156
|
+
const { error: deleteAnnotationsError } = await client
|
|
161
157
|
.from('passage_annotations')
|
|
162
158
|
.delete()
|
|
163
159
|
.in('passage_uuid', deletedUuids);
|
|
164
160
|
if (deleteAnnotationsError) {
|
|
165
161
|
console.error('Error deleting annotations for deleted passages:', deleteAnnotationsError);
|
|
166
162
|
}
|
|
167
|
-
const { error: deletePassagesError } =
|
|
163
|
+
const { error: deletePassagesError } = await client
|
|
168
164
|
.from('passages')
|
|
169
165
|
.delete()
|
|
170
166
|
.in('uuid', deletedUuids);
|
|
@@ -183,13 +179,13 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
183
179
|
const passageRowDtos = passagesToRowDTO(passages);
|
|
184
180
|
const passageUuids = passages.map((p) => p.uuid);
|
|
185
181
|
const annotations = dtos.flatMap((p) => p.annotations || []);
|
|
186
|
-
const { data: existingAnnotations } =
|
|
182
|
+
const { data: existingAnnotations } = await client
|
|
187
183
|
.from('passage_annotations')
|
|
188
184
|
.select('uuid')
|
|
189
185
|
.in('passage_uuid', passageUuids)
|
|
190
186
|
.not('type', 'in', `(${ANNOTATIONS_TO_IGNORE.join(',')})`);
|
|
191
|
-
const annotationsToDelete = existingAnnotations
|
|
192
|
-
const { error: passageError } =
|
|
187
|
+
const annotationsToDelete = existingAnnotations?.filter((existingAnnotation) => !annotations.find((annotation) => annotation.uuid === existingAnnotation.uuid));
|
|
188
|
+
const { error: passageError } = await client
|
|
193
189
|
.from('passages')
|
|
194
190
|
.upsert(passageRowDtos, { onConflict: 'uuid' });
|
|
195
191
|
if (passageError) {
|
|
@@ -201,7 +197,7 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
201
197
|
};
|
|
202
198
|
}
|
|
203
199
|
if (annotations.length > 0) {
|
|
204
|
-
const { error: annotationError } =
|
|
200
|
+
const { error: annotationError } = await client
|
|
205
201
|
.from('passage_annotations')
|
|
206
202
|
.upsert(annotations, { onConflict: 'uuid' });
|
|
207
203
|
if (annotationError) {
|
|
@@ -214,7 +210,7 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
214
210
|
}
|
|
215
211
|
}
|
|
216
212
|
if (annotationsToDelete && annotationsToDelete.length > 0) {
|
|
217
|
-
const { error: deleteError } =
|
|
213
|
+
const { error: deleteError } = await client
|
|
218
214
|
.from('passage_annotations')
|
|
219
215
|
.delete()
|
|
220
216
|
.in('uuid', annotationsToDelete.map((annotation) => annotation.uuid));
|
|
@@ -227,5 +223,5 @@ export const savePassagesWithDeletions = (_a) => __awaiter(void 0, [_a], void 0,
|
|
|
227
223
|
savedCount: passages.length,
|
|
228
224
|
deletedCount,
|
|
229
225
|
};
|
|
230
|
-
}
|
|
226
|
+
};
|
|
231
227
|
//# sourceMappingURL=save.js.map
|