yaml-admin-api 0.0.80 → 0.0.82
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/package.json
CHANGED
|
@@ -338,6 +338,34 @@ const generateCrud = async ({ app, db, entity_name, yml_entity, yml, options })
|
|
|
338
338
|
res.json(list);
|
|
339
339
|
}));
|
|
340
340
|
|
|
341
|
+
//view
|
|
342
|
+
app.get(`${api_prefix}/${entity_name}/:id`, auth.isAuthenticated, asyncErrorHandler(async (req, res) => {
|
|
343
|
+
let f = {}
|
|
344
|
+
f[key_field.name] = parseKey(req.params.id)
|
|
345
|
+
Object.assign(f, default_filter)
|
|
346
|
+
|
|
347
|
+
let aggregate = await makeApiGenerateAggregate(db, entity_name, yml_entity, yml, options)
|
|
348
|
+
|
|
349
|
+
let m
|
|
350
|
+
if(aggregate?.length > 0) {
|
|
351
|
+
aggregate = [{$match: f}, ...aggregate, { $limit: 1 }]
|
|
352
|
+
if(yml.debug && entity_name == 'ils')
|
|
353
|
+
console.log('list', entity_name, JSON.stringify(aggregate, null, 2))
|
|
354
|
+
const result = await db.collection(collection_name).aggregate(aggregate).toArray()
|
|
355
|
+
m = result.length > 0 ? result[0] : null
|
|
356
|
+
} else {
|
|
357
|
+
m = await db.collection(collection_name).findOne(f);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if (!m)
|
|
361
|
+
return res.status(404).send('Not found');
|
|
362
|
+
|
|
363
|
+
m.id = getKeyFromEntity(m)
|
|
364
|
+
await addInfo(db, [m])
|
|
365
|
+
|
|
366
|
+
res.json(m);
|
|
367
|
+
}))
|
|
368
|
+
|
|
341
369
|
|
|
342
370
|
const constructEntity = async (req, entityId) => {
|
|
343
371
|
var entity = {};
|
|
@@ -467,35 +495,6 @@ const generateCrud = async ({ app, db, entity_name, yml_entity, yml, options })
|
|
|
467
495
|
res.json(entity);
|
|
468
496
|
}));
|
|
469
497
|
|
|
470
|
-
//view
|
|
471
|
-
app.get(`${api_prefix}/${entity_name}/:id`, auth.isAuthenticated, asyncErrorHandler(async (req, res) => {
|
|
472
|
-
let f = {}
|
|
473
|
-
f[key_field.name] = parseKey(req.params.id)
|
|
474
|
-
Object.assign(f, default_filter)
|
|
475
|
-
|
|
476
|
-
let aggregate = await makeApiGenerateAggregate(db, entity_name, yml_entity, yml, options)
|
|
477
|
-
|
|
478
|
-
let m
|
|
479
|
-
if(aggregate?.length > 0) {
|
|
480
|
-
aggregate = [{$match: f}, ...aggregate, { $limit: 1 }]
|
|
481
|
-
const result = await db.collection(collection_name).aggregate(aggregate).toArray()
|
|
482
|
-
m = result.length > 0 ? result[0] : null
|
|
483
|
-
} else {
|
|
484
|
-
m = await db.collection(collection_name).findOne(f);
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
if (!m)
|
|
488
|
-
return res.status(404).send('Not found');
|
|
489
|
-
|
|
490
|
-
m.id = getKeyFromEntity(m)
|
|
491
|
-
await addInfo(db, [m])
|
|
492
|
-
|
|
493
|
-
if(yml.debug)
|
|
494
|
-
console.log('show', entity_name, m)
|
|
495
|
-
|
|
496
|
-
res.json(m);
|
|
497
|
-
}))
|
|
498
|
-
|
|
499
498
|
//delete
|
|
500
499
|
app.delete(`${api_prefix}/${entity_name}/:id`, auth.isAuthenticated, asyncErrorHandler(async (req, res) =>{
|
|
501
500
|
let f = {}
|
|
@@ -793,9 +792,7 @@ const makeApiGenerateAggregate = async (db, entity_name, yml_entity, yml, option
|
|
|
793
792
|
projection[field] = 1
|
|
794
793
|
} else if(fields) {
|
|
795
794
|
fields.forEach(m => {
|
|
796
|
-
|
|
797
|
-
projection[m.name] = 1
|
|
798
|
-
}
|
|
795
|
+
projection[m.name] = 1
|
|
799
796
|
})
|
|
800
797
|
|
|
801
798
|
// reference 필드는 중첩 lookup으로 처리
|
|
@@ -29,10 +29,10 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
29
29
|
let ext = req.params.ext;
|
|
30
30
|
|
|
31
31
|
let contentType = whatIsContentType(ext)
|
|
32
|
-
let key = `${member_no}/${fileName}.${ext}`
|
|
32
|
+
let key = `${prefix}/${member_no}/${fileName}.${ext}`
|
|
33
33
|
const uploadUrl = await getSignedUrl(s3, new PutObjectCommand({Bucket: bucket,
|
|
34
34
|
ContentType: contentType,
|
|
35
|
-
Key:
|
|
35
|
+
Key: key}), { expiresIn: 300 });
|
|
36
36
|
|
|
37
37
|
let r = {upload_url:uploadUrl, key, fileName:`${fileName}.${ext}`, member_no, contentType}
|
|
38
38
|
console.log(r)
|
|
@@ -46,10 +46,10 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
46
46
|
let ext = req.params.ext;
|
|
47
47
|
|
|
48
48
|
let contentType = whatIsContentType(ext)
|
|
49
|
-
let key = `${member_no}/${fileName}.${ext}`
|
|
49
|
+
let key = `${prefix}/${member_no}/${fileName}.${ext}`
|
|
50
50
|
const uploadUrl = await getSignedUrl(s3, new PutObjectCommand({Bucket: bucket_private,
|
|
51
51
|
ContentType: contentType,
|
|
52
|
-
Key: `${
|
|
52
|
+
Key: `${key}`}), { expiresIn: 300 });
|
|
53
53
|
|
|
54
54
|
let r = {upload_url:uploadUrl, key, fileName:`${fileName}.${ext}`, member_no, contentType}
|
|
55
55
|
|
|
@@ -63,12 +63,12 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
63
63
|
let fileName = await genEntityIdWithKey(db, 'file');
|
|
64
64
|
let ext = req.params.ext;
|
|
65
65
|
|
|
66
|
-
let key =
|
|
66
|
+
let key = `${prefix}/${member_no}/${fileName}.${ext}`;
|
|
67
67
|
let contentType = whatIsContentType(ext);
|
|
68
68
|
|
|
69
69
|
const createMultipartUpload = await s3.send(new CreateMultipartUploadCommand({
|
|
70
70
|
Bucket: bucket_private,
|
|
71
|
-
Key: `${
|
|
71
|
+
Key: `${key}`,
|
|
72
72
|
ContentType: contentType
|
|
73
73
|
}));
|
|
74
74
|
|
|
@@ -79,10 +79,9 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
79
79
|
app.post(api_prefix+'/api/media/url/secure/part', auth.isAuthenticated, async function (req, res) {
|
|
80
80
|
let s3 = getS3();
|
|
81
81
|
let { key, uploadId, partNumber } = req.body;
|
|
82
|
-
|
|
83
82
|
const command = new UploadPartCommand({
|
|
84
83
|
Bucket: bucket_private,
|
|
85
|
-
Key: `${
|
|
84
|
+
Key: `${key}`,
|
|
86
85
|
UploadId: uploadId,
|
|
87
86
|
PartNumber: partNumber
|
|
88
87
|
});
|
|
@@ -101,7 +100,7 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
101
100
|
|
|
102
101
|
await s3.send(new CompleteMultipartUploadCommand({
|
|
103
102
|
Bucket: bucket_private,
|
|
104
|
-
Key: `${
|
|
103
|
+
Key: `${key}`,
|
|
105
104
|
UploadId: uploadId,
|
|
106
105
|
MultipartUpload: { Parts: parts }
|
|
107
106
|
}));
|
|
@@ -117,7 +116,7 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
117
116
|
|
|
118
117
|
await s3.send(new AbortMultipartUploadCommand({
|
|
119
118
|
Bucket: bucket_private,
|
|
120
|
-
Key: `${
|
|
119
|
+
Key: `${key}`,
|
|
121
120
|
UploadId: uploadId
|
|
122
121
|
}));
|
|
123
122
|
|
|
@@ -136,11 +135,11 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
136
135
|
let r = {list:[], r:true}
|
|
137
136
|
for(let ext of ext_list) {
|
|
138
137
|
let fileName = await genEntityIdWithKey(db, 'file')
|
|
139
|
-
let key =
|
|
138
|
+
let key = `${prefix}/${member_no}/${fileName}.${ext}`
|
|
140
139
|
let contentType = whatIsContentType(ext)
|
|
141
140
|
const upload_url = await getSignedUrl(s3, new PutObjectCommand({Bucket: bucket,
|
|
142
141
|
ContentType: contentType,
|
|
143
|
-
Key: `${
|
|
142
|
+
Key: `${key}`}), { expiresIn: 300 });
|
|
144
143
|
|
|
145
144
|
r.list.push({upload_url, key, fileName:`${fileName}.${ext}`, member_no, contentType})
|
|
146
145
|
}
|
|
@@ -156,11 +155,11 @@ const generateS3UploadApi = async ({ app, db, yml, options }) => {
|
|
|
156
155
|
let r = {list:[], r:true}
|
|
157
156
|
for(let ext of ext_list) {
|
|
158
157
|
let fileName = await genEntityIdWithKey(db, 'file')
|
|
159
|
-
let key = `${member_no}/${fileName}.${ext}`
|
|
158
|
+
let key = `${prefix}/${member_no}/${fileName}.${ext}`
|
|
160
159
|
let contentType = whatIsContentType(ext)
|
|
161
160
|
const upload_url = await getSignedUrl(s3, new PutObjectCommand({Bucket: bucket_private,
|
|
162
161
|
ContentType: contentType,
|
|
163
|
-
Key: `${
|
|
162
|
+
Key: `${key}`}), { expiresIn: 300 });
|
|
164
163
|
|
|
165
164
|
r.list.push({upload_url, key, fileName:`${fileName}.${ext}`, member_no, contentType})
|
|
166
165
|
}
|