@kne/fastify-file-manager 2.0.10 → 2.0.13

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.
@@ -48,6 +48,7 @@ module.exports = fp(async (fastify, options) => {
48
48
  hash.update(buffer);
49
49
  writeStream.write(buffer);
50
50
  fileSize = buffer.byteLength;
51
+ writeStream.end();
51
52
  } else {
52
53
  throw new Error('文件类型不支持');
53
54
  }
@@ -95,13 +96,21 @@ module.exports = fp(async (fastify, options) => {
95
96
  file.storageType = storageType;
96
97
  await file.save();
97
98
  return file;
98
- })(() => models.fileRecord.create({
99
- filename, namespace: namespace || options.namespace, encoding, mimetype, hash: digest, size: fileSize, storageType
100
- }));
99
+ })(() =>
100
+ models.fileRecord.create({
101
+ filename,
102
+ namespace: namespace || options.namespace,
103
+ encoding,
104
+ mimetype,
105
+ hash: digest,
106
+ size: fileSize,
107
+ storageType
108
+ })
109
+ );
101
110
  return Object.assign({}, outputFile.get({ plain: true }), { id: outputFile.uuid });
102
111
  };
103
112
 
104
- const uploadFromUrl = async ({ id, url, namespace }) => {
113
+ const uploadFromUrl = async ({ id, url, filename: originFilename, namespace }) => {
105
114
  const response = await fetch(url);
106
115
  if (!response.ok) {
107
116
  throw new Error('下载文件失败');
@@ -142,13 +151,20 @@ module.exports = fp(async (fastify, options) => {
142
151
  }
143
152
  }
144
153
 
154
+ if (originFilename) {
155
+ filename = originFilename;
156
+ }
157
+
145
158
  const searchParams = new URLSearchParams(url.split('?')[1]);
146
159
  if (searchParams.get('filename')) {
147
160
  filename = searchParams.get('filename');
148
161
  }
149
162
 
150
163
  const tempFile = {
151
- filename, mimetype: response.headers.get('content-type'), encoding: 'binary', file: nodeStream
164
+ filename,
165
+ mimetype: response.headers.get('content-type'),
166
+ encoding: 'binary',
167
+ file: nodeStream
152
168
  };
153
169
  return await uploadToFileSystem({ id, file: tempFile, namespace });
154
170
  };
@@ -183,11 +199,13 @@ module.exports = fp(async (fastify, options) => {
183
199
  targetFile = await ossServices.downloadFile({ filename: targetFileName });
184
200
  }
185
201
  return Object.assign({}, file.get({ pain: true }), {
186
- id: file.uuid, filePath: targetFileName, targetFile
202
+ id: file.uuid,
203
+ filePath: targetFileName,
204
+ targetFile
187
205
  });
188
206
  };
189
207
 
190
- const getFileList = async ({ filter, currentPage, perPage }) => {
208
+ const getFileList = async ({ filter = {}, currentPage, perPage }) => {
191
209
  // namespace: namespace || options.namespace
192
210
  const queryFilter = {};
193
211
 
@@ -211,11 +229,39 @@ module.exports = fp(async (fastify, options) => {
211
229
  };
212
230
  }
213
231
 
232
+ if (filter?.id) {
233
+ queryFilter.uuid = {
234
+ [Op.like]: `%${filter.id}%`
235
+ };
236
+ }
237
+
238
+ if (filter?.createdAt) {
239
+ if (filter.createdAt.startTime && filter.createdAt.endTime) {
240
+ queryFilter.createdAt = {
241
+ [Op.between]: [filter.createdAt.startTime, filter.createdAt.endTime]
242
+ };
243
+ }
244
+ if (filter.createdAt.startTime && !filter.createdAt.endTime) {
245
+ queryFilter.createdAt = {
246
+ [Op.gte]: filter.createdAt.startTime
247
+ };
248
+ }
249
+ if (!filter.createdAt.startTime && filter.createdAt.endTime) {
250
+ queryFilter.createdAt = {
251
+ [Op.lte]: filter.createdAt.endTime
252
+ };
253
+ }
254
+ }
255
+
214
256
  const { count, rows } = await models.fileRecord.findAndCountAll({
215
- where: queryFilter, offset: perPage * (currentPage - 1), limit: perPage
257
+ where: queryFilter,
258
+ offset: perPage * (currentPage - 1),
259
+ limit: perPage,
260
+ order: [['createdAt', 'desc']]
216
261
  });
217
262
  return {
218
- pageData: rows.map(item => Object.assign({}, item.get({ plain: true }), { id: item.uuid })), totalCount: count
263
+ pageData: rows.map(item => Object.assign({}, item.get({ plain: true }), { id: item.uuid })),
264
+ totalCount: count
219
265
  };
220
266
  };
221
267
 
@@ -260,7 +306,8 @@ module.exports = fp(async (fastify, options) => {
260
306
  }
261
307
 
262
308
  return Object.assign({}, file.get({ plain: true }), {
263
- id: file.uuid, buffer
309
+ id: file.uuid,
310
+ buffer
264
311
  });
265
312
  };
266
313
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kne/fastify-file-manager",
3
- "version": "2.0.10",
3
+ "version": "2.0.13",
4
4
  "description": "用于管理静态文件上传查看等",
5
5
  "main": "index.js",
6
6
  "scripts": {