analytics.mjs 1.5 KB

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