mirror of
https://github.com/strapi/strapi.git
synced 2025-07-19 15:06:11 +00:00
42 lines
1.1 KiB
JavaScript
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,
|
|
};
|