(src: string, dst: string)
| 137 | } |
| 138 | |
| 139 | static async copy(src: string, dst: string) { |
| 140 | const value = await StorageModel.coll.findOneAndUpdate( |
| 141 | { path: src, autoDelete: null }, |
| 142 | { $set: { lastUsage: new Date() } }, |
| 143 | { returnDocument: 'after' }, |
| 144 | ); |
| 145 | if (!value) throw new Error(`Original file ${src} not found`); |
| 146 | const meta = {}; |
| 147 | await StorageModel.del([dst]); |
| 148 | meta['Content-Type'] = mime(dst); |
| 149 | let _id = StorageModel.generateId(extname(dst)); |
| 150 | // Make sure id is not used |
| 151 | // eslint-disable-next-line no-await-in-loop |
| 152 | while (await StorageModel.coll.findOne({ _id })) _id = StorageModel.generateId(extname(dst)); |
| 153 | await StorageModel.coll.insertOne({ |
| 154 | ...value, _id, path: dst, link: value.link || value._id, lastModified: new Date(), owner: value.owner || 1, |
| 155 | }); |
| 156 | return _id; |
| 157 | } |
| 158 | } |
| 159 | |
| 160 | async function cleanFiles() { |
no test coverage detected