backend/app/models/api/files/FileBox.model.js

54 lines
1.2 KiB
JavaScript
Raw Normal View History

2021-02-04 15:19:04 +00:00
const { Model } = require('flitter-orm')
const uuid = require('uuid').v4
const { ObjectId } = require('mongodb')
class FileBoxModel extends Model {
static get schema() {
return {
UUID: { type: String, default: uuid },
name: String,
pageId: String,
parentUUID: String,
rootUUID: String,
fileIds: [String],
active: { type: Boolean, default: true },
}
}
async parent() {
return this.constructor.findOne({
UUID: this.parentUUID,
active: true,
})
}
async root() {
return this.constructor.findOne({
UUID: this.rootUUID,
active: true,
})
}
async files() {
const File = this.models.get('upload::File')
return await File.find({
_id: {
$in: this.fileIds.map(x => ObjectId(x)),
}
})
}
async to_api() {
return {
UUID: this.UUID,
name: this.name,
pageId: this.pageId,
parentUUID: this.parentUUID,
rootUUID: this.rootUUID,
fileIds: this.fileIds || [],
}
}
}
module.exports = exports = FileBoxModel