strapi-plugin-config-sync/services/config.js

58 lines
1.4 KiB
JavaScript
Raw Normal View History

2021-03-19 19:04:22 +01:00
'use strict';
2021-03-19 21:50:23 +01:00
const fs = require('fs');
const util = require('util');
2021-03-19 19:04:22 +01:00
/**
* config.js service
*
* @description: A set of functions similar to controller's actions to avoid code duplication.
*/
module.exports = {
2021-03-19 21:50:23 +01:00
writeConfigFile: async (configName, fileContents) => {
const json =
2021-03-19 22:50:12 +01:00
!strapi.plugins.config.config.minify ?
JSON.stringify(JSON.parse(fileContents), null, 2)
: fileContents;
2021-03-19 21:50:23 +01:00
await strapi.fs.writePluginFile(
'config',
`files/${configName}.json`,
json
2021-03-19 21:50:23 +01:00
);
},
readConfigFile: async (configName) => {
const readFile = util.promisify(fs.readFile);
return await readFile(`${strapi.plugins.config.config.destination}${configName}.json`)
.then((data) => {
return JSON.parse(data);
})
.catch(() => {
return null;
});
},
importFromFile: async (configName) => {
const coreStoreAPI = strapi.query('core_store');
const fileContents = await strapi.plugins.config.services.config.readConfigFile(configName);
try {
const configExists = await strapi
.query('core_store')
.findOne({ key: configName });
if (!configExists) {
await coreStoreAPI.create({ key: configName, value: fileContents });
} else {
await coreStoreAPI.update({ key: configName }, { value: fileContents });
}
2021-03-19 19:04:22 +01:00
2021-03-19 21:50:23 +01:00
return { success: true };
} catch (err) {
throw new Error(err);
}
}
2021-03-19 19:04:22 +01:00
};