123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const Model = require('objection').Model
- /* global WIKI */
- /**
- * Locales model
- */
- module.exports = class Locale extends Model {
- static get tableName() { return 'locales' }
- static get idColumn() { return 'code' }
- static get jsonSchema () {
- return {
- type: 'object',
- required: ['code', 'name'],
- properties: {
- code: {type: 'string'},
- isRTL: {type: 'boolean', default: false},
- name: {type: 'string'},
- nativeName: {type: 'string'},
- createdAt: {type: 'string'},
- updatedAt: {type: 'string'},
- availability: {type: 'integer'}
- }
- }
- }
- static get jsonAttributes() {
- return ['strings']
- }
- $beforeUpdate() {
- this.updatedAt = new Date().toISOString()
- }
- $beforeInsert() {
- this.createdAt = new Date().toISOString()
- this.updatedAt = new Date().toISOString()
- }
- static async getNavLocales({ cache = false } = {}) {
- if (!WIKI.config.lang.namespacing) {
- return []
- }
- if (cache) {
- const navLocalesCached = await WIKI.cache.get('nav:locales')
- if (navLocalesCached) {
- return navLocalesCached
- }
- }
- const navLocales = await WIKI.models.locales.query().select('code', 'nativeName AS name').whereIn('code', WIKI.config.lang.namespaces).orderBy('code')
- if (navLocales) {
- if (cache) {
- await WIKI.cache.set('nav:locales', navLocales, 300)
- }
- return navLocales
- } else {
- WIKI.logger.warn('Site Locales for navigation are missing or corrupted.')
- return []
- }
- }
- }
|