analytics.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const _ = require('lodash')
  2. const graphHelper = require('../../helpers/graph')
  3. /* global WIKI */
  4. module.exports = {
  5. Query: {
  6. async analyticsProviders(obj, args, context, info) {
  7. let providers = await WIKI.models.analytics.getProviders(args.isEnabled)
  8. providers = providers.map(stg => {
  9. const providerInfo = _.find(WIKI.data.analytics, ['key', stg.key]) || {}
  10. return {
  11. ...providerInfo,
  12. ...stg,
  13. config: _.sortBy(_.transform(stg.config, (res, value, key) => {
  14. const configData = _.get(providerInfo.props, key, {})
  15. res.push({
  16. key,
  17. value: JSON.stringify({
  18. ...configData,
  19. value
  20. })
  21. })
  22. }, []), 'key')
  23. }
  24. })
  25. return providers
  26. }
  27. },
  28. Mutation: {
  29. async updateAnalyticsProviders(obj, args, context) {
  30. try {
  31. for (let str of args.providers) {
  32. await WIKI.models.analytics.query().patch({
  33. isEnabled: str.isEnabled,
  34. config: _.reduce(str.config, (result, value, key) => {
  35. _.set(result, `${value.key}`, _.get(JSON.parse(value.value), 'v', null))
  36. return result
  37. }, {})
  38. }).where('key', str.key)
  39. await WIKI.cache.del('analytics')
  40. }
  41. return {
  42. responseResult: graphHelper.generateSuccess('Providers updated successfully')
  43. }
  44. } catch (err) {
  45. return graphHelper.generateError(err)
  46. }
  47. }
  48. }
  49. }