feat: complate database & web

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2020-06-20 16:39:03 +08:00
parent 842335edbe
commit bf3638dda0
15 changed files with 201 additions and 56 deletions

View File

@ -34,12 +34,32 @@ export class CommandMap {
}
let exists = this.commands[command]
if (exists) {
return exists.executor(sender, '', command, Java.to(args))
try {
return exists.executor(sender, '', command, Java.to(args))
} catch (error) {
console.ex(error)
}
return true
} else {
sender.sendMessage && sender.sendMessage(`Unknown command. Type "/help" for help.`)
return false
}
}
tabComplate(sender: any, input: string, index?: number): string[] {
if (index == 0) { return Object.keys(this.commands) }
let [command, ...args] = input.split(' ')
let exists = this.commands[command]
if (exists && exists.tabCompleter) {
try {
if (args.length !== index) { args.push('') }
return exists.tabCompleter(sender, '', command, Java.to(args))
} catch (error) {
console.ex(error)
}
}
return []
}
}
export class SpringCommand {

View File

@ -0,0 +1,32 @@
import { plugin, database } from '@ccms/api'
import { DataBaseManager } from '@ccms/database'
import { provideSingleton, inject } from '@ccms/container'
import * as fs from '@ccms/common/dist/fs'
@provideSingleton(plugin.PluginScanner)
export class MySQLScanner implements plugin.PluginScanner {
type: string = "mysql"
private target: string
@inject(database.DataBaseManager)
private databaseManager: DataBaseManager
scan(target: any): string[] {
this.target = target
let plugins = this.databaseManager.getMainDatabase().query<{ name: string }>(`SELECT name FROM ${this.target} WHERE LENGTH(source) != 0 AND deleted = 0`)
return plugins.map(p => `mysql:${p.name}`)
}
load(target: any) {
if (typeof target !== "string" || !target.startsWith('mysql:')) { return }
let name = target.split("mysql:")[1]
if (!name) { console.warn(`[PluginScanner][mysql] plugin name can't be null!`); return }
var plugin: any = this.databaseManager.getMainDatabase().query<{ source: string }>(`SELECT source FROM ${this.target} WHERE name = ? AND deleted = 0`, name)
if (plugin.length == 0) { console.warn(`[PluginScanner][mysql] plugin ${target} not found at mysql database...`); return }
let temp = fs.concat(root, 'mysql-plugin-cache', target, `${plugin[0]}.js`)
base.save(temp, plugin[0].source)
//@ts-ignore
return require(temp, { cache: false })
}
}