diff options
Diffstat (limited to 'src/server/api/endpoints/admin/drive')
| -rw-r--r-- | src/server/api/endpoints/admin/drive/files.ts | 81 | ||||
| -rw-r--r-- | src/server/api/endpoints/admin/drive/show-file.ts | 28 |
2 files changed, 109 insertions, 0 deletions
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts new file mode 100644 index 0000000000..177a808cbf --- /dev/null +++ b/src/server/api/endpoints/admin/drive/files.ts @@ -0,0 +1,81 @@ +import $ from 'cafy'; +import File, { packMany } from '../../../../../models/drive-file'; +import define from '../../../define'; + +export const meta = { + requireCredential: false, + requireModerator: true, + + params: { + limit: { + validator: $.num.optional.range(1, 100), + default: 10 + }, + + offset: { + validator: $.num.optional.min(0), + default: 0 + }, + + sort: { + validator: $.str.optional.or([ + '+createdAt', + '-createdAt', + '+size', + '-size', + ]), + }, + + origin: { + validator: $.str.optional.or([ + 'combined', + 'local', + 'remote', + ]), + default: 'local' + } + } +}; + +export default define(meta, (ps, me) => new Promise(async (res, rej) => { + let _sort; + if (ps.sort) { + if (ps.sort == '+createdAt') { + _sort = { + uploadDate: -1 + }; + } else if (ps.sort == '-createdAt') { + _sort = { + uploadDate: 1 + }; + } else if (ps.sort == '+size') { + _sort = { + length: -1 + }; + } else if (ps.sort == '-size') { + _sort = { + length: 1 + }; + } + } else { + _sort = { + _id: -1 + }; + } + + const q = { + 'metadata.deletedAt': { $exists: false }, + } as any; + + if (ps.origin == 'local') q['metadata._user.host'] = null; + if (ps.origin == 'remote') q['metadata._user.host'] = { $ne: null }; + + const files = await File + .find(q, { + limit: ps.limit, + sort: _sort, + skip: ps.offset + }); + + res(await packMany(files, { detail: true, withUser: true, self: true })); +})); diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts new file mode 100644 index 0000000000..6dfab19643 --- /dev/null +++ b/src/server/api/endpoints/admin/drive/show-file.ts @@ -0,0 +1,28 @@ +import $ from 'cafy'; +import ID, { transform } from '../../../../../misc/cafy-id'; +import define from '../../../define'; +import DriveFile from '../../../../../models/drive-file'; + +export const meta = { + requireCredential: true, + requireModerator: true, + + params: { + fileId: { + validator: $.type(ID), + transform: transform, + }, + } +}; + +export default define(meta, (ps, me) => new Promise(async (res, rej) => { + const file = await DriveFile.findOne({ + _id: ps.fileId + }); + + if (file == null) { + return rej('file not found'); + } + + res(file); +})); |