strapi/packages/core/upload/server/services/api-upload-folder.js
2022-05-17 15:41:28 +02:00

42 lines
1.1 KiB
JavaScript

'use strict';
const { isNil, get } = require('lodash/fp');
const { getService } = require('../utils');
const { FOLDER_MODEL_UID, API_UPLOAD_FOLDER_BASE_NAME } = require('../constants');
const getStore = () => strapi.store({ type: 'plugin', name: 'upload', key: 'api-folder' });
const createApiUploadFolder = async () => {
let name = API_UPLOAD_FOLDER_BASE_NAME;
const folderService = getService('folder');
let exists = true;
let index = 1;
while (exists) {
exists = await folderService.exists({ name, parent: null });
if (exists) {
name = `${API_UPLOAD_FOLDER_BASE_NAME} (${index})`;
index += 1;
}
}
const folder = await folderService.create({ name, parent: null });
await getStore().set({ value: { id: folder.id } });
return folder;
};
const getAPIUploadFolder = async () => {
const storeValue = await getStore().get();
const folderId = get('id', storeValue);
const folder = folderId ? await strapi.entityService.findOne(FOLDER_MODEL_UID, folderId) : null;
return isNil(folder) ? createApiUploadFolder() : folder;
};
module.exports = {
getAPIUploadFolder,
};