medusajs-documents-plugin 1.1.6 → 1.1.9
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/.medusa/server/src/api/admin/documents/[id]/document/route.js +32 -10
- package/.medusa/server/src/api/admin/documents/route.js +97 -53
- package/.medusa/server/src/api/admin/documents/settings/route.js +100 -37
- package/.medusa/server/src/api/api/admin/documents/[id]/document/route.js +20 -2
- package/.medusa/server/src/api/api/documents/[id]/document/route.js +20 -2
- package/.medusa/server/src/api/documents/[id]/document/route.js +12 -5
- package/.medusa/server/src/api/r/[code]/route.js +14 -2
- package/.medusa/server/src/modules/documents/service.js +215 -112
- package/.medusa/server/src/services/pdfkit-generator.js +54 -1
- package/CHANGELOG.md +21 -0
- package/package.json +2 -1
|
@@ -8,26 +8,45 @@ async function GET(req, res) {
|
|
|
8
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
9
9
|
const manager = req.scope.resolve("manager", { allowUnregistered: true });
|
|
10
10
|
const sharedContext = manager ? { manager } : {};
|
|
11
|
-
const
|
|
11
|
+
const cleanId = (req.params.id || "").replace(/\.pdf$/i, "");
|
|
12
12
|
try {
|
|
13
13
|
let record = null;
|
|
14
14
|
// Check by ID or display_id
|
|
15
15
|
try {
|
|
16
|
-
record = await documentService.retrieveDocumentRecord(
|
|
16
|
+
record = await documentService.retrieveDocumentRecord(cleanId, {}, sharedContext);
|
|
17
17
|
}
|
|
18
|
-
catch (e) {
|
|
18
|
+
catch (e) { }
|
|
19
|
+
if (!record) {
|
|
19
20
|
try {
|
|
20
|
-
const records = await documentService.listDocumentRecords({ display_id:
|
|
21
|
+
const records = await documentService.listDocumentRecords({ display_id: cleanId }, {}, sharedContext);
|
|
21
22
|
if (records && records.length > 0) {
|
|
22
23
|
record = records[0];
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
|
-
catch (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
catch (_) { }
|
|
27
|
+
}
|
|
28
|
+
if (!record) {
|
|
29
|
+
try {
|
|
30
|
+
const records = await documentService.listDocumentRecords({ repair_ticket_id: cleanId }, {}, sharedContext);
|
|
31
|
+
if (records && records.length > 0) {
|
|
32
|
+
record = records[0];
|
|
29
33
|
}
|
|
30
34
|
}
|
|
35
|
+
catch (_) { }
|
|
36
|
+
}
|
|
37
|
+
if (!record) {
|
|
38
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
39
|
+
if (pg) {
|
|
40
|
+
record = await pg("document_record")
|
|
41
|
+
.whereNull("deleted_at")
|
|
42
|
+
.where((builder) => {
|
|
43
|
+
builder
|
|
44
|
+
.where({ id: cleanId })
|
|
45
|
+
.orWhere({ display_id: cleanId })
|
|
46
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
47
|
+
})
|
|
48
|
+
.first();
|
|
49
|
+
}
|
|
31
50
|
}
|
|
32
51
|
if (!record) {
|
|
33
52
|
return res.status(404).send("Document not found");
|
|
@@ -40,8 +59,11 @@ async function GET(req, res) {
|
|
|
40
59
|
return res.send(pdfBuffer);
|
|
41
60
|
}
|
|
42
61
|
catch (err) {
|
|
43
|
-
|
|
62
|
+
try {
|
|
63
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error streaming PDF: ${err.message}`);
|
|
64
|
+
}
|
|
65
|
+
catch (_) { }
|
|
44
66
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
45
67
|
}
|
|
46
68
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9baWRdL2RvY3VtZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBK0RDO0FBbkVELGdFQUFvRTtBQUNwRSxzRUFBd0c7QUFFeEcsb0NBQW9DO0FBQzdCLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0MsRUFBRSxHQUFtQjtJQUMvRSxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztJQUNuRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU3RCxJQUFJLENBQUM7UUFDSCxJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsNEJBQTRCO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztRQUVkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFF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
|
|
@@ -5,64 +5,108 @@ const documents_1 = require("../../../modules/documents");
|
|
|
5
5
|
const service_1 = require("../../../modules/documents/service");
|
|
6
6
|
// GET /admin/documents
|
|
7
7
|
async function GET(req, res) {
|
|
8
|
-
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
9
|
-
const manager = req.scope.resolve("manager", { allowUnregistered: true });
|
|
10
|
-
const sharedContext = manager ? { manager } : {};
|
|
11
|
-
const { type, source, status, search, take = 50, skip = 0 } = req.query;
|
|
12
|
-
const filters = {};
|
|
13
|
-
if (type && type !== "all")
|
|
14
|
-
filters.type = type;
|
|
15
|
-
if (source && source !== "all")
|
|
16
|
-
filters.source = source;
|
|
17
|
-
if (status && status !== "all")
|
|
18
|
-
filters.status = status;
|
|
19
|
-
let records = [];
|
|
20
|
-
let count = 0;
|
|
21
8
|
try {
|
|
22
|
-
const
|
|
9
|
+
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
10
|
+
const manager = req.scope.resolve("manager", { allowUnregistered: true });
|
|
11
|
+
const sharedContext = manager ? { manager } : {};
|
|
12
|
+
const { type, source, status, search, take = 50, skip = 0 } = req.query;
|
|
13
|
+
const filters = {};
|
|
14
|
+
if (type && type !== "all")
|
|
15
|
+
filters.type = type;
|
|
16
|
+
if (source && source !== "all")
|
|
17
|
+
filters.source = source;
|
|
18
|
+
if (status && status !== "all")
|
|
19
|
+
filters.status = status;
|
|
20
|
+
let records = [];
|
|
21
|
+
let count = 0;
|
|
22
|
+
try {
|
|
23
|
+
const [fetchedRecords, fetchedCount] = await documentService.listAndCountDocumentRecords(filters, {
|
|
24
|
+
take: Number(take),
|
|
25
|
+
skip: Number(skip),
|
|
26
|
+
order: { created_at: "DESC" },
|
|
27
|
+
}, sharedContext);
|
|
28
|
+
records = fetchedRecords;
|
|
29
|
+
count = fetchedCount;
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
if ((0, service_1.isUndefinedTableError)(err)) {
|
|
33
|
+
return res.json({
|
|
34
|
+
documents: [],
|
|
35
|
+
count: 0,
|
|
36
|
+
warning: "Migrations pending",
|
|
37
|
+
take: Number(take),
|
|
38
|
+
skip: Number(skip),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Fallback: If MikroORM fork error occurs, query pg_connection directly
|
|
42
|
+
try {
|
|
43
|
+
const pgConnection = (0, service_1.getDatabaseConnection)(req.scope);
|
|
44
|
+
if (pgConnection) {
|
|
45
|
+
let query = pgConnection("document_record").whereNull("deleted_at");
|
|
46
|
+
if (filters.type)
|
|
47
|
+
query = query.where({ type: filters.type });
|
|
48
|
+
if (filters.source)
|
|
49
|
+
query = query.where({ source: filters.source });
|
|
50
|
+
if (filters.status)
|
|
51
|
+
query = query.where({ status: filters.status });
|
|
52
|
+
const countResult = await query.clone().count("id as count").first();
|
|
53
|
+
count = Number(countResult?.count || 0);
|
|
54
|
+
records = await query
|
|
55
|
+
.orderBy("created_at", "desc")
|
|
56
|
+
.limit(Number(take))
|
|
57
|
+
.offset(Number(skip));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (fallbackErr) {
|
|
64
|
+
if ((0, service_1.isUndefinedTableError)(fallbackErr) || (0, service_1.isUndefinedTableError)(err)) {
|
|
65
|
+
return res.json({
|
|
66
|
+
documents: [],
|
|
67
|
+
count: 0,
|
|
68
|
+
warning: "Migrations pending",
|
|
69
|
+
take: Number(take),
|
|
70
|
+
skip: Number(skip),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error listing documents: ${fallbackErr.message || err.message}`);
|
|
75
|
+
}
|
|
76
|
+
catch (_) { }
|
|
77
|
+
return res.status(500).json({ message: fallbackErr.message || err.message, error: true });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let filteredRecords = records;
|
|
81
|
+
if (search && typeof search === "string" && search.trim() !== "") {
|
|
82
|
+
const q = search.toLowerCase();
|
|
83
|
+
filteredRecords = records.filter((r) => r.display_id?.toLowerCase().includes(q) ||
|
|
84
|
+
r.customer_name?.toLowerCase().includes(q) ||
|
|
85
|
+
r.customer_email?.toLowerCase().includes(q) ||
|
|
86
|
+
r.title?.toLowerCase().includes(q));
|
|
87
|
+
}
|
|
88
|
+
return res.json({
|
|
89
|
+
documents: filteredRecords,
|
|
90
|
+
count: count || filteredRecords.length,
|
|
23
91
|
take: Number(take),
|
|
24
92
|
skip: Number(skip),
|
|
25
|
-
|
|
26
|
-
}, sharedContext);
|
|
27
|
-
records = fetchedRecords;
|
|
28
|
-
count = fetchedCount;
|
|
93
|
+
});
|
|
29
94
|
}
|
|
30
|
-
catch (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (filters.status)
|
|
40
|
-
query = query.where({ status: filters.status });
|
|
41
|
-
const countResult = await query.clone().count("id as count").first();
|
|
42
|
-
count = Number(countResult?.count || 0);
|
|
43
|
-
records = await query
|
|
44
|
-
.orderBy("created_at", "desc")
|
|
45
|
-
.limit(Number(take))
|
|
46
|
-
.offset(Number(skip));
|
|
95
|
+
catch (outerErr) {
|
|
96
|
+
if ((0, service_1.isUndefinedTableError)(outerErr)) {
|
|
97
|
+
return res.json({
|
|
98
|
+
documents: [],
|
|
99
|
+
count: 0,
|
|
100
|
+
warning: "Migrations pending",
|
|
101
|
+
take: Number(req.query?.take || 50),
|
|
102
|
+
skip: Number(req.query?.skip || 0),
|
|
103
|
+
});
|
|
47
104
|
}
|
|
48
|
-
|
|
49
|
-
req.scope.resolve("logger")?.error(`[Documents-API] Error listing documents: ${
|
|
50
|
-
return res.status(500).json({ message: err.message, error: true });
|
|
105
|
+
try {
|
|
106
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error listing documents: ${outerErr.message}`);
|
|
51
107
|
}
|
|
108
|
+
catch (_) { }
|
|
109
|
+
return res.status(500).json({ message: outerErr.message, error: true });
|
|
52
110
|
}
|
|
53
|
-
let filteredRecords = records;
|
|
54
|
-
if (search && typeof search === "string" && search.trim() !== "") {
|
|
55
|
-
const q = search.toLowerCase();
|
|
56
|
-
filteredRecords = records.filter((r) => r.display_id?.toLowerCase().includes(q) ||
|
|
57
|
-
r.customer_name?.toLowerCase().includes(q) ||
|
|
58
|
-
r.customer_email?.toLowerCase().includes(q) ||
|
|
59
|
-
r.title?.toLowerCase().includes(q));
|
|
60
|
-
}
|
|
61
|
-
res.json({
|
|
62
|
-
documents: filteredRecords,
|
|
63
|
-
count: count || filteredRecords.length,
|
|
64
|
-
take: Number(take),
|
|
65
|
-
skip: Number(skip),
|
|
66
|
-
});
|
|
67
111
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLGtCQTRHQztBQW5IRCwwREFBOEQ7QUFDOUQsZ0VBRzRDO0FBRTVDLHVCQUF1QjtBQUNoQixLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7UUFFbkYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVqRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFZLENBQUM7UUFFL0UsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSztZQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hELElBQUksTUFBTSxJQUFJLE1BQU0sS0FBSyxLQUFLO1lBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDeEQsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLEtBQUs7WUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUV4RCxJQUFJLE9BQU8sR0FBVSxFQUFFLENBQUM7UUFDeEIsSUFB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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
exports.POST = POST;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
6
|
const documents_1 = require("../../../../modules/documents");
|
|
6
7
|
const service_1 = require("../../../../modules/documents/service");
|
|
7
8
|
// GET /admin/documents/settings
|
|
@@ -12,33 +13,68 @@ async function GET(req, res) {
|
|
|
12
13
|
try {
|
|
13
14
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
14
15
|
const settings = await documentService.getSettings(sharedContext, req.scope);
|
|
15
|
-
|
|
16
|
+
const isDefault = settings?.id === "default";
|
|
17
|
+
return res.json({
|
|
18
|
+
settings,
|
|
19
|
+
success: true,
|
|
20
|
+
...(isDefault ? { warning: "Migrations pending" } : {}),
|
|
21
|
+
});
|
|
16
22
|
}
|
|
17
23
|
catch (err) {
|
|
24
|
+
if ((0, service_1.isUndefinedTableError)(err)) {
|
|
25
|
+
return res.json({
|
|
26
|
+
settings: { ...service_1.DEFAULT_DOCUMENT_SETTINGS },
|
|
27
|
+
success: true,
|
|
28
|
+
warning: "Migrations pending",
|
|
29
|
+
});
|
|
30
|
+
}
|
|
18
31
|
// Fallback: If MikroORM fork error occurs, query pg_connection directly
|
|
19
32
|
const pgConnection = (0, service_1.getDatabaseConnection)(req.scope);
|
|
20
33
|
if (pgConnection) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
try {
|
|
35
|
+
let settings = await pgConnection("document_settings").whereNull("deleted_at").first();
|
|
36
|
+
if (!settings) {
|
|
37
|
+
const createdResult = await pgConnection("document_settings")
|
|
38
|
+
.insert({
|
|
39
|
+
id: (0, utils_1.generateEntityId)(undefined, "docset"),
|
|
40
|
+
company_name: "Store",
|
|
41
|
+
email_notifications_enabled: true,
|
|
42
|
+
sms_notifications_enabled: true,
|
|
43
|
+
whatsapp_notifications_enabled: true,
|
|
44
|
+
created_at: new Date(),
|
|
45
|
+
updated_at: new Date(),
|
|
46
|
+
})
|
|
47
|
+
.returning("*");
|
|
48
|
+
settings = Array.isArray(createdResult) ? createdResult[0] : createdResult;
|
|
49
|
+
}
|
|
50
|
+
return res.json({ settings, success: true });
|
|
51
|
+
}
|
|
52
|
+
catch (knexErr) {
|
|
53
|
+
if ((0, service_1.isUndefinedTableError)(knexErr)) {
|
|
54
|
+
return res.json({
|
|
55
|
+
settings: { ...service_1.DEFAULT_DOCUMENT_SETTINGS },
|
|
56
|
+
success: true,
|
|
57
|
+
warning: "Migrations pending",
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
throw knexErr;
|
|
34
61
|
}
|
|
35
|
-
return res.json({ settings, success: true });
|
|
36
62
|
}
|
|
37
63
|
throw err;
|
|
38
64
|
}
|
|
39
65
|
}
|
|
40
66
|
catch (err) {
|
|
41
|
-
|
|
67
|
+
if ((0, service_1.isUndefinedTableError)(err)) {
|
|
68
|
+
return res.json({
|
|
69
|
+
settings: { ...service_1.DEFAULT_DOCUMENT_SETTINGS },
|
|
70
|
+
success: true,
|
|
71
|
+
warning: "Migrations pending",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error fetching settings: ${err.message}`);
|
|
76
|
+
}
|
|
77
|
+
catch (_) { }
|
|
42
78
|
return res.status(500).json({ message: err.message, error: true });
|
|
43
79
|
}
|
|
44
80
|
}
|
|
@@ -67,29 +103,47 @@ async function POST(req, res) {
|
|
|
67
103
|
}
|
|
68
104
|
}
|
|
69
105
|
catch (err) {
|
|
106
|
+
if ((0, service_1.isUndefinedTableError)(err)) {
|
|
107
|
+
return res.status(400).json({
|
|
108
|
+
message: "Database table document_settings does not exist. Please run npx medusa db:migrate.",
|
|
109
|
+
error: true,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
70
112
|
// Fallback: If MikroORM fork error occurs, update via pg_connection directly
|
|
71
113
|
const pgConnection = (0, service_1.getDatabaseConnection)(req.scope);
|
|
72
114
|
if (pgConnection) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
115
|
+
try {
|
|
116
|
+
const existing = await pgConnection("document_settings").whereNull("deleted_at").first();
|
|
117
|
+
if (existing) {
|
|
118
|
+
const updatedResult = await pgConnection("document_settings")
|
|
119
|
+
.where({ id: existing.id })
|
|
120
|
+
.update({
|
|
121
|
+
...cleanData,
|
|
122
|
+
updated_at: new Date(),
|
|
123
|
+
})
|
|
124
|
+
.returning("*");
|
|
125
|
+
settings = Array.isArray(updatedResult) ? updatedResult[0] : updatedResult;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const createdResult = await pgConnection("document_settings")
|
|
129
|
+
.insert({
|
|
130
|
+
id: (0, utils_1.generateEntityId)(undefined, "docset"),
|
|
131
|
+
...cleanData,
|
|
132
|
+
created_at: new Date(),
|
|
133
|
+
updated_at: new Date(),
|
|
134
|
+
})
|
|
135
|
+
.returning("*");
|
|
136
|
+
settings = Array.isArray(createdResult) ? createdResult[0] : createdResult;
|
|
137
|
+
}
|
|
83
138
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
settings = created;
|
|
139
|
+
catch (knexErr) {
|
|
140
|
+
if ((0, service_1.isUndefinedTableError)(knexErr)) {
|
|
141
|
+
return res.status(400).json({
|
|
142
|
+
message: "Database table document_settings does not exist. Please run npx medusa db:migrate.",
|
|
143
|
+
error: true,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
throw knexErr;
|
|
93
147
|
}
|
|
94
148
|
}
|
|
95
149
|
else {
|
|
@@ -99,8 +153,17 @@ async function POST(req, res) {
|
|
|
99
153
|
return res.json({ settings, success: true });
|
|
100
154
|
}
|
|
101
155
|
catch (err) {
|
|
102
|
-
|
|
156
|
+
if ((0, service_1.isUndefinedTableError)(err)) {
|
|
157
|
+
return res.status(400).json({
|
|
158
|
+
message: "Database table document_settings does not exist. Please run npx medusa db:migrate.",
|
|
159
|
+
error: true,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error updating settings: ${err.message}`);
|
|
164
|
+
}
|
|
165
|
+
catch (_) { }
|
|
103
166
|
return res.status(500).json({ message: err.message, error: true });
|
|
104
167
|
}
|
|
105
168
|
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9zZXR0aW5ncy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLGtCQW9FQztBQUdELG9CQXFGQztBQXJLRCxxREFBNkQ7QUFDN0QsNkRBQWlFO0FBQ2pFLG1FQUkrQztBQUUvQyxnQ0FBZ0M7QUFDekIsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7WUFDbkYsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsTUFBTSxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsS0FBSyxTQUFTLENBQUM7WUFDN0MsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNkLFFBQVE7Z0JBQ1IsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3hELENBQUMsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksSUFBQSwrQkFB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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../../../../modules/documents/service");
|
|
5
6
|
// GET /api/admin/documents/:id/document (Compatibility endpoint for handed-over URLs)
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
@@ -24,6 +25,20 @@ async function GET(req, res) {
|
|
|
24
25
|
record = records[0];
|
|
25
26
|
}
|
|
26
27
|
}
|
|
28
|
+
if (!record) {
|
|
29
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
30
|
+
if (pg) {
|
|
31
|
+
record = await pg("document_record")
|
|
32
|
+
.whereNull("deleted_at")
|
|
33
|
+
.where((builder) => {
|
|
34
|
+
builder
|
|
35
|
+
.where({ id: cleanId })
|
|
36
|
+
.orWhere({ display_id: cleanId })
|
|
37
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
38
|
+
})
|
|
39
|
+
.first();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
27
42
|
if (!record) {
|
|
28
43
|
try {
|
|
29
44
|
const repairModule = req.scope.resolve("repair", { allowUnregistered: true });
|
|
@@ -54,8 +69,11 @@ async function GET(req, res) {
|
|
|
54
69
|
return res.send(pdfBuffer);
|
|
55
70
|
}
|
|
56
71
|
catch (err) {
|
|
57
|
-
|
|
72
|
+
try {
|
|
73
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error streaming PDF: ${err.message}`);
|
|
74
|
+
}
|
|
75
|
+
catch (_) { }
|
|
58
76
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
59
77
|
}
|
|
60
78
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FwaS9hZG1pbi9kb2N1bWVudHMvW2lkXS9kb2N1bWVudC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQTJFQztBQS9FRCxtRUFBdUU7QUFDdkUseUVBQTJHO0FBRTNHLHNGQUFzRjtBQUMvRSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtDLEVBQUUsR0FBbUI7SUFDL0UsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQztRQUNILElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZ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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../../../modules/documents/service");
|
|
5
6
|
// GET /api/documents/:id/document (Public PDF download & view for recipients)
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
@@ -24,6 +25,20 @@ async function GET(req, res) {
|
|
|
24
25
|
record = records[0];
|
|
25
26
|
}
|
|
26
27
|
}
|
|
28
|
+
if (!record) {
|
|
29
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
30
|
+
if (pg) {
|
|
31
|
+
record = await pg("document_record")
|
|
32
|
+
.whereNull("deleted_at")
|
|
33
|
+
.where((builder) => {
|
|
34
|
+
builder
|
|
35
|
+
.where({ id: cleanId })
|
|
36
|
+
.orWhere({ display_id: cleanId })
|
|
37
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
38
|
+
})
|
|
39
|
+
.first();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
27
42
|
if (!record) {
|
|
28
43
|
try {
|
|
29
44
|
const repairModule = req.scope.resolve("repair", { allowUnregistered: true });
|
|
@@ -54,8 +69,11 @@ async function GET(req, res) {
|
|
|
54
69
|
return res.send(pdfBuffer);
|
|
55
70
|
}
|
|
56
71
|
catch (err) {
|
|
57
|
-
|
|
72
|
+
try {
|
|
73
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error streaming PDF: ${err.message}`);
|
|
74
|
+
}
|
|
75
|
+
catch (_) { }
|
|
58
76
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
59
77
|
}
|
|
60
78
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FwaS9kb2N1bWVudHMvW2lkXS9kb2N1bWVudC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQTJFQztBQS9FRCxnRUFBb0U7QUFDcEUsc0VBQXdHO0FBRXhHLDhFQUE4RTtBQUN2RSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtDLEVBQUUsR0FBbUI7SUFDL0UsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQztRQUNILElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0s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
|
|
@@ -32,9 +32,13 @@ async function GET(req, res) {
|
|
|
32
32
|
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
33
33
|
if (pg) {
|
|
34
34
|
record = await pg("document_record")
|
|
35
|
-
.
|
|
36
|
-
.
|
|
37
|
-
|
|
35
|
+
.whereNull("deleted_at")
|
|
36
|
+
.where((builder) => {
|
|
37
|
+
builder
|
|
38
|
+
.where({ id: cleanId })
|
|
39
|
+
.orWhere({ display_id: cleanId })
|
|
40
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
41
|
+
})
|
|
38
42
|
.first();
|
|
39
43
|
}
|
|
40
44
|
}
|
|
@@ -69,8 +73,11 @@ async function GET(req, res) {
|
|
|
69
73
|
return res.send(pdfBuffer);
|
|
70
74
|
}
|
|
71
75
|
catch (err) {
|
|
72
|
-
|
|
76
|
+
try {
|
|
77
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-Public] Error streaming PDF: ${err.message}`);
|
|
78
|
+
}
|
|
79
|
+
catch (_) { }
|
|
73
80
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
74
81
|
}
|
|
75
82
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50cy9baWRdL2RvY3VtZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBZ0ZDO0FBcEZELDZEQUFpRTtBQUNqRSxtRUFBcUc7QUFFckcsMEVBQTBFO0FBQ25FLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0MsRUFBRSxHQUFtQjtJQUMvRSxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztJQUNuRixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFN0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVqRCxJQUFJLENBQUM7UUFDSCxJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsNkVBQTZFO1FBQzdFLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztRQUVkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFF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
|