Integrated master/detail, refactor Icon, add base router
This commit is contained in:
@@ -11,19 +11,19 @@ import B64 from "b64"
|
||||
import { PassThrough } from "stream"
|
||||
import { catchAll } from "."
|
||||
|
||||
function pipeToGridFS(readable, gfsWriteable, decoder) {
|
||||
function pipeToGridFS(readable, writable, decoder) {
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
readable.on("error", (error) => {
|
||||
reject(error)
|
||||
})
|
||||
gfsWriteable.on("error", (error) => {
|
||||
writeable.on("error", (error) => {
|
||||
reject(error)
|
||||
})
|
||||
gfsWriteable.on("close", (file) => {
|
||||
writeable.on("finish", (file) => {
|
||||
resolve(file)
|
||||
})
|
||||
})
|
||||
readable.pipe(decoder).pipe(gfsWriteable)
|
||||
readable.pipe(decoder).pipe(writeable)
|
||||
return promise
|
||||
}
|
||||
|
||||
@@ -73,12 +73,13 @@ export class AssetRoutes {
|
||||
assetId = assetId.slice(0, extIndex)
|
||||
}
|
||||
|
||||
const file = await this.db.gridfs.findOneAsync({ _id: assetId })
|
||||
const cursor = await this.db.gridfs.findOne({ _id: assetId })
|
||||
|
||||
if (!file) {
|
||||
if (!cursor) {
|
||||
throw createError.NotFound(`Asset ${assetId} was not found`)
|
||||
}
|
||||
|
||||
const file = cursor.next()
|
||||
const ifNoneMatch = req.get("If-None-Match")
|
||||
|
||||
if (ifNoneMatch && ifNoneMatch === file.md5) {
|
||||
@@ -98,13 +99,13 @@ export class AssetRoutes {
|
||||
ETag: file.md5,
|
||||
})
|
||||
|
||||
this.db.gridfs.createReadStream({ _id: file._id }).pipe(res)
|
||||
this.db.gridfs.openDownloadStream(file._id).pipe(res)
|
||||
}
|
||||
|
||||
async deleteAsset(req, res, next) {
|
||||
const assetId = req.params._id
|
||||
|
||||
await this.db.gridfs.removeAsync({ _id: assetId })
|
||||
await this.db.gridfs.delete(assetId)
|
||||
|
||||
res.json({})
|
||||
}
|
||||
@@ -235,11 +236,11 @@ export class AssetRoutes {
|
||||
|
||||
if (uploadedChunks >= uploadData.numberOfChunks) {
|
||||
let readable = redisReadStream(this.rs.client, uploadDataId)
|
||||
let writeable = this.db.gridfs.createWriteStream({
|
||||
_id: uploadId,
|
||||
filename: uploadData.fileName,
|
||||
content_type: uploadData.contentType,
|
||||
})
|
||||
let writeable = this.db.gridfs.openUploadStreamWithId(
|
||||
uploadId,
|
||||
uploadData.fileName,
|
||||
{ contentType: uploadData.contentType }
|
||||
)
|
||||
|
||||
const decoder =
|
||||
uploadData.chunkContentType === "application/base64"
|
||||
|
||||
Reference in New Issue
Block a user