mirror of https://github.com/Requarks/wiki.git
8 changed files with 139 additions and 14 deletions
Unified View
Diff Options
-
39client/components/admin/admin-locale.vue
-
12client/graph/admin-locale-mutation-download.gql
-
3server/app/data.yml
-
10server/core/queue.js
-
17server/graph/resolvers/localization.js
-
4server/graph/schemas/localization.graphql
-
57server/jobs/fetch-graph-locale.js
-
11server/jobs/sync-graph-locales.js
@ -0,0 +1,12 @@ |
|||||
|
mutation($locale: String!) { |
||||
|
localization { |
||||
|
downloadLocale(locale: $locale) { |
||||
|
responseResult { |
||||
|
succeeded |
||||
|
errorCode |
||||
|
slug |
||||
|
message |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,57 @@ |
|||||
|
require('../core/worker') |
||||
|
const _ = require('lodash') |
||||
|
const { createApolloFetch } = require('apollo-fetch') |
||||
|
|
||||
|
/* global WIKI */ |
||||
|
|
||||
|
WIKI.redis = require('../core/redis').init() |
||||
|
WIKI.db = require('../core/db').init() |
||||
|
|
||||
|
const apollo = createApolloFetch({ |
||||
|
uri: 'https://graph.requarks.io' |
||||
|
}) |
||||
|
|
||||
|
module.exports = async (job) => { |
||||
|
WIKI.logger.info(`Fetching locale ${job.data.locale} from Graph endpoint...`) |
||||
|
|
||||
|
try { |
||||
|
const respStrings = await apollo({ |
||||
|
query: `query ($code: String!) {
|
||||
|
localization { |
||||
|
strings(code: $code) { |
||||
|
key |
||||
|
value |
||||
|
} |
||||
|
} |
||||
|
}`,
|
||||
|
variables: { |
||||
|
code: job.data.locale |
||||
|
} |
||||
|
}) |
||||
|
const strings = _.get(respStrings, 'data.localization.strings', []) |
||||
|
let lcObj = {} |
||||
|
_.forEach(strings, row => { |
||||
|
if (_.includes(row.key, '::')) { return } |
||||
|
_.set(lcObj, row.key.replace(':', '.'), row.value) |
||||
|
}) |
||||
|
|
||||
|
const locales = await WIKI.redis.get('locales') |
||||
|
if (locales) { |
||||
|
const currentLocale = _.find(JSON.parse(locales), ['code', job.data.locale]) || {} |
||||
|
await WIKI.db.Locale.upsert({ |
||||
|
code: job.data.locale, |
||||
|
strings: lcObj, |
||||
|
isRTL: currentLocale.isRTL, |
||||
|
name: currentLocale.name, |
||||
|
nativeName: currentLocale.nativeName |
||||
|
}) |
||||
|
} else { |
||||
|
throw new Error('Failed to fetch cached locales list! Restart server to resolve this issue.') |
||||
|
} |
||||
|
|
||||
|
WIKI.logger.info(`Fetching locale ${job.data.locale} from Graph endpoint: [ COMPLETED ]`) |
||||
|
} catch (err) { |
||||
|
WIKI.logger.error(`Fetching locale ${job.data.locale} from Graph endpoint: [ FAILED ]`) |
||||
|
WIKI.logger.error(err.message) |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save