@fgbg/mdocs 0.6.1 → 0.6.5
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/server/access/access-control.js +23 -8
- package/dist/server/access/access-control.js.map +1 -1
- package/dist/server/access/access-control.test.js +66 -0
- package/dist/server/access/access-control.test.js.map +1 -1
- package/dist/server/app.js +27 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/cli/main.js +50 -10
- package/dist/server/cli/main.js.map +1 -1
- package/dist/server/db/repositories/bookmark.repo.js +68 -0
- package/dist/server/db/repositories/bookmark.repo.js.map +1 -0
- package/dist/server/db/repositories/document-comment.repo.js +104 -0
- package/dist/server/db/repositories/document-comment.repo.js.map +1 -0
- package/dist/server/db/repositories/document.repo.js +14 -0
- package/dist/server/db/repositories/document.repo.js.map +1 -1
- package/dist/server/db/repositories/visitor.repo.js +19 -4
- package/dist/server/db/repositories/visitor.repo.js.map +1 -1
- package/dist/server/db/schema.js +24 -1
- package/dist/server/db/schema.js.map +1 -1
- package/dist/server/documents/document-comment.service.js +58 -0
- package/dist/server/documents/document-comment.service.js.map +1 -0
- package/dist/server/documents/document-comment.service.test.js +283 -0
- package/dist/server/documents/document-comment.service.test.js.map +1 -0
- package/dist/server/documents/document.service.js +78 -2
- package/dist/server/documents/document.service.js.map +1 -1
- package/dist/server/documents/tree-and-folders.test.js +81 -2
- package/dist/server/documents/tree-and-folders.test.js.map +1 -1
- package/dist/server/documents/tree.service.js +16 -4
- package/dist/server/documents/tree.service.js.map +1 -1
- package/dist/server/identity/auth.middleware.js +6 -1
- package/dist/server/identity/auth.middleware.js.map +1 -1
- package/dist/server/identity/visitor.service.js +13 -7
- package/dist/server/identity/visitor.service.js.map +1 -1
- package/dist/server/identity/visitor.service.test.js +4 -3
- package/dist/server/identity/visitor.service.test.js.map +1 -1
- package/dist/server/routes/bookmarks.routes.js +108 -0
- package/dist/server/routes/bookmarks.routes.js.map +1 -0
- package/dist/server/routes/document-comments.routes.js +47 -0
- package/dist/server/routes/document-comments.routes.js.map +1 -0
- package/dist/server/routes/documents.routes.js +26 -2
- package/dist/server/routes/documents.routes.js.map +1 -1
- package/dist/server/routes/visitors.routes.js +22 -2
- package/dist/server/routes/visitors.routes.js.map +1 -1
- package/dist/server/search/document-index-manager.js +14 -8
- package/dist/server/search/document-index-manager.js.map +1 -1
- package/dist/shared/permissions.js +29 -0
- package/dist/shared/permissions.js.map +1 -0
- package/dist/web/assets/_baseUniq-GvNMhSGA.js +1 -0
- package/dist/web/assets/arc-DB-MBQ_7.js +1 -0
- package/dist/web/assets/architectureDiagram-Q4EWVU46-B6fIJCqj.js +36 -0
- package/dist/web/assets/{blockDiagram-DXYQGD6D-B_xmfn8A.js → blockDiagram-DXYQGD6D-U0T3XkPP.js} +2 -2
- package/dist/web/assets/{c4Diagram-AHTNJAMY-mzXC4HGz.js → c4Diagram-AHTNJAMY-_ik3C_bT.js} +2 -2
- package/dist/web/assets/channel-CptILkTi.js +1 -0
- package/dist/web/assets/chunk-4BX2VUAB-C-KFRd1D.js +1 -0
- package/dist/web/assets/{chunk-4TB4RGXK-CHrqLnxu.js → chunk-4TB4RGXK-B5h_MoAS.js} +1 -1
- package/dist/web/assets/chunk-55IACEB6-Dq50eCA0.js +1 -0
- package/dist/web/assets/chunk-EDXVE4YY-D5er4rHs.js +1 -0
- package/dist/web/assets/{chunk-FMBD7UC4-CqM95lCi.js → chunk-FMBD7UC4-AqKqMyp7.js} +1 -1
- package/dist/web/assets/{chunk-OYMX7WX6-B4xt0fDi.js → chunk-OYMX7WX6-ClN2hoBH.js} +1 -1
- package/dist/web/assets/chunk-QZHKN3VN-CCl-uS54.js +1 -0
- package/dist/web/assets/chunk-YZCP3GAM-Cz4KL9JQ.js +1 -0
- package/dist/web/assets/classDiagram-6PBFFD2Q-wee7frTV.js +1 -0
- package/dist/web/assets/classDiagram-v2-HSJHXN6E-wee7frTV.js +1 -0
- package/dist/web/assets/clone-CE7ZzRl-.js +1 -0
- package/dist/web/assets/cose-bilkent-S5V4N54A-DCqKkloN.js +1 -0
- package/dist/web/assets/dagre-KV5264BT-CBrTGiwg.js +4 -0
- package/dist/web/assets/diagram-5BDNPKRD-VICEQzUR.js +10 -0
- package/dist/web/assets/diagram-G4DWMVQ6-DaoEItNN.js +24 -0
- package/dist/web/assets/diagram-MMDJMWI5-DvvqKBgR.js +43 -0
- package/dist/web/assets/diagram-TYMM5635-b8KlP0s4.js +24 -0
- package/dist/web/assets/{erDiagram-SMLLAGMA-BRhKGp7p.js → erDiagram-SMLLAGMA-Bg3JFEyu.js} +2 -2
- package/dist/web/assets/{flowDiagram-DWJPFMVM-CVXEyDGV.js → flowDiagram-DWJPFMVM-BYeJ-7SE.js} +2 -2
- package/dist/web/assets/ganttDiagram-T4ZO3ILL-CGgDK6Uk.js +292 -0
- package/dist/web/assets/gitGraphDiagram-UUTBAWPF-BfS-vmec.js +106 -0
- package/dist/web/assets/graph-DnoW4mMs.js +1 -0
- package/dist/web/assets/index-BqmdUIYA.css +1 -0
- package/dist/web/assets/index-C-wD6L-6.js +5749 -0
- package/dist/web/assets/infoDiagram-42DDH7IO-BhblG3CD.js +2 -0
- package/dist/web/assets/{ishikawaDiagram-UXIWVN3A-CBGPMeRX.js → ishikawaDiagram-UXIWVN3A-7Tfh-5tN.js} +5 -5
- package/dist/web/assets/{journeyDiagram-VCZTEJTY-BojXYLpZ.js → journeyDiagram-VCZTEJTY-CD9_KODe.js} +2 -2
- package/dist/web/assets/{kanban-definition-6JOO6SKY-COB1p8N4.js → kanban-definition-6JOO6SKY-7FYoOrz1.js} +2 -2
- package/dist/web/assets/layout-CgpZb7aT.js +1 -0
- package/dist/web/assets/linear-DXlSVFPI.js +1 -0
- package/dist/web/assets/min-CbvyKZdW.js +1 -0
- package/dist/web/assets/{mindmap-definition-QFDTVHPH-WuIIFDk0.js → mindmap-definition-QFDTVHPH-D_7IpwOr.js} +2 -2
- package/dist/web/assets/{pieDiagram-DEJITSTG-0yTTbTnK.js → pieDiagram-DEJITSTG-C4oHxK29.js} +2 -2
- package/dist/web/assets/{quadrantDiagram-34T5L4WZ-BVGxiAic.js → quadrantDiagram-34T5L4WZ-qaARXrbR.js} +2 -2
- package/dist/web/assets/{requirementDiagram-MS252O5E-DxoKkLjF.js → requirementDiagram-MS252O5E-B0OnR3WQ.js} +2 -2
- package/dist/web/assets/sankeyDiagram-XADWPNL6-CgrqxXXq.js +10 -0
- package/dist/web/assets/{sequenceDiagram-FGHM5R23-qQBtlmdr.js → sequenceDiagram-FGHM5R23-ieRKRAqs.js} +2 -2
- package/dist/web/assets/stateDiagram-FHFEXIEX-ju-e_AqR.js +1 -0
- package/dist/web/assets/stateDiagram-v2-QKLJ7IA2-Clz1rvlo.js +1 -0
- package/dist/web/assets/{timeline-definition-GMOUNBTQ-DMZNkVLR.js → timeline-definition-GMOUNBTQ-DtcIDFGX.js} +2 -2
- package/dist/web/assets/{vennDiagram-DHZGUBPP-dqHjP-hQ.js → vennDiagram-DHZGUBPP-DG2V75Il.js} +2 -2
- package/dist/web/assets/wardley-RL74JXVD-CI6hl6LN.js +162 -0
- package/dist/web/assets/{wardleyDiagram-NUSXRM2D-Be4N5UZh.js → wardleyDiagram-NUSXRM2D-CUGNCU53.js} +2 -2
- package/dist/web/assets/{xychartDiagram-5P7HB3ND-CqeRqtaT.js → xychartDiagram-5P7HB3ND-SxZFqO2V.js} +2 -2
- package/dist/web/index.html +2 -2
- package/package.json +4 -2
- package/dist/web/assets/_baseUniq-mbOGdjgO.js +0 -1
- package/dist/web/assets/arc-D-WSUdNG.js +0 -1
- package/dist/web/assets/architectureDiagram-Q4EWVU46-0jRUx91A.js +0 -36
- package/dist/web/assets/channel-C5iQ1-e2.js +0 -1
- package/dist/web/assets/chunk-4BX2VUAB-Bn7yoqIc.js +0 -1
- package/dist/web/assets/chunk-55IACEB6-D9CzRsCu.js +0 -1
- package/dist/web/assets/chunk-EDXVE4YY-DUGGXqt0.js +0 -1
- package/dist/web/assets/chunk-QZHKN3VN-CB4tazF4.js +0 -1
- package/dist/web/assets/chunk-YZCP3GAM-CJdC-SLE.js +0 -1
- package/dist/web/assets/classDiagram-6PBFFD2Q-3PggZSgZ.js +0 -1
- package/dist/web/assets/classDiagram-v2-HSJHXN6E-3PggZSgZ.js +0 -1
- package/dist/web/assets/clone-BRenlKxE.js +0 -1
- package/dist/web/assets/cose-bilkent-S5V4N54A-CNME-K3v.js +0 -1
- package/dist/web/assets/dagre-KV5264BT-BiWVn1mI.js +0 -4
- package/dist/web/assets/diagram-5BDNPKRD-DOah-MqT.js +0 -10
- package/dist/web/assets/diagram-G4DWMVQ6-U2XDwT09.js +0 -24
- package/dist/web/assets/diagram-MMDJMWI5-CVDLI2Md.js +0 -43
- package/dist/web/assets/diagram-TYMM5635-DYVPY1ys.js +0 -24
- package/dist/web/assets/ganttDiagram-T4ZO3ILL-CbymDUCg.js +0 -292
- package/dist/web/assets/gitGraphDiagram-UUTBAWPF-BKDun02F.js +0 -106
- package/dist/web/assets/graph-BXEbNgSu.js +0 -1
- package/dist/web/assets/index-DYHwr9jx.css +0 -1
- package/dist/web/assets/index-a4S5-Ob1.js +0 -5315
- package/dist/web/assets/infoDiagram-42DDH7IO-Dn0tTehG.js +0 -2
- package/dist/web/assets/layout-ZFfRWIoj.js +0 -1
- package/dist/web/assets/linear-2a3E1vTB.js +0 -1
- package/dist/web/assets/mermaid.core-DBH2e0Kt.js +0 -309
- package/dist/web/assets/min-CXNTeEK6.js +0 -1
- package/dist/web/assets/sankeyDiagram-XADWPNL6-UpSdvRJr.js +0 -10
- package/dist/web/assets/stateDiagram-FHFEXIEX-nBMIkJdm.js +0 -1
- package/dist/web/assets/stateDiagram-v2-QKLJ7IA2-DD5wjWd9.js +0 -1
- package/dist/web/assets/wardley-RL74JXVD-D8TklWsQ.js +0 -162
|
@@ -64,6 +64,15 @@ export function validateDomainPermission(domainPermission, docPermission) {
|
|
|
64
64
|
const allowed = DOMAIN_ALLOWED_PERMISSIONS[domainPermission];
|
|
65
65
|
return allowed ? allowed.includes(docPermission) : false;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* 获取域权限上下文(供 bookmarks 等模块使用)。
|
|
69
|
+
*/
|
|
70
|
+
export function getDomainInfo(db, domainId, visitorId) {
|
|
71
|
+
const domain = findDomainById(db, domainId);
|
|
72
|
+
const domainPermission = domain?.permission ?? "public";
|
|
73
|
+
const isDomainMember = !!(visitorId && domain && checkDomainMember(db, domain.domain_id, visitorId));
|
|
74
|
+
return { domainPermission, isDomainMember };
|
|
75
|
+
}
|
|
67
76
|
// ============================================================
|
|
68
77
|
// 读权限
|
|
69
78
|
// ============================================================
|
|
@@ -133,20 +142,26 @@ export function canEditDocument(row, visitorId, domainInfo) {
|
|
|
133
142
|
}
|
|
134
143
|
// private 域:按五档实际语义
|
|
135
144
|
if (row.permission === Permission.PRIVATE) {
|
|
136
|
-
//
|
|
137
|
-
|
|
145
|
+
// 仅创建者可写,或靠 invite
|
|
146
|
+
const invite = findDocumentInvite(getDb(), row.document_id, visitorId);
|
|
147
|
+
return invite?.permission === "edit";
|
|
138
148
|
}
|
|
139
149
|
if (row.permission === Permission.DOMAIN_READ) {
|
|
140
|
-
// domain_read
|
|
141
|
-
|
|
150
|
+
// domain_read:仅创建者可写,或靠 invite
|
|
151
|
+
const invite = findDocumentInvite(getDb(), row.document_id, visitorId);
|
|
152
|
+
return invite?.permission === "edit";
|
|
142
153
|
}
|
|
143
154
|
if (row.permission === Permission.DOMAIN_WRITE) {
|
|
144
|
-
// domain_write
|
|
145
|
-
|
|
155
|
+
// domain_write:域成员可写,或靠 invite
|
|
156
|
+
if (domainInfo.isDomainMember)
|
|
157
|
+
return true;
|
|
158
|
+
const invite = findDocumentInvite(getDb(), row.document_id, visitorId);
|
|
159
|
+
return invite?.permission === "edit";
|
|
146
160
|
}
|
|
147
161
|
if (row.permission === Permission.PUBLIC_READ) {
|
|
148
|
-
// public_read
|
|
149
|
-
|
|
162
|
+
// public_read:仅创建者可写,或靠 invite
|
|
163
|
+
const invite = findDocumentInvite(getDb(), row.document_id, visitorId);
|
|
164
|
+
return invite?.permission === "edit";
|
|
150
165
|
}
|
|
151
166
|
// public_write:任何人可写
|
|
152
167
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../../src/server/access/access-control.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../../src/server/access/access-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,72 @@ function seedDocInDomain(options) {
|
|
|
53
53
|
}
|
|
54
54
|
return domainId;
|
|
55
55
|
}
|
|
56
|
+
/** 插入一条文档邀请 */
|
|
57
|
+
function seedInvite(docId, visitorId, permission = "read") {
|
|
58
|
+
const db = testDbRef.db;
|
|
59
|
+
db.prepare(`INSERT INTO document_invites (document_id, visitor_id, permission) VALUES (?, ?, ?)`).run(docId, visitorId, permission);
|
|
60
|
+
}
|
|
61
|
+
// ============================================================
|
|
62
|
+
// invite 权限(新增)
|
|
63
|
+
// ============================================================
|
|
64
|
+
describe("document invite — read", () => {
|
|
65
|
+
it("private 域:被 invite read 的非创建者可读", () => {
|
|
66
|
+
seedDocInDomain({ domainPermission: "private", docPermission: Permission.PRIVATE, docId: "invite-doc" });
|
|
67
|
+
seedInvite("invite-doc", OTHER, "read");
|
|
68
|
+
expect(() => assertDocumentAccess("invite-doc", OTHER, "read")).not.toThrow();
|
|
69
|
+
});
|
|
70
|
+
it("restricted 域:非成员被 invite read 可读", () => {
|
|
71
|
+
seedDocInDomain({ domainPermission: "restricted", docPermission: Permission.DOMAIN_READ, docId: "invite-doc2" });
|
|
72
|
+
seedInvite("invite-doc2", OTHER, "read");
|
|
73
|
+
expect(() => assertDocumentAccess("invite-doc2", OTHER, "read")).not.toThrow();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe("document invite — edit", () => {
|
|
77
|
+
it("private 域:被 invite edit 的非创建者可编辑", () => {
|
|
78
|
+
seedDocInDomain({ domainPermission: "private", docPermission: Permission.PRIVATE, docId: "edit-doc" });
|
|
79
|
+
seedInvite("edit-doc", OTHER, "edit");
|
|
80
|
+
expect(() => assertDocumentAccess("edit-doc", OTHER, "edit")).not.toThrow();
|
|
81
|
+
});
|
|
82
|
+
it("private 域:被 invite read 的非创建者不可编辑(403)", () => {
|
|
83
|
+
seedDocInDomain({ domainPermission: "private", docPermission: Permission.PRIVATE, docId: "edit-doc2" });
|
|
84
|
+
seedInvite("edit-doc2", OTHER, "read");
|
|
85
|
+
expect(() => assertDocumentAccess("edit-doc2", OTHER, "edit")).toThrow(DocumentError);
|
|
86
|
+
});
|
|
87
|
+
it("restricted 域:被 invite edit 的非成员可编辑", () => {
|
|
88
|
+
seedDocInDomain({ domainPermission: "restricted", docPermission: Permission.DOMAIN_READ, docId: "edit-doc3" });
|
|
89
|
+
seedInvite("edit-doc3", OTHER, "edit");
|
|
90
|
+
expect(() => assertDocumentAccess("edit-doc3", OTHER, "edit")).not.toThrow();
|
|
91
|
+
});
|
|
92
|
+
it("restricted 域:被 invite read 的非成员不可编辑(403)", () => {
|
|
93
|
+
seedDocInDomain({ domainPermission: "restricted", docPermission: Permission.DOMAIN_READ, docId: "edit-doc4" });
|
|
94
|
+
seedInvite("edit-doc4", OTHER, "read");
|
|
95
|
+
expect(() => assertDocumentAccess("edit-doc4", OTHER, "edit")).toThrow(DocumentError);
|
|
96
|
+
});
|
|
97
|
+
it("private 域 + domain_read:被 invite edit 的非创建者可编辑", () => {
|
|
98
|
+
seedDocInDomain({ domainPermission: "private", docPermission: Permission.DOMAIN_READ, docId: "edit-doc5" });
|
|
99
|
+
seedInvite("edit-doc5", OTHER, "edit");
|
|
100
|
+
expect(() => assertDocumentAccess("edit-doc5", OTHER, "edit")).not.toThrow();
|
|
101
|
+
});
|
|
102
|
+
it("private 域 + public_read:被 invite edit 的非创建者可编辑", () => {
|
|
103
|
+
seedDocInDomain({ domainPermission: "private", docPermission: Permission.PUBLIC_READ, docId: "edit-doc6" });
|
|
104
|
+
seedInvite("edit-doc6", OTHER, "edit");
|
|
105
|
+
expect(() => assertDocumentAccess("edit-doc6", OTHER, "edit")).not.toThrow();
|
|
106
|
+
});
|
|
107
|
+
it("private 域 + domain_write:域成员可编辑,无需 invite", () => {
|
|
108
|
+
seedDocInDomain({
|
|
109
|
+
domainPermission: "private",
|
|
110
|
+
docPermission: Permission.DOMAIN_WRITE,
|
|
111
|
+
docId: "edit-doc7",
|
|
112
|
+
memberIds: [OTHER],
|
|
113
|
+
});
|
|
114
|
+
expect(() => assertDocumentAccess("edit-doc7", OTHER, "edit")).not.toThrow();
|
|
115
|
+
});
|
|
116
|
+
it("private 域 + domain_write:非域成员被 invite edit 可编辑", () => {
|
|
117
|
+
seedDocInDomain({ domainPermission: "private", docPermission: Permission.DOMAIN_WRITE, docId: "edit-doc8" });
|
|
118
|
+
seedInvite("edit-doc8", OTHER, "edit");
|
|
119
|
+
expect(() => assertDocumentAccess("edit-doc8", OTHER, "edit")).not.toThrow();
|
|
120
|
+
});
|
|
121
|
+
});
|
|
56
122
|
// ============================================================
|
|
57
123
|
// validateDomainPermission
|
|
58
124
|
// ============================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-control.test.js","sourceRoot":"","sources":["../../../src/server/access/access-control.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"access-control.test.js","sourceRoot":"","sources":["../../../src/server/access/access-control.test.ts"],"names":[],"mappings":"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"}
|
package/dist/server/app.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import express from "express";
|
|
4
|
+
import cookieParser from "cookie-parser";
|
|
4
5
|
import { getConfig } from "./config/index.js";
|
|
5
6
|
import { getDb } from "./db/connection.js";
|
|
6
7
|
import { authMiddleware } from "./identity/auth.middleware.js";
|
|
@@ -11,6 +12,8 @@ import { buildDomainsRouter } from "./routes/domains.routes.js";
|
|
|
11
12
|
import { buildDomainMemberTemplatesRouter } from "./routes/domain-member-templates.routes.js";
|
|
12
13
|
import { buildFoldersRouter } from "./routes/folders.routes.js";
|
|
13
14
|
import { buildCliTokensRouter } from "./routes/cli-tokens.routes.js";
|
|
15
|
+
import { buildBookmarksRouter } from "./routes/bookmarks.routes.js";
|
|
16
|
+
import { documentCommentsRouter } from "./routes/document-comments.routes.js";
|
|
14
17
|
import { buildAssetsUploadRouter, serveAssetFile } from "./routes/assets.routes.js";
|
|
15
18
|
import { startIndexTimer } from "./search/document-index-manager.js";
|
|
16
19
|
import { useLogger } from "./logger/logger.js";
|
|
@@ -28,6 +31,7 @@ export function buildApp() {
|
|
|
28
31
|
const app = express();
|
|
29
32
|
app.disable("x-powered-by");
|
|
30
33
|
app.use(express.json({ limit: "32mb" }));
|
|
34
|
+
app.use(cookieParser());
|
|
31
35
|
// 健康检查端点,无需认证
|
|
32
36
|
app.get("/api/health", (_req, res) => {
|
|
33
37
|
res.json({ data: { status: "ok" } });
|
|
@@ -36,6 +40,26 @@ export function buildApp() {
|
|
|
36
40
|
app.get("/api/assets/:assetId", (req, res) => {
|
|
37
41
|
serveAssetFile(req, res);
|
|
38
42
|
});
|
|
43
|
+
// 获取评论列表:无需认证(能读文档就能看评论)
|
|
44
|
+
app.get("/api/documents/:documentId/comments", async (req, res) => {
|
|
45
|
+
const { documentId } = req.params;
|
|
46
|
+
if (!documentId) {
|
|
47
|
+
return res.status(400).json({ error: "缺少 documentId" });
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const { documentCommentService } = await import("./documents/document-comment.service.js");
|
|
51
|
+
const comments = await documentCommentService.getCommentsByDocumentId(documentId);
|
|
52
|
+
res.json({
|
|
53
|
+
data: {
|
|
54
|
+
comments,
|
|
55
|
+
total: comments.filter((c) => !c.isDeleted).length,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
res.status(400).json({ error: err.message });
|
|
61
|
+
}
|
|
62
|
+
});
|
|
39
63
|
// 后续 /api 路由均需经过身份认证
|
|
40
64
|
app.use("/api", authMiddleware);
|
|
41
65
|
app.use("/api/assets", buildAssetsUploadRouter());
|
|
@@ -46,6 +70,9 @@ export function buildApp() {
|
|
|
46
70
|
app.use("/api/domain-member-templates", buildDomainMemberTemplatesRouter());
|
|
47
71
|
app.use("/api/folders", buildFoldersRouter());
|
|
48
72
|
app.use("/api/cli", buildCliTokensRouter());
|
|
73
|
+
app.use("/api/bookmarks", buildBookmarksRouter());
|
|
74
|
+
// 发表/删除评论:需要认证
|
|
75
|
+
app.use("/api/documents", documentCommentsRouter);
|
|
49
76
|
// 兜底:未匹配到的 API 路径返回 404
|
|
50
77
|
app.use("/api", (_req, res) => {
|
|
51
78
|
res.status(404).json({ error: { code: "NOT_FOUND", message: "api not found" } });
|
package/dist/server/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAA6B,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC;IACpB,KAAK,EAAE,CAAC;IACR,mBAAmB;IACnB,eAAe,EAAE,CAAC;IAElB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
|
package/dist/server/cli/main.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { buildApp } from "../app.js";
|
|
2
2
|
import { getConfig } from "../config/index.js";
|
|
3
|
+
import { getDb } from "../db/connection.js";
|
|
4
|
+
import { findVisitorById, findVisitorByName, } from "../db/repositories/visitor.repo.js";
|
|
3
5
|
import { listAllVisitors } from "../identity/visitor.service.js";
|
|
4
6
|
import { migrateVisitor, MigrationError, } from "../migrations/visitor-migration.service.js";
|
|
5
7
|
/** 解析命令行参数,将 `--key value` 或 `--flag` 形式转为键值对象。 */
|
|
@@ -28,11 +30,13 @@ function printUsage() {
|
|
|
28
30
|
"mdocs CLI",
|
|
29
31
|
"",
|
|
30
32
|
"Usage:",
|
|
31
|
-
" mdocs visitor list",
|
|
33
|
+
" mdocs visitor list [--active|--disabled|--all]",
|
|
32
34
|
" mdocs visitor migrate --from OLD --to NEW [--dry-run] [--confirm]",
|
|
33
35
|
"",
|
|
34
36
|
"Notes:",
|
|
35
|
-
"
|
|
37
|
+
" visitor list defaults to --active (only enabled visitors).",
|
|
38
|
+
" For migrate, OLD/NEW can be either visitor ID (UUID) or visitor name.",
|
|
39
|
+
" Either --dry-run or --confirm must be supplied.",
|
|
36
40
|
" --confirm performs the migration inside a transaction and makes a backup first.",
|
|
37
41
|
"",
|
|
38
42
|
].join("\n"));
|
|
@@ -49,7 +53,7 @@ async function main() {
|
|
|
49
53
|
return;
|
|
50
54
|
}
|
|
51
55
|
if (command === "visitor" && sub === "list") {
|
|
52
|
-
runVisitorList();
|
|
56
|
+
runVisitorList(parseFlags(rest));
|
|
53
57
|
return;
|
|
54
58
|
}
|
|
55
59
|
if (command === "visitor" && sub === "migrate") {
|
|
@@ -71,21 +75,54 @@ function startServer() {
|
|
|
71
75
|
process.exit(1);
|
|
72
76
|
});
|
|
73
77
|
}
|
|
74
|
-
/** 执行 `visitor list
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
/** 执行 `visitor list`:查询访客并以 TSV 格式输出。
|
|
79
|
+
*
|
|
80
|
+
* 支持过滤参数:
|
|
81
|
+
* --active 仅列出启用的访客(默认)
|
|
82
|
+
* --disabled 仅列出已禁用的访客
|
|
83
|
+
* --all 列出全部访客
|
|
84
|
+
*/
|
|
85
|
+
function runVisitorList(flags) {
|
|
86
|
+
let filter = "active";
|
|
87
|
+
if (flags.all === true)
|
|
88
|
+
filter = "all";
|
|
89
|
+
if (flags.disabled === true)
|
|
90
|
+
filter = "disabled";
|
|
91
|
+
// --active 显式指定时覆盖
|
|
92
|
+
const rows = listAllVisitors(filter);
|
|
77
93
|
for (const row of rows) {
|
|
78
94
|
process.stdout.write(`${row.visitor_id}\t${row.visitor_name}\tcreated=${row.created_at}\tdisabled=${row.disabled_at ?? "-"}\tmerged_into=${row.merged_into_visitor_id ?? "-"}\n`);
|
|
79
95
|
}
|
|
80
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* 根据输入字符串解析访客记录:先按 ID 查找,找不到再按名称查找。
|
|
99
|
+
* 只返回未禁用的访客。
|
|
100
|
+
*/
|
|
101
|
+
function resolveVisitor(ident) {
|
|
102
|
+
const db = getDb();
|
|
103
|
+
// 先按 ID 查
|
|
104
|
+
let row = findVisitorById(db, ident);
|
|
105
|
+
// 再按名称查
|
|
106
|
+
if (!row)
|
|
107
|
+
row = findVisitorByName(db, ident);
|
|
108
|
+
// 都没找到,抛错
|
|
109
|
+
if (!row) {
|
|
110
|
+
throw new MigrationError("NOT_FOUND", `visitor "${ident}" not found (tried as ID, then name)`);
|
|
111
|
+
}
|
|
112
|
+
// 检查是否已禁用
|
|
113
|
+
if (row.disabled_at) {
|
|
114
|
+
throw new MigrationError("VISITOR_DISABLED", `visitor "${ident}" is disabled`);
|
|
115
|
+
}
|
|
116
|
+
return { visitorId: row.visitor_id, visitorName: row.visitor_name };
|
|
117
|
+
}
|
|
81
118
|
/** 执行 `visitor migrate`:校验参数后调用迁移服务,并输出结果或错误。 */
|
|
82
119
|
function runVisitorMigrate(flags) {
|
|
83
|
-
const
|
|
84
|
-
const
|
|
120
|
+
const fromRaw = typeof flags.from === "string" ? flags.from : "";
|
|
121
|
+
const toRaw = typeof flags.to === "string" ? flags.to : "";
|
|
85
122
|
const dryRun = flags["dry-run"] === true;
|
|
86
123
|
const confirm = flags.confirm === true;
|
|
87
124
|
// 校验必填参数
|
|
88
|
-
if (!
|
|
125
|
+
if (!fromRaw || !toRaw) {
|
|
89
126
|
process.stderr.write("--from and --to are required\n");
|
|
90
127
|
process.exit(2);
|
|
91
128
|
}
|
|
@@ -95,7 +132,10 @@ function runVisitorMigrate(flags) {
|
|
|
95
132
|
process.exit(2);
|
|
96
133
|
}
|
|
97
134
|
try {
|
|
98
|
-
|
|
135
|
+
// 智能解析访客(支持 ID 或名称)
|
|
136
|
+
const from = resolveVisitor(fromRaw);
|
|
137
|
+
const to = resolveVisitor(toRaw);
|
|
138
|
+
const result = migrateVisitor({ fromVisitorId: from.visitorId, toVisitorId: to.visitorId, confirm });
|
|
99
139
|
printMigrationResult(result);
|
|
100
140
|
}
|
|
101
141
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/server/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EACL,cAAc,EACd,cAAc,GAEf,MAAM,4CAA4C,CAAC;AAIpD,mDAAmD;AACnD,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,4BAA4B;QAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAChB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wBAAwB;AACxB,SAAS,UAAU;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,WAAW;QACX,EAAE;QACF,QAAQ;QACR,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/server/cli/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 添加收藏。
|
|
3
|
+
*
|
|
4
|
+
* @param db - better-sqlite3 数据库实例
|
|
5
|
+
* @param visitorId - 访客 ID
|
|
6
|
+
* @param documentId - 文档 ID
|
|
7
|
+
*/
|
|
8
|
+
export function addBookmark(db, visitorId, documentId) {
|
|
9
|
+
const now = new Date().toISOString();
|
|
10
|
+
db.prepare(`INSERT OR IGNORE INTO document_bookmarks (visitor_id, document_id, created_at)
|
|
11
|
+
VALUES (?, ?, ?)`).run(visitorId, documentId, now);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 取消收藏。
|
|
15
|
+
*
|
|
16
|
+
* @param db - better-sqlite3 数据库实例
|
|
17
|
+
* @param visitorId - 访客 ID
|
|
18
|
+
* @param documentId - 文档 ID
|
|
19
|
+
*/
|
|
20
|
+
export function removeBookmark(db, visitorId, documentId) {
|
|
21
|
+
db.prepare(`DELETE FROM document_bookmarks WHERE visitor_id = ? AND document_id = ?`).run(visitorId, documentId);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 检查是否已收藏。
|
|
25
|
+
*
|
|
26
|
+
* @param db - better-sqlite3 数据库实例
|
|
27
|
+
* @param visitorId - 访客 ID
|
|
28
|
+
* @param documentId - 文档 ID
|
|
29
|
+
* @returns 是否已收藏
|
|
30
|
+
*/
|
|
31
|
+
export function isBookmarked(db, visitorId, documentId) {
|
|
32
|
+
const row = db
|
|
33
|
+
.prepare(`SELECT COUNT(*) as c FROM document_bookmarks WHERE visitor_id = ? AND document_id = ?`)
|
|
34
|
+
.get(visitorId, documentId);
|
|
35
|
+
return (row?.c ?? 0) > 0;
|
|
36
|
+
}
|
|
37
|
+
export function listBookmarksByVisitor(db, visitorId) {
|
|
38
|
+
const rows = db
|
|
39
|
+
.prepare(`SELECT
|
|
40
|
+
b.document_id,
|
|
41
|
+
b.created_at as bookmarked_at,
|
|
42
|
+
d.domain_id,
|
|
43
|
+
d.relative_path,
|
|
44
|
+
d.display_name,
|
|
45
|
+
d.owner_visitor_id,
|
|
46
|
+
v.visitor_name as owner_visitor_name,
|
|
47
|
+
d.permission,
|
|
48
|
+
d.created_at
|
|
49
|
+
FROM document_bookmarks b
|
|
50
|
+
LEFT JOIN documents d ON b.document_id = d.document_id
|
|
51
|
+
LEFT JOIN visitors v ON d.owner_visitor_id = v.visitor_id
|
|
52
|
+
WHERE b.visitor_id = ?
|
|
53
|
+
ORDER BY b.created_at DESC`)
|
|
54
|
+
.all(visitorId);
|
|
55
|
+
return rows.map((row) => ({
|
|
56
|
+
documentId: row.document_id,
|
|
57
|
+
domainId: row.domain_id ?? null,
|
|
58
|
+
relativePath: row.relative_path ?? null,
|
|
59
|
+
displayName: row.display_name ?? null,
|
|
60
|
+
ownerVisitorId: row.owner_visitor_id ?? null,
|
|
61
|
+
ownerVisitorName: row.owner_visitor_name ?? null,
|
|
62
|
+
permission: row.permission ?? null,
|
|
63
|
+
createdAt: row.created_at ?? null,
|
|
64
|
+
bookmarkedAt: row.bookmarked_at,
|
|
65
|
+
isDeleted: row.domain_id == null,
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=bookmark.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookmark.repo.js","sourceRoot":"","sources":["../../../../src/server/db/repositories/bookmark.repo.ts"],"names":[],"mappings":"AAuBA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,EAAqB,EAAE,SAAiB,EAAE,UAAkB;IACtF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,EAAE,CAAC,OAAO,CACR;sBACkB,CACnB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,SAAiB,EAAE,UAAkB;IACzF,EAAE,CAAC,OAAO,CACR,yEAAyE,CAC1E,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB,EAAE,SAAiB,EAAE,UAAkB;IACvF,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CACN,uFAAuF,CACxF;SACA,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAsBD,MAAM,UAAU,sBAAsB,CAAC,EAAqB,EAAE,SAAiB;IAC7E,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;;;;;;;;;;;kCAc4B,CAC7B;SACA,GAAG,CAAC,SAAS,CAAC,CAAC;IAElB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;QAC/B,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;QACvC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;QACrC,cAAc,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI;QAC5C,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,IAAI,IAAI;QAChD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;QAClC,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;QACjC,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;KACjC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { randomUUID } from "crypto";
|
|
2
|
+
export class DocumentCommentRepository {
|
|
3
|
+
db;
|
|
4
|
+
constructor(db) {
|
|
5
|
+
this.db = db;
|
|
6
|
+
}
|
|
7
|
+
/** 创建评论 */
|
|
8
|
+
async create(params) {
|
|
9
|
+
const now = new Date().toISOString();
|
|
10
|
+
const commentId = randomUUID();
|
|
11
|
+
this.db
|
|
12
|
+
.prepare(`INSERT INTO document_comments (
|
|
13
|
+
comment_id, document_id, visitor_id, visitor_name,
|
|
14
|
+
parent_id, reply_to_visitor_id, reply_to_visitor_name,
|
|
15
|
+
content, is_deleted, created_at, updated_at
|
|
16
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?)`)
|
|
17
|
+
.run(commentId, params.documentId, params.visitorId, params.visitorName, params.parentId, params.replyToVisitorId, params.replyToVisitorName, params.content, now, now);
|
|
18
|
+
return this.getById(commentId);
|
|
19
|
+
}
|
|
20
|
+
/** 根据 ID 获取评论 */
|
|
21
|
+
async getById(commentId) {
|
|
22
|
+
const row = this.db
|
|
23
|
+
.prepare(`SELECT
|
|
24
|
+
comment_id as commentId,
|
|
25
|
+
document_id as documentId,
|
|
26
|
+
visitor_id as visitorId,
|
|
27
|
+
visitor_name as visitorName,
|
|
28
|
+
parent_id as parentId,
|
|
29
|
+
reply_to_visitor_id as replyToVisitorId,
|
|
30
|
+
reply_to_visitor_name as replyToVisitorName,
|
|
31
|
+
content,
|
|
32
|
+
is_deleted as isDeleted,
|
|
33
|
+
created_at as createdAt,
|
|
34
|
+
updated_at as updatedAt
|
|
35
|
+
FROM document_comments
|
|
36
|
+
WHERE comment_id = ?`)
|
|
37
|
+
.get(commentId);
|
|
38
|
+
return row ? { ...row, isDeleted: Boolean(row.isDeleted) } : null;
|
|
39
|
+
}
|
|
40
|
+
/** 获取文档的所有评论 */
|
|
41
|
+
async getByDocumentId(documentId) {
|
|
42
|
+
const rows = this.db
|
|
43
|
+
.prepare(`SELECT
|
|
44
|
+
comment_id as commentId,
|
|
45
|
+
document_id as documentId,
|
|
46
|
+
visitor_id as visitorId,
|
|
47
|
+
visitor_name as visitorName,
|
|
48
|
+
parent_id as parentId,
|
|
49
|
+
reply_to_visitor_id as replyToVisitorId,
|
|
50
|
+
reply_to_visitor_name as replyToVisitorName,
|
|
51
|
+
content,
|
|
52
|
+
is_deleted as isDeleted,
|
|
53
|
+
created_at as createdAt,
|
|
54
|
+
updated_at as updatedAt
|
|
55
|
+
FROM document_comments
|
|
56
|
+
WHERE document_id = ?
|
|
57
|
+
ORDER BY created_at ASC`)
|
|
58
|
+
.all(documentId);
|
|
59
|
+
return rows.map((r) => ({ ...r, isDeleted: Boolean(r.isDeleted) }));
|
|
60
|
+
}
|
|
61
|
+
/** 获取某根评论的所有回复 */
|
|
62
|
+
async getReplies(parentId) {
|
|
63
|
+
const rows = this.db
|
|
64
|
+
.prepare(`SELECT
|
|
65
|
+
comment_id as commentId,
|
|
66
|
+
document_id as documentId,
|
|
67
|
+
visitor_id as visitorId,
|
|
68
|
+
visitor_name as visitorName,
|
|
69
|
+
parent_id as parentId,
|
|
70
|
+
reply_to_visitor_id as replyToVisitorId,
|
|
71
|
+
reply_to_visitor_name as replyToVisitorName,
|
|
72
|
+
content,
|
|
73
|
+
is_deleted as isDeleted,
|
|
74
|
+
created_at as createdAt,
|
|
75
|
+
updated_at as updatedAt
|
|
76
|
+
FROM document_comments
|
|
77
|
+
WHERE parent_id = ?
|
|
78
|
+
ORDER BY created_at ASC`)
|
|
79
|
+
.all(parentId);
|
|
80
|
+
return rows.map((r) => ({ ...r, isDeleted: Boolean(r.isDeleted) }));
|
|
81
|
+
}
|
|
82
|
+
/** 软删除评论 */
|
|
83
|
+
async softDelete(commentId) {
|
|
84
|
+
const result = this.db
|
|
85
|
+
.prepare(`UPDATE document_comments SET is_deleted = 1, updated_at = ? WHERE comment_id = ?`)
|
|
86
|
+
.run(new Date().toISOString(), commentId);
|
|
87
|
+
return (result.changes || 0) > 0;
|
|
88
|
+
}
|
|
89
|
+
/** 检查是否为根评论(用于校验两层结构约束) */
|
|
90
|
+
async isRootComment(commentId) {
|
|
91
|
+
const row = this.db
|
|
92
|
+
.prepare(`SELECT parent_id FROM document_comments WHERE comment_id = ?`)
|
|
93
|
+
.get(commentId);
|
|
94
|
+
return row?.parent_id == null;
|
|
95
|
+
}
|
|
96
|
+
/** 获取文档评论数 */
|
|
97
|
+
async countByDocumentId(documentId) {
|
|
98
|
+
const row = this.db
|
|
99
|
+
.prepare(`SELECT COUNT(*) as count FROM document_comments WHERE document_id = ? AND is_deleted = 0`)
|
|
100
|
+
.get(documentId);
|
|
101
|
+
return row.count;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=document-comment.repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-comment.repo.js","sourceRoot":"","sources":["../../../../src/server/db/repositories/document-comment.repo.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,6 +110,20 @@ export function updateDocumentContent(db, input) {
|
|
|
110
110
|
export function deleteDocument(db, documentId) {
|
|
111
111
|
db.prepare(`DELETE FROM documents WHERE document_id = ?`).run(documentId);
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* 查询指定域下某路径前缀的所有文档(递归查找目录下所有内容)。
|
|
115
|
+
* 用于目录删除时找出所有需要删除的文档。
|
|
116
|
+
*
|
|
117
|
+
* @param db - better-sqlite3 数据库实例
|
|
118
|
+
* @param domainId - 域 ID
|
|
119
|
+
* @param pathPrefix - 路径前缀(如 "folder/subfolder/")
|
|
120
|
+
* @returns 匹配的文档行数组
|
|
121
|
+
*/
|
|
122
|
+
export function listDocumentsByPathPrefix(db, domainId, pathPrefix) {
|
|
123
|
+
return db
|
|
124
|
+
.prepare(`SELECT * FROM documents WHERE domain_id = ? AND relative_path LIKE ?`)
|
|
125
|
+
.all(domainId, `${pathPrefix}%`);
|
|
126
|
+
}
|
|
113
127
|
/**
|
|
114
128
|
* 查询某访客对指定文档的邀请记录。
|
|
115
129
|
*
|