@vegan-friendly/strapi-plugin-elasticsearch 0.0.11-alpha.6 → 0.0.11-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +3 -0
- package/README.md +0 -4
- package/admin/src/components/Initializer/index.js +26 -0
- package/admin/src/components/PluginIcon/index.js +12 -0
- package/admin/src/components/SubNavigation/index.js +48 -0
- package/admin/src/index.js +63 -0
- package/admin/src/pages/App/index.js +29 -0
- package/admin/src/pages/ConfigureCollection/index.js +225 -0
- package/admin/src/pages/ConfigureCollectionList/index.js +266 -0
- package/admin/src/pages/Homepage/index.js +168 -0
- package/admin/src/pages/ViewIndexingRunLog/index.js +124 -0
- package/admin/src/pluginId.js +5 -0
- package/admin/src/translations/en.json +1 -0
- package/admin/src/translations/fr.json +1 -0
- package/admin/src/utils/apiUrls.js +14 -0
- package/admin/src/utils/axiosInstance.js +40 -0
- package/admin/src/utils/getTrad.js +5 -0
- package/package.json +40 -80
- package/server/bootstrap.js +142 -0
- package/server/config/index.js +6 -0
- package/server/content-types/index.js +9 -0
- package/server/content-types/indexing-logs.js +35 -0
- package/server/content-types/name-prefix.js +0 -0
- package/server/content-types/tasks.js +52 -0
- package/server/controllers/configure-indexing.js +66 -0
- package/server/controllers/index.js +15 -0
- package/server/controllers/log-indexing.js +11 -0
- package/server/controllers/perform-indexing.js +28 -0
- package/server/controllers/perform-search.js +31 -0
- package/server/controllers/setup-info.js +14 -0
- package/server/destroy.js +5 -0
- package/server/index.js +25 -0
- package/server/middlewares/index.js +3 -0
- package/server/policies/index.js +3 -0
- package/server/register.js +5 -0
- package/server/routes/configure-indexing.js +42 -0
- package/server/routes/index.js +13 -0
- package/server/routes/perform-indexing.js +24 -0
- package/server/routes/perform-search.js +14 -0
- package/server/routes/run-log.js +12 -0
- package/server/routes/setup-info.js +12 -0
- package/server/services/configure-indexing.js +184 -0
- package/server/services/es-interface.js +187 -0
- package/server/services/helper.js +305 -0
- package/server/services/index.js +19 -0
- package/server/services/log-indexing.js +26 -0
- package/server/services/perform-indexing.js +173 -0
- package/server/services/schedule-indexing.js +65 -0
- package/server/services/transform-content.js +22 -0
- package/strapi-admin.js +3 -0
- package/strapi-server.js +3 -0
- package/dist/_chunks/App-Br53NnT1.mjs +0 -17315
- package/dist/_chunks/App-C3jMSu4l.js +0 -17314
- package/dist/_chunks/en-B4KWt_jN.js +0 -4
- package/dist/_chunks/en-Byx4XI2L.mjs +0 -4
- package/dist/_chunks/index-BlmgBQo2.js +0 -71
- package/dist/_chunks/index-CRnRLV0T.mjs +0 -72
- package/dist/admin/index.js +0 -3
- package/dist/admin/index.mjs +0 -4
- package/dist/server/index.js +0 -7330
- package/dist/server/index.mjs +0 -7307
@@ -0,0 +1,35 @@
|
|
1
|
+
module.exports = {
|
2
|
+
"kind": "collectionType",
|
3
|
+
"collectionName": "indexing-log",
|
4
|
+
"info": {
|
5
|
+
"singularName": "indexing-log",
|
6
|
+
"pluralName": "indexing-logs",
|
7
|
+
"displayName": "Indexing Logs",
|
8
|
+
"description": "Logged runs of the indexing cron job"
|
9
|
+
},
|
10
|
+
"options": {
|
11
|
+
"draftAndPublish": false
|
12
|
+
},
|
13
|
+
"pluginOptions": {
|
14
|
+
'content-manager': {
|
15
|
+
visible: false,
|
16
|
+
},
|
17
|
+
'content-type-builder': {
|
18
|
+
visible: false,
|
19
|
+
}
|
20
|
+
},
|
21
|
+
"attributes": {
|
22
|
+
"status": {
|
23
|
+
"type": "enumeration",
|
24
|
+
"enum": [
|
25
|
+
"pass",
|
26
|
+
"fail"
|
27
|
+
],
|
28
|
+
"required": true
|
29
|
+
},
|
30
|
+
"details": {
|
31
|
+
"type": "text"
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
File without changes
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module.exports = {
|
2
|
+
"kind": "collectionType",
|
3
|
+
"collectionName": "task",
|
4
|
+
"info": {
|
5
|
+
"singularName": "task",
|
6
|
+
"pluralName": "tasks",
|
7
|
+
"displayName": "Task",
|
8
|
+
"description": "Search indexing tasks"
|
9
|
+
},
|
10
|
+
"options": {
|
11
|
+
"draftAndPublish": false
|
12
|
+
},
|
13
|
+
"pluginOptions": {
|
14
|
+
'content-manager': {
|
15
|
+
visible: false,
|
16
|
+
},
|
17
|
+
'content-type-builder': {
|
18
|
+
visible: false,
|
19
|
+
}
|
20
|
+
},
|
21
|
+
"attributes": {
|
22
|
+
"collection_name": {
|
23
|
+
"type": "string",
|
24
|
+
"required": true
|
25
|
+
},
|
26
|
+
"item_id": {
|
27
|
+
"type": "integer"
|
28
|
+
},
|
29
|
+
"indexing_status": {
|
30
|
+
"type": "enumeration",
|
31
|
+
"enum": [
|
32
|
+
"to-be-done",
|
33
|
+
"done"
|
34
|
+
],
|
35
|
+
"required": true,
|
36
|
+
"default": "to-be-done"
|
37
|
+
},
|
38
|
+
"full_site_indexing": {
|
39
|
+
"type": "boolean"
|
40
|
+
},
|
41
|
+
"indexing_type": {
|
42
|
+
"type": "enumeration",
|
43
|
+
"enum": [
|
44
|
+
"add-to-index",
|
45
|
+
"remove-from-index"
|
46
|
+
],
|
47
|
+
"default": "add-to-index",
|
48
|
+
"required": true
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
module.exports = ({ strapi }) => {
|
6
|
+
const configureIndexingService = strapi.plugins['elasticsearch'].services.configureIndexing;
|
7
|
+
|
8
|
+
const getContentConfig = async (ctx) => {
|
9
|
+
return configureIndexingService.getContentConfig();
|
10
|
+
};
|
11
|
+
|
12
|
+
const saveCollectionConfig = async (ctx) => {
|
13
|
+
const { body } = ctx.request;
|
14
|
+
try {
|
15
|
+
const updatedConfig = await configureIndexingService.setContentConfig({collection: ctx.params.collectionname, config : body.data});
|
16
|
+
return updatedConfig;
|
17
|
+
} catch (err) {
|
18
|
+
ctx.throw(500, err);
|
19
|
+
}
|
20
|
+
};
|
21
|
+
|
22
|
+
const importContentConfig = async (ctx) => {
|
23
|
+
const { body } = ctx.request;
|
24
|
+
try {
|
25
|
+
if (body['data'])
|
26
|
+
{
|
27
|
+
const updatedConfig = await configureIndexingService.importContentConfig({config : body['data']});
|
28
|
+
return updatedConfig;
|
29
|
+
}
|
30
|
+
else
|
31
|
+
ctx.throw(400, 'Invalid parameters')
|
32
|
+
} catch (err) {
|
33
|
+
ctx.throw(500, err);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
const exportContentConfig = async (ctx) => {
|
38
|
+
return configureIndexingService.getContentConfig();
|
39
|
+
}
|
40
|
+
|
41
|
+
const setContentConfig = async (ctx) => {
|
42
|
+
const { body } = ctx.request;
|
43
|
+
try {
|
44
|
+
const updatedConfig = await configureIndexingService.setContentConfig({config : body});
|
45
|
+
return updatedConfig;
|
46
|
+
} catch (err) {
|
47
|
+
ctx.throw(500, err);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
const getCollectionConfig = async (ctx) => {
|
52
|
+
if (ctx.params.collectionname)
|
53
|
+
return configureIndexingService.getCollectionConfig({collectionName: ctx.params.collectionname})
|
54
|
+
else
|
55
|
+
return null;
|
56
|
+
}
|
57
|
+
|
58
|
+
return {
|
59
|
+
getContentConfig,
|
60
|
+
setContentConfig,
|
61
|
+
getCollectionConfig,
|
62
|
+
saveCollectionConfig,
|
63
|
+
exportContentConfig,
|
64
|
+
importContentConfig
|
65
|
+
};
|
66
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const configureIndexing = require('./configure-indexing');
|
4
|
+
const performSearch = require('./perform-search');
|
5
|
+
const logIndexing = require('./log-indexing');
|
6
|
+
const setupInfo = require('./setup-info');
|
7
|
+
const performIndexing = require('./perform-indexing');
|
8
|
+
|
9
|
+
module.exports = {
|
10
|
+
configureIndexing,
|
11
|
+
performSearch,
|
12
|
+
logIndexing,
|
13
|
+
setupInfo,
|
14
|
+
performIndexing
|
15
|
+
};
|
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
module.exports = ({ strapi }) => {
|
3
|
+
const logIndexingService = strapi.plugins['elasticsearch'].services.logIndexing;
|
4
|
+
const fetchRecentRunsLog = async (ctx) => {
|
5
|
+
return await logIndexingService.fetchIndexingLogs();
|
6
|
+
}
|
7
|
+
|
8
|
+
return {
|
9
|
+
fetchRecentRunsLog
|
10
|
+
};
|
11
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
module.exports = ({ strapi }) => {
|
6
|
+
const indexer = strapi.plugins['elasticsearch'].services.indexer;
|
7
|
+
const scheduleIndexingService = strapi.plugins['elasticsearch'].services.scheduleIndexing;
|
8
|
+
const rebuildIndex = async (ctx) => {
|
9
|
+
return await indexer.rebuildIndex();
|
10
|
+
}
|
11
|
+
|
12
|
+
const indexCollection = async (ctx) => {
|
13
|
+
if (ctx.params.collectionname)
|
14
|
+
return await scheduleIndexingService.addCollectionToIndex({collectionUid: ctx.params.collectionname})
|
15
|
+
else
|
16
|
+
return null;
|
17
|
+
}
|
18
|
+
|
19
|
+
const triggerIndexingTask = async (ctx) => {
|
20
|
+
return await indexer.indexPendingData()
|
21
|
+
}
|
22
|
+
|
23
|
+
return {
|
24
|
+
rebuildIndex,
|
25
|
+
indexCollection,
|
26
|
+
triggerIndexingTask
|
27
|
+
};
|
28
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const qs = require('qs');
|
4
|
+
|
5
|
+
module.exports = {
|
6
|
+
search : async (ctx) => {
|
7
|
+
try {
|
8
|
+
const esInterface = strapi.plugins['elasticsearch'].services.esInterface;
|
9
|
+
if (ctx.query.query)
|
10
|
+
{
|
11
|
+
const query = qs.parse(ctx.query.query);
|
12
|
+
const resp = await esInterface.searchData(query);
|
13
|
+
if (resp?.hits?.hits)
|
14
|
+
{
|
15
|
+
const filteredData = resp.hits.hits.filter(dt => dt._source !== null);
|
16
|
+
const filteredMatches = filteredData.map((dt) => dt['_source']);
|
17
|
+
ctx.body = filteredMatches;
|
18
|
+
}
|
19
|
+
else
|
20
|
+
ctx.body = {}
|
21
|
+
}
|
22
|
+
else
|
23
|
+
ctx.body = {}
|
24
|
+
} catch (err) {
|
25
|
+
ctx.response.status = 500;
|
26
|
+
ctx.body = "An error was encountered while processing the search request."
|
27
|
+
console.log('An error was encountered while processing the search request.')
|
28
|
+
console.log(err);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
};
|
@@ -0,0 +1,14 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
module.exports = ({ strapi }) => {
|
6
|
+
const helperService = strapi.plugins['elasticsearch'].services.helper;
|
7
|
+
const getElasticsearchInfo = async (ctx) => {
|
8
|
+
return helperService.getElasticsearchInfo();
|
9
|
+
}
|
10
|
+
|
11
|
+
return {
|
12
|
+
getElasticsearchInfo,
|
13
|
+
};
|
14
|
+
}
|
package/server/index.js
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const register = require('./register');
|
4
|
+
const bootstrap = require('./bootstrap');
|
5
|
+
const destroy = require('./destroy');
|
6
|
+
const config = require('./config');
|
7
|
+
const contentTypes = require('./content-types');
|
8
|
+
const controllers = require('./controllers');
|
9
|
+
const routes = require('./routes');
|
10
|
+
const middlewares = require('./middlewares');
|
11
|
+
const policies = require('./policies');
|
12
|
+
const services = require('./services');
|
13
|
+
|
14
|
+
module.exports = {
|
15
|
+
register,
|
16
|
+
bootstrap,
|
17
|
+
destroy,
|
18
|
+
config,
|
19
|
+
controllers,
|
20
|
+
routes,
|
21
|
+
services,
|
22
|
+
contentTypes,
|
23
|
+
policies,
|
24
|
+
middlewares,
|
25
|
+
};
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module.exports = {
|
2
|
+
// accessible only from admin UI
|
3
|
+
type: 'admin',
|
4
|
+
routes: [
|
5
|
+
{
|
6
|
+
method: 'GET',
|
7
|
+
path: '/content-config',
|
8
|
+
handler: 'configureIndexing.getContentConfig',
|
9
|
+
config: { policies: [] },
|
10
|
+
},
|
11
|
+
{
|
12
|
+
method: 'GET',
|
13
|
+
path: '/collection-config/:collectionname',
|
14
|
+
handler: 'configureIndexing.getCollectionConfig',
|
15
|
+
config: { policies: [] },
|
16
|
+
},
|
17
|
+
{
|
18
|
+
method: 'POST',
|
19
|
+
path: '/collection-config/:collectionname',
|
20
|
+
handler: 'configureIndexing.saveCollectionConfig',
|
21
|
+
config: { policies: [] },
|
22
|
+
},
|
23
|
+
{
|
24
|
+
method: 'POST',
|
25
|
+
path: '/content-config',
|
26
|
+
handler: 'configureIndexing.setContentConfig',
|
27
|
+
config: { policies: [] },
|
28
|
+
},
|
29
|
+
{
|
30
|
+
method: 'GET',
|
31
|
+
path: '/export-content-config',
|
32
|
+
handler: 'configureIndexing.exportContentConfig',
|
33
|
+
config: { policies: [] },
|
34
|
+
},
|
35
|
+
{
|
36
|
+
method: 'POST',
|
37
|
+
path: '/import-content-config',
|
38
|
+
handler: 'configureIndexing.importContentConfig',
|
39
|
+
config: { policies: [] },
|
40
|
+
},
|
41
|
+
],
|
42
|
+
};
|
@@ -0,0 +1,13 @@
|
|
1
|
+
const configureIndexingRoutes = require('./configure-indexing');
|
2
|
+
const performSearch = require('./perform-search');
|
3
|
+
const runLog = require('./run-log');
|
4
|
+
const setupInfo = require('./setup-info');
|
5
|
+
const performIndexing = require('./perform-indexing');
|
6
|
+
|
7
|
+
module.exports = {
|
8
|
+
config: configureIndexingRoutes,
|
9
|
+
search: performSearch,
|
10
|
+
runLog: runLog,
|
11
|
+
setupInfo: setupInfo,
|
12
|
+
performIndexing: performIndexing
|
13
|
+
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module.exports = {
|
2
|
+
// accessible only from admin UI
|
3
|
+
type: 'admin',
|
4
|
+
routes: [
|
5
|
+
{
|
6
|
+
method: 'GET',
|
7
|
+
path: '/reindex',
|
8
|
+
handler: 'performIndexing.rebuildIndex',
|
9
|
+
config: { policies: [] },
|
10
|
+
},
|
11
|
+
{
|
12
|
+
method: 'GET',
|
13
|
+
path: '/collection-reindex/:collectionname',
|
14
|
+
handler: 'performIndexing.indexCollection',
|
15
|
+
config: { policies: [] },
|
16
|
+
},
|
17
|
+
{
|
18
|
+
method: 'GET',
|
19
|
+
path: '/trigger-indexing/',
|
20
|
+
handler: 'performIndexing.triggerIndexingTask',
|
21
|
+
config: { policies: [] },
|
22
|
+
},
|
23
|
+
],
|
24
|
+
};
|
@@ -0,0 +1,184 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const getPluginStore = () => {
|
4
|
+
return strapi.store({
|
5
|
+
environment: '',
|
6
|
+
type: 'plugin',
|
7
|
+
name: 'elasticsearch',
|
8
|
+
});
|
9
|
+
}
|
10
|
+
|
11
|
+
module.exports = ({ strapi }) => ({
|
12
|
+
async initializeStrapiElasticsearch() {
|
13
|
+
await this.cacheConfig();
|
14
|
+
},
|
15
|
+
async markInitialized() {
|
16
|
+
if (!strapi.elasticsearch)
|
17
|
+
strapi.elasticsearch = {}
|
18
|
+
strapi.elasticsearch.initialized = true;
|
19
|
+
},
|
20
|
+
isInitialized() {
|
21
|
+
return strapi.elasticsearch?.initialized || false
|
22
|
+
},
|
23
|
+
async cacheConfig() {
|
24
|
+
if (!strapi.elasticsearch)
|
25
|
+
strapi.elasticsearch = {}
|
26
|
+
strapi.elasticsearch.collectionsconfig = await this.getCollectionsConfiguredForIndexing();
|
27
|
+
strapi.elasticsearch.collections = await this.getCollectionsConfiguredForIndexing();
|
28
|
+
},
|
29
|
+
async getCollectionConfig({collectionName}) {
|
30
|
+
const contentConfig = await this.getContentConfig();
|
31
|
+
if (Object.keys(contentConfig).includes(collectionName))
|
32
|
+
{
|
33
|
+
const ob = {}
|
34
|
+
ob[collectionName] = contentConfig[collectionName];
|
35
|
+
return ob;
|
36
|
+
}
|
37
|
+
else
|
38
|
+
return null;
|
39
|
+
},
|
40
|
+
async getCollectionsConfiguredForIndexing() {
|
41
|
+
const contentConfig = await this.getContentConfig();
|
42
|
+
if (contentConfig)
|
43
|
+
return Object.keys(contentConfig).filter((i) => {
|
44
|
+
let hasAtleastOneIndexableAttribute = false;
|
45
|
+
const attribs = Object.keys(contentConfig[i])
|
46
|
+
for (let k=0; k<attribs.length; k++)
|
47
|
+
{
|
48
|
+
if (contentConfig[i][attribs[k]]['index'] === true)
|
49
|
+
{
|
50
|
+
hasAtleastOneIndexableAttribute = true;
|
51
|
+
break;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
return hasAtleastOneIndexableAttribute;
|
55
|
+
})
|
56
|
+
else
|
57
|
+
return [];
|
58
|
+
},
|
59
|
+
async isCollectionConfiguredToBeIndexed({collectionName}) {
|
60
|
+
const collectionsToIndex = await this.getCollectionsConfiguredForIndexing();
|
61
|
+
return collectionsToIndex.includes(collectionName);
|
62
|
+
},
|
63
|
+
async getContentConfig() {
|
64
|
+
const fieldsToExclude = ['createdAt', 'createdBy', 'publishedAt', 'publishedBy', 'updatedAt', 'updatedBy']
|
65
|
+
const pluginStore = getPluginStore();
|
66
|
+
const settings = await pluginStore.get({ key: 'configsettings' });
|
67
|
+
const contentTypes = strapi.contentTypes;
|
68
|
+
const apiContentTypes = Object.keys(contentTypes).filter((c) => c.includes('api::'));
|
69
|
+
const apiContentConfig = {};
|
70
|
+
for (let r = 0; r < apiContentTypes.length; r++)
|
71
|
+
{
|
72
|
+
apiContentConfig[apiContentTypes[r]] = {};
|
73
|
+
const collectionAttributes = contentTypes[apiContentTypes[r]].attributes
|
74
|
+
const listOfAttributes = Object.keys(collectionAttributes).filter(
|
75
|
+
(i) => fieldsToExclude.includes(i) === false
|
76
|
+
);
|
77
|
+
|
78
|
+
for (let k = 0; k < listOfAttributes.length; k++)
|
79
|
+
{
|
80
|
+
const currentAttribute = listOfAttributes[k];
|
81
|
+
let attributeType = "regular";
|
82
|
+
if (typeof collectionAttributes[currentAttribute]["type"] !== "undefined"
|
83
|
+
&& collectionAttributes[currentAttribute]["type"] !== null)
|
84
|
+
{
|
85
|
+
if (collectionAttributes[currentAttribute]["type"] === "component")
|
86
|
+
attributeType = "component"
|
87
|
+
else if (collectionAttributes[currentAttribute]["type"] === "dynamiczone")
|
88
|
+
attributeType = "dynamiczone"
|
89
|
+
}
|
90
|
+
apiContentConfig[apiContentTypes[r]][listOfAttributes[k]] = {index: false,
|
91
|
+
type: attributeType}
|
92
|
+
}
|
93
|
+
|
94
|
+
}
|
95
|
+
if (settings)
|
96
|
+
{
|
97
|
+
const objSettings = JSON.parse(settings);
|
98
|
+
if (Object.keys(objSettings).includes('contentConfig'))
|
99
|
+
{
|
100
|
+
const collections = Object.keys(apiContentConfig);
|
101
|
+
for (let r=0; r< collections.length; r++)
|
102
|
+
{
|
103
|
+
if (Object.keys(objSettings['contentConfig']).includes(collections[r]))
|
104
|
+
{
|
105
|
+
const attribsForCollection = Object.keys(apiContentConfig[collections[r]])
|
106
|
+
for (let s = 0; s < attribsForCollection.length; s++)
|
107
|
+
{
|
108
|
+
if (!Object.keys(objSettings['contentConfig'][collections[r]]).includes(attribsForCollection[s]))
|
109
|
+
{
|
110
|
+
objSettings['contentConfig'][collections[r]][attribsForCollection[s]] = {index: false,
|
111
|
+
type: apiContentConfig[collections[r]][attribsForCollection[s]].type}
|
112
|
+
}
|
113
|
+
else
|
114
|
+
{
|
115
|
+
if (!Object.keys(objSettings['contentConfig'][collections[r]][attribsForCollection[s]]).includes('type'))
|
116
|
+
objSettings['contentConfig'][collections[r]][attribsForCollection[s]]['type'] = apiContentConfig[collections[r]][attribsForCollection[s]].type
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
120
|
+
else
|
121
|
+
objSettings['contentConfig'][collections[r]] = apiContentConfig[collections[r]]
|
122
|
+
}
|
123
|
+
return objSettings['contentConfig'];
|
124
|
+
}
|
125
|
+
else
|
126
|
+
return apiContentConfig
|
127
|
+
}
|
128
|
+
else
|
129
|
+
return apiContentConfig;
|
130
|
+
},
|
131
|
+
async importContentConfig({config}){
|
132
|
+
const pluginStore = getPluginStore();
|
133
|
+
const settings = await pluginStore.get({ key: 'configsettings' });
|
134
|
+
if (settings)
|
135
|
+
{
|
136
|
+
const objSettings = JSON.parse(settings);
|
137
|
+
objSettings['contentConfig'] = JSON.parse(config)
|
138
|
+
const stringifySettings = JSON.stringify(objSettings);
|
139
|
+
await pluginStore.set({ key: 'configsettings', value : stringifySettings });
|
140
|
+
}
|
141
|
+
else
|
142
|
+
{
|
143
|
+
const newSettings = JSON.stringify({'contentConfig' : config})
|
144
|
+
await pluginStore.set({ key: 'configsettings', value : newSettings});
|
145
|
+
}
|
146
|
+
const updatedSettings = await pluginStore.get({ key: 'configsettings' });
|
147
|
+
await this.cacheConfig();
|
148
|
+
if (updatedSettings && Object.keys(updatedSettings).includes('contentConfig'))
|
149
|
+
return updatedSettings['contentConfig']
|
150
|
+
else
|
151
|
+
return {};
|
152
|
+
},
|
153
|
+
async setContentConfig({collection, config}){
|
154
|
+
const pluginStore = getPluginStore();
|
155
|
+
const settings = await pluginStore.get({ key: 'configsettings' });
|
156
|
+
if (settings)
|
157
|
+
{
|
158
|
+
const objSettings = JSON.parse(settings);
|
159
|
+
if (Object.keys(objSettings).includes('contentConfig'))
|
160
|
+
{
|
161
|
+
const prevConfig = objSettings['contentConfig'];
|
162
|
+
const changedConfigKey = Object.keys(config)[0];
|
163
|
+
const newConfig = prevConfig;
|
164
|
+
newConfig[changedConfigKey] = config[changedConfigKey]
|
165
|
+
objSettings['contentConfig'] = newConfig
|
166
|
+
}
|
167
|
+
else
|
168
|
+
objSettings['contentConfig'] = config;
|
169
|
+
const stringifySettings = JSON.stringify(objSettings);
|
170
|
+
await pluginStore.set({ key: 'configsettings', value : stringifySettings });
|
171
|
+
}
|
172
|
+
else
|
173
|
+
{
|
174
|
+
const newSettings = JSON.stringify({'contentConfig' : config})
|
175
|
+
await pluginStore.set({ key: 'configsettings', value : newSettings});
|
176
|
+
}
|
177
|
+
const updatedSettings = await pluginStore.get({ key: 'configsettings' });
|
178
|
+
await this.cacheConfig();
|
179
|
+
if (updatedSettings && Object.keys(updatedSettings).includes('contentConfig'))
|
180
|
+
return updatedSettings['contentConfig']
|
181
|
+
else
|
182
|
+
return {};
|
183
|
+
},
|
184
|
+
});
|