blob: ac3bd13c3afd543607c46352115b5ba0aaaf3261 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
'use strict';
/**
* Module dependencies
*/
import * as mongo from 'mongodb';
import DriveFolder from '../models/drive-folder';
import deepcopy = require('deepcopy');
/**
* Serialize a drive folder
*
* @param {any} folder
* @param {any} options?
* @return {Promise<any>}
*/
const self = (
folder: any,
options?: {
detail: boolean
}
) => new Promise<any>(async (resolve, reject) => {
const opts = Object.assign({
detail: false
}, options);
let _folder: any;
// Populate the folder if 'folder' is ID
if (mongo.ObjectID.prototype.isPrototypeOf(folder)) {
_folder = await DriveFolder.findOne({ _id: folder });
} else if (typeof folder === 'string') {
_folder = await DriveFolder.findOne({ _id: new mongo.ObjectID(folder) });
} else {
_folder = deepcopy(folder);
}
// Rename _id to id
_folder.id = _folder._id;
delete _folder._id;
if (opts.detail && _folder.parent_id) {
// Populate parent folder
_folder.parent = await self(_folder.parent_id, {
detail: true
});
}
resolve(_folder);
});
export default self;
|