123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- const Model = require('objection').Model
- const crypto = require('crypto')
- const pem2jwk = require('pem-jwk').pem2jwk
- const _ = require('lodash')
- /* global WIKI */
- /**
- * Site model
- */
- module.exports = class Site extends Model {
- static get tableName () { return 'sites' }
- static get jsonSchema () {
- return {
- type: 'object',
- required: ['hostname'],
- properties: {
- id: { type: 'string' },
- hostname: { type: 'string' },
- isEnabled: { type: 'boolean', default: false }
- }
- }
- }
- static get jsonAttributes () {
- return ['config']
- }
- static async createSite (hostname, config) {
- const newSite = await WIKI.models.sites.query().insertAndFetch({
- hostname,
- isEnabled: true,
- config: _.defaultsDeep(config, {
- title: 'My Wiki Site',
- description: '',
- company: '',
- contentLicense: '',
- defaults: {
- timezone: 'America/New_York',
- dateFormat: 'YYYY-MM-DD',
- timeFormat: '12h'
- },
- features: {
- ratings: false,
- ratingsMode: 'off',
- comments: false,
- contributions: false,
- profile: true,
- search: true
- },
- logoUrl: '',
- logoText: true,
- robots: {
- index: true,
- follow: true
- },
- locale: 'en',
- localeNamespacing: false,
- localeNamespaces: [],
- theme: {
- dark: false,
- colorPrimary: '#1976d2',
- colorSecondary: '#02c39a',
- colorAccent: '#f03a47',
- colorHeader: '#000000',
- colorSidebar: '#1976d2',
- injectCSS: '',
- injectHead: '',
- injectBody: '',
- sidebarPosition: 'left',
- tocPosition: 'right',
- showSharingMenu: true,
- showPrintBtn: true
- }
- })
- })
- await WIKI.models.storage.query().insert({
- module: 'db',
- siteId: newSite.id,
- isEnabled: true,
- contentTypes: {
- activeTypes: ['pages', 'images', 'documents', 'others', 'large'],
- largeThreshold: '5MB'
- },
- assetDelivery: {
- streaming: true,
- directAccess: false
- },
- state: {
- current: 'ok'
- }
- })
- return newSite
- }
- static async updateSite (id, patch) {
- return WIKI.models.sites.query().findById(id).patch(patch)
- }
- static async deleteSite (id) {
- await WIKI.models.storage.query().delete().where('siteId', id)
- return WIKI.models.sites.query().deleteById(id)
- }
- }
|