feat: core improvements + local fs provider + UI fixes

This commit is contained in:
NGPixel
2018-07-29 22:23:33 -04:00
parent 803d86ff63
commit 2817c72ec3
65 changed files with 482 additions and 264 deletions

View File

@@ -16,7 +16,7 @@ module.exports = {
},
AuthenticationQuery: {
async strategies(obj, args, context, info) {
let strategies = await WIKI.db.authentication.getStrategies()
let strategies = await WIKI.models.authentication.getStrategies()
strategies = strategies.map(stg => ({
...stg,
config: _.sortBy(_.transform(stg.config, (res, value, key) => {
@@ -31,7 +31,7 @@ module.exports = {
AuthenticationMutation: {
async login(obj, args, context) {
try {
let authResult = await WIKI.db.users.login(args, context)
let authResult = await WIKI.models.users.login(args, context)
return {
...authResult,
responseResult: graphHelper.generateSuccess('Login success')
@@ -42,7 +42,7 @@ module.exports = {
},
async loginTFA(obj, args, context) {
try {
let authResult = await WIKI.db.users.loginTFA(args, context)
let authResult = await WIKI.models.users.loginTFA(args, context)
return {
...authResult,
responseResult: graphHelper.generateSuccess('TFA success')
@@ -54,7 +54,7 @@ module.exports = {
async updateStrategies(obj, args, context) {
try {
for (let str of args.strategies) {
await WIKI.db.authentication.query().patch({
await WIKI.models.authentication.query().patch({
isEnabled: str.isEnabled,
config: _.reduce(str.config, (result, value, key) => {
_.set(result, `${value.key}.value`, value.value)

View File

@@ -4,19 +4,19 @@
module.exports = {
Query: {
comments(obj, args, context, info) {
return WIKI.db.Comment.findAll({ where: args })
return WIKI.models.Comment.findAll({ where: args })
}
},
Mutation: {
createComment(obj, args) {
return WIKI.db.Comment.create({
return WIKI.models.Comment.create({
content: args.content,
author: args.userId,
document: args.documentId
})
},
deleteComment(obj, args) {
return WIKI.db.Comment.destroy({
return WIKI.models.Comment.destroy({
where: {
id: args.id
},
@@ -24,7 +24,7 @@ module.exports = {
})
},
modifyComment(obj, args) {
return WIKI.db.Comment.update({
return WIKI.models.Comment.update({
content: args.content
}, {
where: { id: args.id }

View File

@@ -4,15 +4,15 @@
module.exports = {
Query: {
documents(obj, args, context, info) {
return WIKI.db.Document.findAll({ where: args })
return WIKI.models.Document.findAll({ where: args })
}
},
Mutation: {
createDocument(obj, args) {
return WIKI.db.Document.create(args)
return WIKI.models.Document.create(args)
},
deleteDocument(obj, args) {
return WIKI.db.Document.destroy({
return WIKI.models.Document.destroy({
where: {
id: args.id
},
@@ -20,7 +20,7 @@ module.exports = {
})
},
modifyDocument(obj, args) {
return WIKI.db.Document.update({
return WIKI.models.Document.update({
title: args.title,
subtitle: args.subtitle
}, {
@@ -28,7 +28,7 @@ module.exports = {
})
},
moveDocument(obj, args) {
return WIKI.db.Document.update({
return WIKI.models.Document.update({
path: args.path
}, {
where: { id: args.id }

View File

@@ -6,16 +6,16 @@ const gql = require('graphql')
module.exports = {
Query: {
files(obj, args, context, info) {
return WIKI.db.File.findAll({ where: args })
return WIKI.models.File.findAll({ where: args })
}
},
Mutation: {
uploadFile(obj, args) {
// todo
return WIKI.db.File.create(args)
return WIKI.models.File.create(args)
},
deleteFile(obj, args) {
return WIKI.db.File.destroy({
return WIKI.models.File.destroy({
where: {
id: args.id
},
@@ -23,18 +23,18 @@ module.exports = {
})
},
renameFile(obj, args) {
return WIKI.db.File.update({
return WIKI.models.File.update({
filename: args.filename
}, {
where: { id: args.id }
})
},
moveFile(obj, args) {
return WIKI.db.File.findById(args.fileId).then(fl => {
return WIKI.models.File.findById(args.fileId).then(fl => {
if (!fl) {
throw new gql.GraphQLError('Invalid File ID')
}
return WIKI.db.Folder.findById(args.folderId).then(fld => {
return WIKI.models.Folder.findById(args.folderId).then(fld => {
if (!fld) {
throw new gql.GraphQLError('Invalid Folder ID')
}

View File

@@ -4,15 +4,15 @@
module.exports = {
Query: {
folders(obj, args, context, info) {
return WIKI.db.Folder.findAll({ where: args })
return WIKI.models.Folder.findAll({ where: args })
}
},
Mutation: {
createFolder(obj, args) {
return WIKI.db.Folder.create(args)
return WIKI.models.Folder.create(args)
},
deleteFolder(obj, args) {
return WIKI.db.Folder.destroy({
return WIKI.models.Folder.destroy({
where: {
id: args.id
},
@@ -20,7 +20,7 @@ module.exports = {
})
},
renameFolder(obj, args) {
return WIKI.db.Folder.update({
return WIKI.models.Folder.update({
name: args.name
}, {
where: { id: args.id }

View File

@@ -13,22 +13,22 @@ module.exports = {
},
GroupQuery: {
async list(obj, args, context, info) {
return WIKI.db.groups.query().select(
return WIKI.models.groups.query().select(
'groups.*',
WIKI.db.groups.relatedQuery('users').count().as('userCount')
WIKI.models.groups.relatedQuery('users').count().as('userCount')
)
},
async single(obj, args, context, info) {
return WIKI.db.groups.query().findById(args.id)
return WIKI.models.groups.query().findById(args.id)
}
},
GroupMutation: {
async assignUser(obj, args) {
const grp = await WIKI.db.groups.query().findById(args.groupId)
const grp = await WIKI.models.groups.query().findById(args.groupId)
if (!grp) {
throw new gql.GraphQLError('Invalid Group ID')
}
const usr = await WIKI.db.users.query().findById(args.userId)
const usr = await WIKI.models.users.query().findById(args.userId)
if (!usr) {
throw new gql.GraphQLError('Invalid User ID')
}
@@ -38,7 +38,7 @@ module.exports = {
}
},
async create(obj, args) {
const group = await WIKI.db.groups.query().insertAndFetch({
const group = await WIKI.models.groups.query().insertAndFetch({
name: args.name
})
return {
@@ -47,17 +47,17 @@ module.exports = {
}
},
async delete(obj, args) {
await WIKI.db.groups.query().deleteById(args.id)
await WIKI.models.groups.query().deleteById(args.id)
return {
responseResult: graphHelper.generateSuccess('Group has been deleted.')
}
},
async unassignUser(obj, args) {
const grp = await WIKI.db.groups.query().findById(args.groupId)
const grp = await WIKI.models.groups.query().findById(args.groupId)
if (!grp) {
throw new gql.GraphQLError('Invalid Group ID')
}
const usr = await WIKI.db.users.query().findById(args.userId)
const usr = await WIKI.models.users.query().findById(args.userId)
if (!usr) {
throw new gql.GraphQLError('Invalid User ID')
}
@@ -67,7 +67,7 @@ module.exports = {
}
},
async update(obj, args) {
await WIKI.db.groups.query().patch({ name: args.name }).where('id', args.id)
await WIKI.models.groups.query().patch({ name: args.name }).where('id', args.id)
return {
responseResult: graphHelper.generateSuccess('Group has been updated.')
}

View File

@@ -13,7 +13,7 @@ module.exports = {
LocalizationQuery: {
async locales(obj, args, context, info) {
let remoteLocales = await WIKI.redis.get('locales')
let localLocales = await WIKI.db.locales.query().select('id', 'code', 'isRTL', 'name', 'nativeName', 'createdAt', 'updatedAt')
let localLocales = await WIKI.models.locales.query().select('id', 'code', 'isRTL', 'name', 'nativeName', 'createdAt', 'updatedAt')
remoteLocales = (remoteLocales) ? JSON.parse(remoteLocales) : localLocales
return _.map(remoteLocales, rl => {
let isInstalled = _.some(localLocales, ['code', rl.code])

View File

@@ -11,18 +11,18 @@ module.exports = {
},
PageQuery: {
async list(obj, args, context, info) {
return WIKI.db.pages.query().select(
return WIKI.models.pages.query().select(
'pages.*',
WIKI.db.pages.relatedQuery('users').count().as('userCount')
WIKI.models.pages.relatedQuery('users').count().as('userCount')
)
},
async single(obj, args, context, info) {
return WIKI.db.pages.query().findById(args.id)
return WIKI.models.pages.query().findById(args.id)
}
},
PageMutation: {
async create(obj, args, context) {
const page = await WIKI.db.pages.createPage({
const page = await WIKI.models.pages.createPage({
...args,
authorId: context.req.user.id
})
@@ -32,13 +32,13 @@ module.exports = {
}
},
async delete(obj, args) {
await WIKI.db.groups.query().deleteById(args.id)
await WIKI.models.groups.query().deleteById(args.id)
return {
responseResult: graphHelper.generateSuccess('Page has been deleted.')
}
},
async update(obj, args, context) {
const page = await WIKI.db.pages.updatePage({
const page = await WIKI.models.pages.updatePage({
...args,
authorId: context.req.user.id
})

View File

@@ -6,16 +6,16 @@ const gql = require('graphql')
module.exports = {
Query: {
rights(obj, args, context, info) {
return WIKI.db.Right.findAll({ where: args })
return WIKI.models.Right.findAll({ where: args })
}
},
Mutation: {
addRightToGroup(obj, args) {
return WIKI.db.Group.findById(args.groupId).then(grp => {
return WIKI.models.Group.findById(args.groupId).then(grp => {
if (!grp) {
throw new gql.GraphQLError('Invalid Group ID')
}
return WIKI.db.Right.create({
return WIKI.models.Right.create({
path: args.path,
role: args.role,
exact: args.exact,
@@ -25,7 +25,7 @@ module.exports = {
})
},
removeRightFromGroup(obj, args) {
return WIKI.db.Right.destroy({
return WIKI.models.Right.destroy({
where: {
id: args.rightId
},
@@ -33,7 +33,7 @@ module.exports = {
})
},
modifyRight(obj, args) {
return WIKI.db.Right.update({
return WIKI.models.Right.update({
path: args.path,
role: args.role,
exact: args.exact,

View File

@@ -6,7 +6,7 @@ const _ = require('lodash')
module.exports = {
Query: {
settings(obj, args, context, info) {
return WIKI.db.Setting.findAll({ where: args, raw: true }).then(entries => {
return WIKI.models.Setting.findAll({ where: args, raw: true }).then(entries => {
return _.map(entries, entry => {
entry.config = JSON.stringify(entry.config)
return entry
@@ -16,7 +16,7 @@ module.exports = {
},
Mutation: {
setConfigEntry(obj, args) {
return WIKI.db.Setting.update({
return WIKI.models.Setting.update({
value: args.value
}, { where: { key: args.key } })
}

View File

@@ -12,13 +12,24 @@ module.exports = {
},
StorageQuery: {
async targets(obj, args, context, info) {
let targets = await WIKI.db.storage.getTargets()
targets = targets.map(tgt => ({
...tgt,
config: _.sortBy(_.transform(tgt.config, (res, value, key) => {
res.push({ key, value: JSON.stringify(value) })
}, []), 'key')
}))
let targets = await WIKI.models.storage.getTargets()
targets = targets.map(tgt => {
const targetInfo = _.find(WIKI.data.storage, ['key', tgt.key]) || {}
console.info(targetInfo)
return {
...tgt,
config: _.sortBy(_.transform(tgt.config, (res, value, key) => {
const configData = _.get(targetInfo.props, key, {})
res.push({
key,
value: JSON.stringify({
...configData,
value
})
})
}, []), 'key')
}
})
if (args.filter) { targets = graphHelper.filter(targets, args.filter) }
if (args.orderBy) { targets = graphHelper.orderBy(targets, args.orderBy) }
return targets
@@ -28,11 +39,11 @@ module.exports = {
async updateTargets(obj, args, context) {
try {
for (let tgt of args.targets) {
await WIKI.db.storage.query().patch({
await WIKI.models.storage.query().patch({
isEnabled: tgt.isEnabled,
mode: tgt.mode,
config: _.reduce(tgt.config, (result, value, key) => {
_.set(result, `${value.key}.value`, value.value)
_.set(result, `${value.key}`, value.value)
return result
}, {})
}).where('key', tgt.key)

View File

@@ -33,7 +33,7 @@ module.exports = {
configFile: path.join(process.cwd(), 'config.yml'),
currentVersion: WIKI.version,
dbType: _.get(dbTypes, WIKI.config.db.type, 'Unknown DB'),
dbVersion: _.get(WIKI.db, 'knex.client.version', 'Unknown version'),
dbVersion: _.get(WIKI.models, 'knex.client.version', 'Unknown version'),
dbHost: WIKI.config.db.host,
latestVersion: WIKI.version, // TODO
latestVersionReleaseDate: new Date(), // TODO

View File

@@ -6,16 +6,16 @@ const gql = require('graphql')
module.exports = {
Query: {
tags(obj, args, context, info) {
return WIKI.db.Tag.findAll({ where: args })
return WIKI.models.Tag.findAll({ where: args })
}
},
Mutation: {
assignTagToDocument(obj, args) {
return WIKI.db.Tag.findById(args.tagId).then(tag => {
return WIKI.models.Tag.findById(args.tagId).then(tag => {
if (!tag) {
throw new gql.GraphQLError('Invalid Tag ID')
}
return WIKI.db.Document.findById(args.documentId).then(doc => {
return WIKI.models.Document.findById(args.documentId).then(doc => {
if (!doc) {
throw new gql.GraphQLError('Invalid Document ID')
}
@@ -24,10 +24,10 @@ module.exports = {
})
},
createTag(obj, args) {
return WIKI.db.Tag.create(args)
return WIKI.models.Tag.create(args)
},
deleteTag(obj, args) {
return WIKI.db.Tag.destroy({
return WIKI.models.Tag.destroy({
where: {
id: args.id
},
@@ -35,11 +35,11 @@ module.exports = {
})
},
removeTagFromDocument(obj, args) {
return WIKI.db.Tag.findById(args.tagId).then(tag => {
return WIKI.models.Tag.findById(args.tagId).then(tag => {
if (!tag) {
throw new gql.GraphQLError('Invalid Tag ID')
}
return WIKI.db.Document.findById(args.documentId).then(doc => {
return WIKI.models.Document.findById(args.documentId).then(doc => {
if (!doc) {
throw new gql.GraphQLError('Invalid Document ID')
}
@@ -48,7 +48,7 @@ module.exports = {
})
},
renameTag(obj, args) {
return WIKI.db.Group.update({
return WIKI.models.Group.update({
key: args.key
}, {
where: { id: args.id }

View File

@@ -10,18 +10,18 @@ module.exports = {
},
UserQuery: {
async list(obj, args, context, info) {
return WIKI.db.users.query()
return WIKI.models.users.query()
.select('id', 'email', 'name', 'provider', 'role', 'createdAt', 'updatedAt')
},
async search(obj, args, context, info) {
return WIKI.db.users.query()
return WIKI.models.users.query()
.where('email', 'like', `%${args.query}%`)
.orWhere('name', 'like', `%${args.query}%`)
.limit(10)
.select('id', 'email', 'name', 'provider', 'role', 'createdAt', 'updatedAt')
},
async single(obj, args, context, info) {
let usr = await WIKI.db.users.query().findById(args.id)
let usr = await WIKI.models.users.query().findById(args.id)
usr.password = ''
usr.tfaSecret = ''
return usr
@@ -29,13 +29,13 @@ module.exports = {
},
UserMutation: {
create(obj, args) {
return WIKI.db.users.query().insertAndFetch(args)
return WIKI.models.users.query().insertAndFetch(args)
},
delete(obj, args) {
return WIKI.db.users.query().deleteById(args.id)
return WIKI.models.users.query().deleteById(args.id)
},
update(obj, args) {
return WIKI.db.users.query().patch({
return WIKI.models.users.query().patch({
email: args.email,
name: args.name,
provider: args.provider,