@paroicms/server 1.78.0 → 1.79.0
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/dist/common/child-ordering-query.d.ts +2 -3
- package/dist/common/child-ordering-query.js +14 -18
- package/dist/common/child-ordering-query.js.map +1 -1
- package/dist/helpers/running-instance-connector.js +2 -7
- package/dist/helpers/running-instance-connector.js.map +1 -1
- package/dist/modules/core/account/account.queries.js +53 -90
- package/dist/modules/core/account/account.queries.js.map +1 -1
- package/dist/modules/core/backup/backup.resolver.js +4 -1
- package/dist/modules/core/backup/backup.resolver.js.map +1 -1
- package/dist/modules/core/document/load-documents.queries.js +33 -47
- package/dist/modules/core/document/load-documents.queries.js.map +1 -1
- package/dist/modules/core/document/save-documents.queries.js +78 -168
- package/dist/modules/core/document/save-documents.queries.js.map +1 -1
- package/dist/modules/core/fields/load-fields-of.queries.js +8 -10
- package/dist/modules/core/fields/load-fields-of.queries.js.map +1 -1
- package/dist/modules/core/fields/load-fields.queries.js +12 -24
- package/dist/modules/core/fields/load-fields.queries.js.map +1 -1
- package/dist/modules/core/fields/save-fields.queries.js +22 -34
- package/dist/modules/core/fields/save-fields.queries.js.map +1 -1
- package/dist/modules/core/labeling/labeling.queries.js +21 -27
- package/dist/modules/core/labeling/labeling.queries.js.map +1 -1
- package/dist/modules/core/node/node.queries.d.ts +1 -1
- package/dist/modules/core/node/node.queries.js +37 -66
- package/dist/modules/core/node/node.queries.js.map +1 -1
- package/dist/modules/core/node/ordered-node.queries.js +12 -24
- package/dist/modules/core/node/ordered-node.queries.js.map +1 -1
- package/dist/modules/core/nodel/nodel-wrap.resolver.js +7 -12
- package/dist/modules/core/nodel/nodel-wrap.resolver.js.map +1 -1
- package/dist/modules/core/nodel/nodel.queries.d.ts +2 -2
- package/dist/modules/core/nodel/nodel.queries.js +54 -66
- package/dist/modules/core/nodel/nodel.queries.js.map +1 -1
- package/dist/modules/core/part/part-node.queries.d.ts +4 -4
- package/dist/modules/core/part/part-node.queries.js +26 -47
- package/dist/modules/core/part/part-node.queries.js.map +1 -1
- package/dist/modules/core/part/part.queries.js +86 -105
- package/dist/modules/core/part/part.queries.js.map +1 -1
- package/dist/modules/public-api/password-reset/password-reset.service.js +19 -17
- package/dist/modules/public-api/password-reset/password-reset.service.js.map +1 -1
- package/dist/modules/public-api/search-text/search-text.queries.js +53 -31
- package/dist/modules/public-api/search-text/search-text.queries.js.map +1 -1
- package/dist/modules/public-site/feed/feed-generator.js +25 -18
- package/dist/modules/public-site/feed/feed-generator.js.map +1 -1
- package/dist/modules/public-site/public-route/make-url.js +44 -30
- package/dist/modules/public-site/public-route/make-url.js.map +1 -1
- package/dist/modules/public-site/public-route/raw-document-payload.js +50 -40
- package/dist/modules/public-site/public-route/raw-document-payload.js.map +1 -1
- package/dist/public-payload/doc-values.queries.d.ts +2 -2
- package/dist/public-payload/doc-values.queries.js +32 -33
- package/dist/public-payload/doc-values.queries.js.map +1 -1
- package/dist/public-payload/excerpt.queries.js +9 -8
- package/dist/public-payload/excerpt.queries.js.map +1 -1
- package/dist/public-payload/get-siblings.queries.js +38 -47
- package/dist/public-payload/get-siblings.queries.js.map +1 -1
- package/dist/public-payload/parts.queries.js +34 -38
- package/dist/public-payload/parts.queries.js.map +1 -1
- package/dist/public-payload/taxonomies.queries.js +17 -15
- package/dist/public-payload/taxonomies.queries.js.map +1 -1
- package/dist/public-payload/translations.queries.js +5 -7
- package/dist/public-payload/translations.queries.js.map +1 -1
- package/dist/site-context/site-context.types.d.ts +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { invalidateDocumentRelationCache } from "../../../common/text-cache.js";
|
|
2
2
|
import { getTypeNameOf } from "../node/node.queries.js";
|
|
3
3
|
export async function setLabeling(siteContext, { labeledNodeId, taxonomyNodeId, terms, }) {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
.
|
|
7
|
-
.
|
|
8
|
-
.
|
|
9
|
-
.
|
|
10
|
-
.getRawMany();
|
|
4
|
+
const termIds = terms.map((term) => term.termNodeId);
|
|
5
|
+
const rows = await siteContext
|
|
6
|
+
.cn("PaNode as l")
|
|
7
|
+
.select("l.id as id")
|
|
8
|
+
.whereIn("l.id", termIds)
|
|
9
|
+
.andWhereNot("l.parentId", taxonomyNodeId);
|
|
11
10
|
if (rows.length > 0) {
|
|
12
|
-
const
|
|
13
|
-
throw new Error(`term(s) '${
|
|
11
|
+
const invalidTermIds = rows.map((row) => row.id);
|
|
12
|
+
throw new Error(`term(s) '${invalidTermIds.join("', '")}' should be in taxonomy '${taxonomyNodeId}'`);
|
|
14
13
|
}
|
|
15
14
|
await siteContext.cn.transaction(async (tx) => {
|
|
16
15
|
await deleteOldLabelings(tx, { labeledNodeId, taxonomyNodeId });
|
|
@@ -26,28 +25,23 @@ export async function setLabeling(siteContext, { labeledNodeId, taxonomyNodeId,
|
|
|
26
25
|
});
|
|
27
26
|
}
|
|
28
27
|
async function deleteOldLabelings(cn, { labeledNodeId, taxonomyNodeId }) {
|
|
29
|
-
await cn
|
|
30
|
-
.
|
|
31
|
-
.
|
|
32
|
-
.
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
await cn("PaLabeling")
|
|
29
|
+
.where("labeledId", labeledNodeId)
|
|
30
|
+
.whereExists(function () {
|
|
31
|
+
this.select(1)
|
|
32
|
+
.from("PaNode as t")
|
|
33
|
+
.whereRaw("t.id = PaLabeling.termId")
|
|
34
|
+
.andWhere("t.parentId", taxonomyNodeId);
|
|
35
35
|
})
|
|
36
|
-
.
|
|
37
|
-
select 1
|
|
38
|
-
from PaNode t
|
|
39
|
-
where t.id = PaLabeling.termId
|
|
40
|
-
and t.parentId = :taxonomyNodeId)`, { taxonomyNodeId })
|
|
41
|
-
.execute();
|
|
36
|
+
.delete();
|
|
42
37
|
}
|
|
43
38
|
async function insertNewLabelings(labeledNodeId, { terms, cn }) {
|
|
44
39
|
for (const term of terms) {
|
|
45
|
-
await cn
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
.
|
|
49
|
-
|
|
50
|
-
.execute();
|
|
40
|
+
await cn("PaLabeling").insert({
|
|
41
|
+
labeledId: labeledNodeId,
|
|
42
|
+
termId: term.termNodeId,
|
|
43
|
+
lead: term.isLead,
|
|
44
|
+
});
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
47
|
//# sourceMappingURL=labeling.queries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labeling.queries.js","sourceRoot":"","sources":["../../../../src/modules/core/labeling/labeling.queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAaxD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAwB,EACxB,EACE,aAAa,EACb,cAAc,EACd,KAAK,GAKN;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"labeling.queries.js","sourceRoot":"","sources":["../../../../src/modules/core/labeling/labeling.queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAaxD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAwB,EACxB,EACE,aAAa,EACb,cAAc,EACd,KAAK,GAKN;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,MAAM,WAAW;SAC3B,EAAE,CAAC,aAAa,CAAC;SACjB,MAAM,CAAC,YAAY,CAAC;SACpB,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;SACxB,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,YAAY,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B,cAAc,GAAG,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC5C,MAAM,kBAAkB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;QAEhE,MAAM,kBAAkB,CAAC,aAAa,EAAE;YACtC,KAAK;YACL,EAAE,EAAE,EAAE;SACP,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,+BAA+B,CAAC,WAAW,EAAE;QACjD,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,SAAS;QACnB,gBAAgB,EAAE,MAAM,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,EAAoB,EACpB,EAAE,aAAa,EAAE,cAAc,EAAqD;IAEpF,MAAM,EAAE,CAAC,YAAY,CAAC;SACnB,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC;SACjC,WAAW,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;aACX,IAAI,CAAC,aAAa,CAAC;aACnB,QAAQ,CAAC,0BAA0B,CAAC;aACpC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC,CAAC;SACD,MAAM,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,aAAqB,EACrB,EAAE,KAAK,EAAE,EAAE,EAAiD;IAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;YAC5B,SAAS,EAAE,aAAa;YACxB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,IAAI,EAAE,IAAI,CAAC,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Tracker } from "@paroicms/internal-server-lib";
|
|
2
2
|
import type { ScDocumentType } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import type { SiteContext } from "../../../site-context/site-context.types.js";
|
|
4
4
|
import type { LabelingSeed } from "../labeling/labeling.queries.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { dateValOrUndef, listVal, nbVal, strVal } from "@paroi/data-formatters-lib";
|
|
2
2
|
import { mainDbSchemaName } from "@paroicms/connector";
|
|
3
3
|
import { getNodeTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
4
|
+
import { sqliteDateTime } from "@paroicms/internal-server-lib";
|
|
4
5
|
import { ApiError } from "../../../common/api-error-handler.js";
|
|
5
6
|
import { formatLabelingObjectType, toNodeObjectType } from "../../../common/data-format.js";
|
|
6
7
|
import { depKeysOfNodeRelationCache, invalidateMultipleDocumentsInCache, invalidateNodeInCache, makeCacheDependencyKey, makeDependencyKeysForDocuments, } from "../../../common/text-cache.js";
|
|
7
8
|
import { getDocumentNodeIdOfPart } from "../part/part.queries.js";
|
|
8
9
|
export async function getTypeNameOf(siteContext, nodeId) {
|
|
9
|
-
const row = await siteContext
|
|
10
|
-
.
|
|
11
|
-
.select("l.typeName"
|
|
12
|
-
.
|
|
13
|
-
.
|
|
14
|
-
.getRawOne();
|
|
10
|
+
const row = await siteContext
|
|
11
|
+
.cn("PaNode as l")
|
|
12
|
+
.select("l.typeName")
|
|
13
|
+
.where("l.id", nodeId)
|
|
14
|
+
.first();
|
|
15
15
|
if (!row)
|
|
16
16
|
throw new ApiError(`cannot find node '${nodeId}'`, { status: 404 });
|
|
17
17
|
return strVal(row.typeName);
|
|
@@ -24,48 +24,33 @@ export async function getDocumentSchemaOf(siteContext, nodeId) {
|
|
|
24
24
|
return nodeType;
|
|
25
25
|
}
|
|
26
26
|
export async function findOneNode({ cn }, id) {
|
|
27
|
-
const node = await cn
|
|
28
|
-
.
|
|
29
|
-
.
|
|
30
|
-
.
|
|
31
|
-
.addSelect("l.typeName", "typeName")
|
|
32
|
-
.addSelect("l.relativeId", "relativeId")
|
|
33
|
-
.addSelect("l.publishDate", "publishDate")
|
|
34
|
-
.from("PaNode", "l")
|
|
35
|
-
.where("l.id = :id", { id })
|
|
36
|
-
.getRawOne();
|
|
27
|
+
const node = await cn("PaNode as l")
|
|
28
|
+
.select("l.id", "l.parentId", "l.typeName", "l.relativeId", "l.publishDate")
|
|
29
|
+
.where("l.id", id)
|
|
30
|
+
.first();
|
|
37
31
|
if (!node)
|
|
38
32
|
throw new ApiError(`can't find node ${id}`, { status: 404 });
|
|
39
33
|
return toNodeObjectType(node);
|
|
40
34
|
}
|
|
41
35
|
export async function readTranslationsOf({ cn }, nodeId) {
|
|
42
|
-
const rows = await cn
|
|
43
|
-
.createQueryBuilder()
|
|
44
|
-
.addSelect("s.language", "language")
|
|
45
|
-
.from("PaNodel", "s")
|
|
46
|
-
.where("s.nodeId = :nodeId", { nodeId })
|
|
47
|
-
.getRawMany();
|
|
36
|
+
const rows = await cn("PaNodel as s").select("s.language").where("s.nodeId", nodeId);
|
|
48
37
|
return rows.map((row) => strVal(row.language));
|
|
49
38
|
}
|
|
50
39
|
export async function setNodePublishDate(siteContext, { nodeId, publishDate }) {
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
.
|
|
54
|
-
.
|
|
55
|
-
.
|
|
56
|
-
.
|
|
57
|
-
.getRawOne();
|
|
40
|
+
const { cn, siteSchema } = siteContext;
|
|
41
|
+
const row = await siteContext
|
|
42
|
+
.cn("PaNode as l")
|
|
43
|
+
.select("l.typeName", "l.publishDate")
|
|
44
|
+
.where("l.id", nodeId)
|
|
45
|
+
.first();
|
|
58
46
|
if (!row)
|
|
59
47
|
throw new ApiError(`cannot find node '${nodeId}'`, { status: 404 });
|
|
60
48
|
const typeName = strVal(row.typeName);
|
|
61
49
|
const prevPublishDate = dateValOrUndef(row.publishDate);
|
|
62
|
-
const nodeType = getNodeTypeByName(
|
|
63
|
-
await
|
|
64
|
-
.
|
|
65
|
-
.update(
|
|
66
|
-
.set({ publishDate })
|
|
67
|
-
.where("id = :nodeId", { nodeId })
|
|
68
|
-
.execute();
|
|
50
|
+
const nodeType = getNodeTypeByName(siteSchema, typeName);
|
|
51
|
+
await cn("PaNode")
|
|
52
|
+
.where("id", nodeId)
|
|
53
|
+
.update({ publishDate: sqliteDateTime(publishDate) });
|
|
69
54
|
if (nodeType.kind === "document") {
|
|
70
55
|
await invalidateOrScheduleDocument(siteContext, { nodeId, publishDate, prevPublishDate });
|
|
71
56
|
}
|
|
@@ -117,47 +102,33 @@ async function invalidateOrSchedulePart(siteContext, options) {
|
|
|
117
102
|
}
|
|
118
103
|
}
|
|
119
104
|
export async function loadLabelingTermsOf({ cn }, labeledId) {
|
|
120
|
-
const rows = await cn
|
|
121
|
-
.
|
|
122
|
-
.
|
|
123
|
-
.
|
|
124
|
-
.
|
|
125
|
-
.from("PaLabeling", "f")
|
|
126
|
-
.innerJoin("PaNode", "l1", "l1.id = f.termId")
|
|
127
|
-
.innerJoin("PaNode", "l2", "l2.id = l1.parentId")
|
|
128
|
-
.andWhere("f.labeledId = :labeledId", { labeledId })
|
|
129
|
-
.getRawMany();
|
|
105
|
+
const rows = await cn("PaLabeling as f")
|
|
106
|
+
.select("f.lead", "f.termId", "l2.typeName as parentTypeName")
|
|
107
|
+
.innerJoin("PaNode as l1", "l1.id", "f.termId")
|
|
108
|
+
.innerJoin("PaNode as l2", "l2.id", "l1.parentId")
|
|
109
|
+
.where("f.labeledId", labeledId);
|
|
130
110
|
return listVal(rows, formatLabelingObjectType);
|
|
131
111
|
}
|
|
132
112
|
export async function getNodeDepth(siteContext, tracker, nodeId) {
|
|
133
|
-
const row = await siteContext.cn
|
|
134
|
-
.createQueryBuilder()
|
|
135
|
-
.select("l.depth", "depth")
|
|
136
|
-
.from("PaNode", "l")
|
|
137
|
-
.andWhere("l.id = :nodeId", { nodeId })
|
|
138
|
-
.getRawOne();
|
|
113
|
+
const row = await siteContext.cn("PaNode as l").select("l.depth").where("l.id", nodeId).first();
|
|
139
114
|
tracker.trackAccess(mainDbSchemaName, "PaNode", "read");
|
|
140
115
|
if (!row)
|
|
141
116
|
throw new ApiError(`cannot find node '${nodeId}'`, { status: 404 });
|
|
142
117
|
return nbVal(row.depth);
|
|
143
118
|
}
|
|
144
119
|
export async function countNodeChildrenOf(siteContext, parendId) {
|
|
145
|
-
const
|
|
146
|
-
.
|
|
147
|
-
.
|
|
148
|
-
.
|
|
149
|
-
.
|
|
150
|
-
|
|
151
|
-
return nbVal(row?.cnt);
|
|
120
|
+
const result = await siteContext
|
|
121
|
+
.cn("PaNode as l")
|
|
122
|
+
.count("* as cnt")
|
|
123
|
+
.where("l.parentId", parendId)
|
|
124
|
+
.first();
|
|
125
|
+
return nbVal(result?.cnt);
|
|
152
126
|
}
|
|
153
127
|
export async function getScheduledNodes(siteContext) {
|
|
154
|
-
const rows = await siteContext
|
|
155
|
-
.
|
|
156
|
-
.select("l.id", "
|
|
157
|
-
.
|
|
158
|
-
.from("PaNode", "l")
|
|
159
|
-
.andWhere("l.publishDate > current_timestamp")
|
|
160
|
-
.getRawMany();
|
|
128
|
+
const rows = await siteContext
|
|
129
|
+
.cn("PaNode as l")
|
|
130
|
+
.select("l.id", "l.publishDate")
|
|
131
|
+
.whereRaw("l.publishDate > current_timestamp");
|
|
161
132
|
return rows.map((row) => ({
|
|
162
133
|
nodeId: strVal(row.id),
|
|
163
134
|
publishDate: strVal(row.publishDate),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.queries.js","sourceRoot":"","sources":["../../../../src/modules/core/node/node.queries.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"node.queries.js","sourceRoot":"","sources":["../../../../src/modules/core/node/node.queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAgB,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,qBAAqB,EACrB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAUlE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAoC,EACpC,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,WAAW;SAC1B,EAAE,CAAC,aAAa,CAAC;SACjB,MAAM,CAAC,YAAY,CAAC;SACpB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;SACrB,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmD,EACnD,MAAc;IAEd,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,GAAG,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAE,EAAE,EAAe,EAAE,EAAU;IAC/D,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC;SACjC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC;SAC3E,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;SACjB,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAExE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAE,EAAE,EAAe,EAAE,MAAc;IAC1E,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAErF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAwB,EACxB,EAAE,MAAM,EAAE,WAAW,EAAyC;IAE9D,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;IAEvC,MAAM,GAAG,GAAG,MAAM,WAAW;SAC1B,EAAE,CAAC,aAAa,CAAC;SACjB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC;SACrC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;SACrB,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAGzD,MAAM,EAAE,CAAC,QAAQ,CAAC;SACf,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;SACnB,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAGxD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,4BAA4B,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,MAAM,wBAAwB,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,WAAwB,EACxB,OAAsE;IAEtE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,eAAe,KAAK,SAAS,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC;IAEvF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC;QAEjC,IAAI,YAAY,EAAE,CAAC;YAEjB,MAAM,qBAAqB,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YAEN,MAAM,aAAa,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;gBAClE,cAAc,EAAE,MAAM;gBACtB,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,WAAW,CAAC,SAAS,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QAEN,IAAI,YAAY,EAAE,CAAC;YAEjB,MAAM,kCAAkC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE;YAClE,cAAc,EAAE,MAAM;YACtB,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,WAAwB,EACxB,OAAsE;IAEtE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,cAAc,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACzF,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,MAAM,kCAAkC,CAAC,WAAW,EAAE;YACpD,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,8BAA8B,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAE,EAAE,EAAe,EACnB,SAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC;SACrC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,+BAA+B,CAAC;SAC7D,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC;SAC9C,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC;SACjD,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEnC,OAAO,OAAO,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAoC,EACpC,OAAgB,EAChB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhG,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAoC,EACpC,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,WAAW;SAC7B,EAAE,CAAC,aAAa,CAAC;SACjB,KAAK,CAAC,UAAU,CAAC;SACjB,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC;SAC7B,KAAK,EAAE,CAAC;IAEX,OAAO,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAoC;IAEpC,MAAM,IAAI,GAAG,MAAM,WAAW;SAC3B,EAAE,CAAC,aAAa,CAAC;SACjB,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;SAC/B,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IAEjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;KACrC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -2,20 +2,16 @@ import { nbVal, strVal } from "@paroi/data-formatters-lib";
|
|
|
2
2
|
import { invalidateMultipleDocumentsInCache } from "../../../common/text-cache.js";
|
|
3
3
|
export async function reorderNodes(siteContext, { nodeIds, parentNodeId, listName, }) {
|
|
4
4
|
const { cn } = siteContext;
|
|
5
|
-
|
|
6
|
-
.
|
|
7
|
-
.
|
|
8
|
-
.
|
|
9
|
-
.from("PaNode", "l")
|
|
10
|
-
.innerJoin("PaOrderedNode", "o", "l.id = o.nodeId")
|
|
11
|
-
.andWhere("l.parentId = :parentNodeId", { parentNodeId })
|
|
5
|
+
let query = cn("PaNode as l")
|
|
6
|
+
.select(["l.id as nodeId", "o.orderNum as orderNum"])
|
|
7
|
+
.innerJoin("PaOrderedNode as o", "l.id", "o.nodeId")
|
|
8
|
+
.where("l.parentId", parentNodeId)
|
|
12
9
|
.orderBy("o.orderNum", "ASC")
|
|
13
|
-
.
|
|
10
|
+
.orderBy("l.id", "ASC");
|
|
14
11
|
if (listName) {
|
|
15
|
-
query.innerJoin("PaPartNode
|
|
16
|
-
query.andWhere("p.listName = :listName", { listName });
|
|
12
|
+
query = query.innerJoin("PaPartNode as p", "p.nodeId", "l.id").where("p.listName", listName);
|
|
17
13
|
}
|
|
18
|
-
const rows = await query
|
|
14
|
+
const rows = await query;
|
|
19
15
|
const oldItems = rows.map((row) => ({
|
|
20
16
|
nodeId: strVal(row.nodeId),
|
|
21
17
|
orderNum: nbVal(row.orderNum),
|
|
@@ -35,23 +31,15 @@ export async function reorderNodes(siteContext, { nodeIds, parentNodeId, listNam
|
|
|
35
31
|
await cn.transaction(async (tx) => {
|
|
36
32
|
for (const newItem of newItems) {
|
|
37
33
|
if (oldItems.find((old) => old.nodeId === newItem.nodeId)) {
|
|
38
|
-
await tx
|
|
39
|
-
.
|
|
40
|
-
.
|
|
41
|
-
.set({ orderNum: newItem.orderNum })
|
|
42
|
-
.where("nodeId = :nodeId", { nodeId: newItem.nodeId })
|
|
43
|
-
.execute();
|
|
34
|
+
await tx("PaOrderedNode")
|
|
35
|
+
.update({ orderNum: newItem.orderNum })
|
|
36
|
+
.where("nodeId", newItem.nodeId);
|
|
44
37
|
}
|
|
45
38
|
else {
|
|
46
|
-
await tx
|
|
47
|
-
.createQueryBuilder()
|
|
48
|
-
.insert()
|
|
49
|
-
.into("PaOrderedNode")
|
|
50
|
-
.values({
|
|
39
|
+
await tx("PaOrderedNode").insert({
|
|
51
40
|
nodeId: newItem.nodeId,
|
|
52
41
|
orderNum: newItem.orderNum,
|
|
53
|
-
})
|
|
54
|
-
.execute();
|
|
42
|
+
});
|
|
55
43
|
}
|
|
56
44
|
}
|
|
57
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordered-node.queries.js","sourceRoot":"","sources":["../../../../src/modules/core/node/ordered-node.queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAGnF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAwB,EACxB,EACE,OAAO,EACP,YAAY,EACZ,QAAQ,GACuD;IAEjE,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;IAE3B,
|
|
1
|
+
{"version":3,"file":"ordered-node.queries.js","sourceRoot":"","sources":["../../../../src/modules/core/node/ordered-node.queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AAGnF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,WAAwB,EACxB,EACE,OAAO,EACP,YAAY,EACZ,QAAQ,GACuD;IAEjE,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;IAE3B,IAAI,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC;SAC1B,MAAM,CAAC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;SACpD,SAAS,CAAC,oBAAoB,EAAE,MAAM,EAAE,UAAU,CAAC;SACnD,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC;SACjC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;SAC5B,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE1B,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,IAAI,GAAU,MAAM,KAAK,CAAC;IAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;KAC9B,CAAC,CAAC,CAAC;IAEJ,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,QAAQ,GAA2C,EAAE,CAAC;IAC5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,EAAE,QAAQ,CAAC;IACb,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,EAAE,QAAQ,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAChC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,MAAM,EAAE,CAAC,eAAe,CAAC;qBACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;qBACtC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;oBAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,kCAAkC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -62,22 +62,17 @@ export const nodelWrapResolvers = {
|
|
|
62
62
|
},
|
|
63
63
|
NodelWrap: {
|
|
64
64
|
translatedInto: async ({ nodeId }, _args, { req, siteContext }) => {
|
|
65
|
-
const nodels = await siteContext
|
|
66
|
-
.
|
|
67
|
-
.select("s.language
|
|
68
|
-
.
|
|
69
|
-
.andWhere("s.nodeId = :nodeId", { nodeId })
|
|
70
|
-
.getRawMany();
|
|
65
|
+
const nodels = await siteContext
|
|
66
|
+
.cn("PaNodel as s")
|
|
67
|
+
.select("s.language as language")
|
|
68
|
+
.where("s.nodeId", nodeId);
|
|
71
69
|
return nodels.map((item) => strVal(item.language));
|
|
72
70
|
},
|
|
73
71
|
translations: async ({ nodeId }, _args, { req, siteContext }) => {
|
|
74
72
|
const { cn } = siteContext;
|
|
75
|
-
const rows = await cn
|
|
76
|
-
.
|
|
77
|
-
.
|
|
78
|
-
.from("PaNodel", "nodel")
|
|
79
|
-
.andWhere("nodel.nodeId = :nodeId", { nodeId })
|
|
80
|
-
.getRawMany();
|
|
73
|
+
const rows = await cn("PaNodel as nodel")
|
|
74
|
+
.select("nodel.language as language")
|
|
75
|
+
.where("nodel.nodeId", nodeId);
|
|
81
76
|
const translations = rows.map((row) => {
|
|
82
77
|
const language = strVal(row.language);
|
|
83
78
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodel-wrap.resolver.js","sourceRoot":"","sources":["../../../../src/modules/core/nodel/nodel-wrap.resolver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nodel-wrap.resolver.js","sourceRoot":"","sources":["../../../../src/modules/core/nodel/nodel-wrap.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type NodelRow } from "@paroicms/connector";
|
|
2
2
|
import type { Tracker } from "@paroicms/internal-server-lib";
|
|
3
3
|
import { type ParsedNodelId } from "@paroicms/public-anywhere-lib";
|
|
4
|
-
import type {
|
|
4
|
+
import type { Knex } from "knex";
|
|
5
5
|
import type { SiteContext } from "../../../site-context/site-context.types.js";
|
|
6
6
|
export interface NodelWrapSeed {
|
|
7
7
|
nodelId: string;
|
|
@@ -48,7 +48,7 @@ export declare function getBreadcrumb(siteContext: Pick<SiteContext, "cn" | "sit
|
|
|
48
48
|
ensurePublished?: boolean;
|
|
49
49
|
skipHome?: boolean;
|
|
50
50
|
}): Promise<BreadcrumbItem[]>;
|
|
51
|
-
export declare function isOrphanNode(cn:
|
|
51
|
+
export declare function isOrphanNode(cn: Knex, nodeId: string): Promise<boolean>;
|
|
52
52
|
export declare function searchDocuments(siteContext: SiteContext, options: {
|
|
53
53
|
language: string;
|
|
54
54
|
queryString: string;
|
|
@@ -10,14 +10,9 @@ import { getParentNodelIdOf } from "../document/load-documents.queries.js";
|
|
|
10
10
|
import { getNodeDepth, getTypeNameOf } from "../node/node.queries.js";
|
|
11
11
|
import { getDocumentNodeIdOfPart } from "../part/part.queries.js";
|
|
12
12
|
export async function nodeNodels({ cn }, nodeId) {
|
|
13
|
-
const nodels = await cn
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
.addSelect("s.nodeId", "nodeId")
|
|
17
|
-
.addSelect("s.ready", "ready")
|
|
18
|
-
.from("PaNodel", "s")
|
|
19
|
-
.where("s.nodeId = :nodeId", { nodeId })
|
|
20
|
-
.getRawMany();
|
|
13
|
+
const nodels = await cn("PaNodel as s")
|
|
14
|
+
.select(["s.language as language", "s.nodeId as nodeId", "s.ready as ready"])
|
|
15
|
+
.where("s.nodeId", nodeId);
|
|
21
16
|
return nodels.map((nodel) => {
|
|
22
17
|
return {
|
|
23
18
|
nodeId,
|
|
@@ -27,15 +22,11 @@ export async function nodeNodels({ cn }, nodeId) {
|
|
|
27
22
|
});
|
|
28
23
|
}
|
|
29
24
|
export async function findOneNodel({ cn }, nodelId) {
|
|
30
|
-
const found = await cn
|
|
31
|
-
.
|
|
32
|
-
.
|
|
33
|
-
.
|
|
34
|
-
.
|
|
35
|
-
.from("PaNodel", "s")
|
|
36
|
-
.where("s.nodeId = :nodeId", { nodeId: nodelId.nodeId })
|
|
37
|
-
.andWhere("s.language = :language", { language: nodelId.language })
|
|
38
|
-
.getRawOne();
|
|
25
|
+
const found = await cn("PaNodel as s")
|
|
26
|
+
.select(["s.language as language", "s.nodeId as nodeId", "s.ready as ready"])
|
|
27
|
+
.where("s.nodeId", nodelId.nodeId)
|
|
28
|
+
.andWhere("s.language", nodelId.language)
|
|
29
|
+
.first();
|
|
39
30
|
if (!found) {
|
|
40
31
|
throw new ApiError(`can't find nodel ${nodelId.language}:${nodelId.nodeId}`, {
|
|
41
32
|
status: 404,
|
|
@@ -102,10 +93,7 @@ async function getChildNodelsForAllLanguages(siteContext, options) {
|
|
|
102
93
|
const query = createBaseChildNodelsForAllLanguagesQueryBuilder(siteContext, {
|
|
103
94
|
parentNodeId: options.parentNodeId,
|
|
104
95
|
typeNames: parentDocumentType.regularChildren ?? [],
|
|
105
|
-
})
|
|
106
|
-
.select("s.nodeId", "nodeId")
|
|
107
|
-
.addSelect("s.language", "language")
|
|
108
|
-
.addSelect("s.ready", "ready");
|
|
96
|
+
}).select(["s.nodeId as nodeId", "s.language as language", "s.ready as ready"]);
|
|
109
97
|
applyRegularChildrenSortingOnQuery(siteContext, {
|
|
110
98
|
query,
|
|
111
99
|
parentDocumentType,
|
|
@@ -115,16 +103,25 @@ async function getChildNodelsForAllLanguages(siteContext, options) {
|
|
|
115
103
|
if (options.pagination) {
|
|
116
104
|
query.limit(options.pagination.limit).offset(options.pagination.start);
|
|
117
105
|
}
|
|
118
|
-
const rows = await query
|
|
106
|
+
const rows = await query;
|
|
119
107
|
const formattedRows = rows.map((row) => ({
|
|
120
108
|
nodeId: strVal(row.nodeId),
|
|
121
109
|
language: strVal(row.language),
|
|
122
110
|
ready: boolVal(row.ready),
|
|
123
111
|
}));
|
|
124
112
|
if (options.pagination) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
113
|
+
let total;
|
|
114
|
+
if (rows.length < options.pagination.limit) {
|
|
115
|
+
total = options.pagination.start + rows.length;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const countQuery = createBaseChildNodelsForAllLanguagesQueryBuilder(siteContext, {
|
|
119
|
+
parentNodeId: options.parentNodeId,
|
|
120
|
+
typeNames: parentDocumentType.regularChildren ?? [],
|
|
121
|
+
});
|
|
122
|
+
const countResult = await countQuery.count("* as total").first();
|
|
123
|
+
total = nbVal(countResult?.total);
|
|
124
|
+
}
|
|
128
125
|
return {
|
|
129
126
|
list: formattedRows,
|
|
130
127
|
total,
|
|
@@ -133,14 +130,11 @@ async function getChildNodelsForAllLanguages(siteContext, options) {
|
|
|
133
130
|
return formattedRows;
|
|
134
131
|
}
|
|
135
132
|
function createBaseChildNodelsForAllLanguagesQueryBuilder(siteContext, { parentNodeId, typeNames, }) {
|
|
136
|
-
return siteContext
|
|
137
|
-
.
|
|
138
|
-
.
|
|
139
|
-
.
|
|
140
|
-
.
|
|
141
|
-
parentId: parentNodeId,
|
|
142
|
-
})
|
|
143
|
-
.andWhere("l.typeName in (:...typeNames)", { typeNames });
|
|
133
|
+
return siteContext
|
|
134
|
+
.cn("PaNodel as s")
|
|
135
|
+
.innerJoin("PaNode as l", "l.id", "s.nodeId")
|
|
136
|
+
.where("l.parentId", parentNodeId)
|
|
137
|
+
.whereIn("l.typeName", typeNames);
|
|
144
138
|
}
|
|
145
139
|
export async function setNodelReady(siteContext, { nodelId, ready }) {
|
|
146
140
|
const typeName = await getTypeNameOf(siteContext, nodelId.nodeId);
|
|
@@ -148,15 +142,10 @@ export async function setNodelReady(siteContext, { nodelId, ready }) {
|
|
|
148
142
|
if (nodeType.kind !== "document" && nodeType.kind !== "part") {
|
|
149
143
|
throw new Error(`invalid nodel type '${typeName}'`);
|
|
150
144
|
}
|
|
151
|
-
await siteContext.cn
|
|
152
|
-
.createQueryBuilder()
|
|
153
|
-
.update("PaNodel")
|
|
154
|
-
.set({ ready })
|
|
155
|
-
.where("nodeId = :nodeId and language = :language", {
|
|
145
|
+
await siteContext.cn("PaNodel").update({ ready }).where({
|
|
156
146
|
nodeId: nodelId.nodeId,
|
|
157
147
|
language: nodelId.language,
|
|
158
|
-
})
|
|
159
|
-
.execute();
|
|
148
|
+
});
|
|
160
149
|
if (nodeType.kind === "document") {
|
|
161
150
|
const parentId = await getParentNodelIdOf(siteContext, nodelId);
|
|
162
151
|
if (ready) {
|
|
@@ -184,32 +173,35 @@ export async function setNodelReady(siteContext, { nodelId, ready }) {
|
|
|
184
173
|
}
|
|
185
174
|
}
|
|
186
175
|
export async function getBreadcrumb(siteContext, tracker, documentId, options = {}) {
|
|
176
|
+
const { cn } = siteContext;
|
|
187
177
|
const depth = await getNodeDepth(siteContext, tracker, documentId.nodeId);
|
|
188
178
|
if (depth === 0)
|
|
189
179
|
return [];
|
|
190
180
|
const language = documentId.language;
|
|
191
|
-
const
|
|
192
|
-
.createQueryBuilder()
|
|
193
|
-
.from("PaNode", `l${depth}`)
|
|
194
|
-
.andWhere(`l${depth}.id = :nodeId`, { nodeId: documentId.nodeId });
|
|
195
|
-
if (options.ensurePublished)
|
|
196
|
-
queryEnsurePublished(query, depth, language);
|
|
181
|
+
const selectColumns = [];
|
|
197
182
|
const minDepth = options.skipHome ? 1 : 0;
|
|
183
|
+
for (let cur = minDepth; cur < depth; ++cur) {
|
|
184
|
+
selectColumns.push(`l${cur}.id as nodeId${cur}`);
|
|
185
|
+
selectColumns.push(`l${cur}.typeName as typeName${cur}`);
|
|
186
|
+
selectColumns.push(`d${cur}.title as title${cur}`);
|
|
187
|
+
}
|
|
188
|
+
const query = cn(`PaNode as l${depth}`)
|
|
189
|
+
.select(selectColumns)
|
|
190
|
+
.where(`l${depth}.id`, documentId.nodeId);
|
|
191
|
+
if (options.ensurePublished)
|
|
192
|
+
queryEnsurePublished(cn, query, depth, language);
|
|
198
193
|
let prev = depth;
|
|
199
194
|
for (let cur = depth - 1; cur >= minDepth; --cur) {
|
|
200
|
-
query
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
.innerJoin("PaNode", `l${cur}`, `l${cur}.id = l${prev}.parentId`)
|
|
205
|
-
.leftJoin("PaDocument", `d${cur}`, `d${cur}.nodeId = l${cur}.id and d${cur}.language = :language`, {
|
|
206
|
-
language,
|
|
195
|
+
query.innerJoin(`PaNode as l${cur}`, `l${cur}.id`, `l${prev}.parentId`);
|
|
196
|
+
query.leftJoin(`PaDocument as d${cur}`, {
|
|
197
|
+
[`d${cur}.nodeId`]: `l${cur}.id`,
|
|
198
|
+
[`d${cur}.language`]: cn.raw("?", [language]),
|
|
207
199
|
});
|
|
208
200
|
if (options.ensurePublished)
|
|
209
|
-
queryEnsurePublished(query, cur, language);
|
|
201
|
+
queryEnsurePublished(cn, query, cur, language);
|
|
210
202
|
prev = cur;
|
|
211
203
|
}
|
|
212
|
-
const row = await query.
|
|
204
|
+
const row = await query.first();
|
|
213
205
|
tracker.trackAccess(mainDbSchemaName, "PaNode", "read");
|
|
214
206
|
if (!row)
|
|
215
207
|
throw new Error(`cannot get breadcrumb of '${documentId.language}:${documentId.nodeId}'`);
|
|
@@ -231,21 +223,17 @@ export async function getBreadcrumb(siteContext, tracker, documentId, options =
|
|
|
231
223
|
}
|
|
232
224
|
return result;
|
|
233
225
|
}
|
|
234
|
-
function queryEnsurePublished(query, d, language) {
|
|
226
|
+
function queryEnsurePublished(cn, query, d, language) {
|
|
235
227
|
query
|
|
236
|
-
.innerJoin(
|
|
237
|
-
|
|
228
|
+
.innerJoin(`PaNodel as s${d}`, {
|
|
229
|
+
[`s${d}.nodeId`]: `l${d}.id`,
|
|
230
|
+
[`s${d}.language`]: cn.raw("?", [language]),
|
|
238
231
|
})
|
|
239
|
-
.
|
|
240
|
-
.
|
|
232
|
+
.where(`s${d}.ready`, 1)
|
|
233
|
+
.whereRaw(`l${d}.publishDate <= current_timestamp`);
|
|
241
234
|
}
|
|
242
235
|
export async function isOrphanNode(cn, nodeId) {
|
|
243
|
-
const row = await cn
|
|
244
|
-
.createQueryBuilder()
|
|
245
|
-
.select("count(s.nodeId)", "cnt")
|
|
246
|
-
.from("PaNodel", "s")
|
|
247
|
-
.where("s.nodeId = :nodeId", { nodeId })
|
|
248
|
-
.getRawOne();
|
|
236
|
+
const row = await cn("PaNodel as s").count("s.nodeId as cnt").where("s.nodeId", nodeId).first();
|
|
249
237
|
return nbVal(row?.cnt) === 0;
|
|
250
238
|
}
|
|
251
239
|
export async function searchDocuments(siteContext, options) {
|