mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-26 15:36:28 +00:00
controllers are all POST
This commit is contained in:
@@ -10,7 +10,7 @@ const { saveFreeTableData } = require('../utility/freeTableStorage');
|
|||||||
const loadFilesRecursive = require('../utility/loadFilesRecursive');
|
const loadFilesRecursive = require('../utility/loadFilesRecursive');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
folders_meta: 'get',
|
folders_meta: true,
|
||||||
async folders() {
|
async folders() {
|
||||||
const folders = await fs.readdir(archivedir());
|
const folders = await fs.readdir(archivedir());
|
||||||
return [
|
return [
|
||||||
@@ -27,14 +27,14 @@ module.exports = {
|
|||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
|
||||||
createFolder_meta: 'post',
|
createFolder_meta: true,
|
||||||
async createFolder({ folder }) {
|
async createFolder({ folder }) {
|
||||||
await fs.mkdir(path.join(archivedir(), folder));
|
await fs.mkdir(path.join(archivedir(), folder));
|
||||||
socket.emitChanged('archive-folders-changed');
|
socket.emitChanged('archive-folders-changed');
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
createLink_meta: 'post',
|
createLink_meta: true,
|
||||||
async createLink({ linkedFolder }) {
|
async createLink({ linkedFolder }) {
|
||||||
const folder = await this.getNewArchiveFolder({ database: path.parse(linkedFolder).name + '.link' });
|
const folder = await this.getNewArchiveFolder({ database: path.parse(linkedFolder).name + '.link' });
|
||||||
fs.writeFile(path.join(archivedir(), folder), linkedFolder);
|
fs.writeFile(path.join(archivedir(), folder), linkedFolder);
|
||||||
@@ -43,7 +43,7 @@ module.exports = {
|
|||||||
return folder;
|
return folder;
|
||||||
},
|
},
|
||||||
|
|
||||||
files_meta: 'get',
|
files_meta: true,
|
||||||
async files({ folder }) {
|
async files({ folder }) {
|
||||||
const dir = resolveArchiveFolder(folder);
|
const dir = resolveArchiveFolder(folder);
|
||||||
if (!(await fs.exists(dir))) return [];
|
if (!(await fs.exists(dir))) return [];
|
||||||
@@ -70,23 +70,23 @@ module.exports = {
|
|||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
|
||||||
refreshFiles_meta: 'post',
|
refreshFiles_meta: true,
|
||||||
async refreshFiles({ folder }) {
|
async refreshFiles({ folder }) {
|
||||||
socket.emitChanged(`archive-files-changed-${folder}`);
|
socket.emitChanged(`archive-files-changed-${folder}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
refreshFolders_meta: 'post',
|
refreshFolders_meta: true,
|
||||||
async refreshFolders() {
|
async refreshFolders() {
|
||||||
socket.emitChanged(`archive-folders-changed`);
|
socket.emitChanged(`archive-folders-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
deleteFile_meta: 'post',
|
deleteFile_meta: true,
|
||||||
async deleteFile({ folder, file, fileType }) {
|
async deleteFile({ folder, file, fileType }) {
|
||||||
await fs.unlink(path.join(resolveArchiveFolder(folder), `${file}.${fileType}`));
|
await fs.unlink(path.join(resolveArchiveFolder(folder), `${file}.${fileType}`));
|
||||||
socket.emitChanged(`archive-files-changed-${folder}`);
|
socket.emitChanged(`archive-files-changed-${folder}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
renameFile_meta: 'post',
|
renameFile_meta: true,
|
||||||
async renameFile({ folder, file, newFile, fileType }) {
|
async renameFile({ folder, file, newFile, fileType }) {
|
||||||
await fs.rename(
|
await fs.rename(
|
||||||
path.join(resolveArchiveFolder(folder), `${file}.${fileType}`),
|
path.join(resolveArchiveFolder(folder), `${file}.${fileType}`),
|
||||||
@@ -95,14 +95,14 @@ module.exports = {
|
|||||||
socket.emitChanged(`archive-files-changed-${folder}`);
|
socket.emitChanged(`archive-files-changed-${folder}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
renameFolder_meta: 'post',
|
renameFolder_meta: true,
|
||||||
async renameFolder({ folder, newFolder }) {
|
async renameFolder({ folder, newFolder }) {
|
||||||
const uniqueName = await this.getNewArchiveFolder({ database: newFolder });
|
const uniqueName = await this.getNewArchiveFolder({ database: newFolder });
|
||||||
await fs.rename(path.join(archivedir(), folder), path.join(archivedir(), uniqueName));
|
await fs.rename(path.join(archivedir(), folder), path.join(archivedir(), uniqueName));
|
||||||
socket.emitChanged(`archive-folders-changed`);
|
socket.emitChanged(`archive-folders-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
deleteFolder_meta: 'post',
|
deleteFolder_meta: true,
|
||||||
async deleteFolder({ folder }) {
|
async deleteFolder({ folder }) {
|
||||||
if (!folder) throw new Error('Missing folder parameter');
|
if (!folder) throw new Error('Missing folder parameter');
|
||||||
if (folder.endsWith('.link')) {
|
if (folder.endsWith('.link')) {
|
||||||
@@ -113,14 +113,14 @@ module.exports = {
|
|||||||
socket.emitChanged(`archive-folders-changed`);
|
socket.emitChanged(`archive-folders-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
saveFreeTable_meta: 'post',
|
saveFreeTable_meta: true,
|
||||||
async saveFreeTable({ folder, file, data }) {
|
async saveFreeTable({ folder, file, data }) {
|
||||||
await saveFreeTableData(path.join(resolveArchiveFolder(folder), `${file}.jsonl`), data);
|
await saveFreeTableData(path.join(resolveArchiveFolder(folder), `${file}.jsonl`), data);
|
||||||
socket.emitChanged(`archive-files-changed-${folder}`);
|
socket.emitChanged(`archive-files-changed-${folder}`);
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
loadFreeTable_meta: 'post',
|
loadFreeTable_meta: true,
|
||||||
async loadFreeTable({ folder, file }) {
|
async loadFreeTable({ folder, file }) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const fileStream = fs.createReadStream(path.join(resolveArchiveFolder(folder), `${file}.jsonl`));
|
const fileStream = fs.createReadStream(path.join(resolveArchiveFolder(folder), `${file}.jsonl`));
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
get_meta: 'get',
|
get_meta: true,
|
||||||
async get() {
|
async get() {
|
||||||
const permissions = process.env.PERMISSIONS ? process.env.PERMISSIONS.split(',') : null;
|
const permissions = process.env.PERMISSIONS ? process.env.PERMISSIONS.split(',') : null;
|
||||||
|
|
||||||
@@ -33,17 +33,17 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
platformInfo_meta: 'get',
|
platformInfo_meta: true,
|
||||||
async platformInfo() {
|
async platformInfo() {
|
||||||
return platformInfo;
|
return platformInfo;
|
||||||
},
|
},
|
||||||
|
|
||||||
getSettings_meta: 'get',
|
getSettings_meta: true,
|
||||||
async getSettings() {
|
async getSettings() {
|
||||||
return this.settingsValue;
|
return this.settingsValue;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateSettings_meta: 'post',
|
updateSettings_meta: true,
|
||||||
async updateSettings(values) {
|
async updateSettings(values) {
|
||||||
if (!hasPermission(`settings/change`)) return false;
|
if (!hasPermission(`settings/change`)) return false;
|
||||||
try {
|
try {
|
||||||
@@ -60,7 +60,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
changelog_meta: 'get',
|
changelog_meta: true,
|
||||||
async changelog() {
|
async changelog() {
|
||||||
const resp = await axios.default.get('https://raw.githubusercontent.com/dbgate/dbgate/master/CHANGELOG.md');
|
const resp = await axios.default.get('https://raw.githubusercontent.com/dbgate/dbgate/master/CHANGELOG.md');
|
||||||
return resp.data;
|
return resp.data;
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
list_meta: 'get',
|
list_meta: true,
|
||||||
async list() {
|
async list() {
|
||||||
return portalConnections || this.datastore.find();
|
return portalConnections || this.datastore.find();
|
||||||
},
|
},
|
||||||
@@ -148,7 +148,7 @@ module.exports = {
|
|||||||
subprocess.send(req.body);
|
subprocess.send(req.body);
|
||||||
},
|
},
|
||||||
|
|
||||||
save_meta: 'post',
|
save_meta: true,
|
||||||
async save(connection) {
|
async save(connection) {
|
||||||
if (portalConnections) return;
|
if (portalConnections) return;
|
||||||
let res;
|
let res;
|
||||||
@@ -162,7 +162,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
update_meta: 'post',
|
update_meta: true,
|
||||||
async update({ _id, values }) {
|
async update({ _id, values }) {
|
||||||
if (portalConnections) return;
|
if (portalConnections) return;
|
||||||
const res = await this.datastore.update({ _id }, { $set: values });
|
const res = await this.datastore.update({ _id }, { $set: values });
|
||||||
@@ -170,7 +170,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateDatabase_meta: 'post',
|
updateDatabase_meta: true,
|
||||||
async updateDatabase({ conid, database, values }) {
|
async updateDatabase({ conid, database, values }) {
|
||||||
if (portalConnections) return;
|
if (portalConnections) return;
|
||||||
const conn = await this.datastore.find({ _id: conid });
|
const conn = await this.datastore.find({ _id: conid });
|
||||||
@@ -185,7 +185,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
delete_meta: 'post',
|
delete_meta: true,
|
||||||
async delete(connection) {
|
async delete(connection) {
|
||||||
if (portalConnections) return;
|
if (portalConnections) return;
|
||||||
const res = await this.datastore.remove(_.pick(connection, '_id'));
|
const res = await this.datastore.remove(_.pick(connection, '_id'));
|
||||||
@@ -193,14 +193,14 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
get_meta: 'get',
|
get_meta: true,
|
||||||
async get({ conid }) {
|
async get({ conid }) {
|
||||||
if (portalConnections) return portalConnections.find(x => x._id == conid);
|
if (portalConnections) return portalConnections.find(x => x._id == conid);
|
||||||
const res = await this.datastore.find({ _id: conid });
|
const res = await this.datastore.find({ _id: conid });
|
||||||
return res[0];
|
return res[0];
|
||||||
},
|
},
|
||||||
|
|
||||||
newSqliteDatabase_meta: 'post',
|
newSqliteDatabase_meta: true,
|
||||||
async newSqliteDatabase({ file }) {
|
async newSqliteDatabase({ file }) {
|
||||||
const sqliteDir = path.join(filesdir(), 'sqlite');
|
const sqliteDir = path.join(filesdir(), 'sqlite');
|
||||||
if (!(await fs.exists(sqliteDir))) {
|
if (!(await fs.exists(sqliteDir))) {
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ module.exports = {
|
|||||||
return promise;
|
return promise;
|
||||||
},
|
},
|
||||||
|
|
||||||
queryData_meta: 'post',
|
queryData_meta: true,
|
||||||
async queryData({ conid, database, sql }) {
|
async queryData({ conid, database, sql }) {
|
||||||
console.log(`Processing query, conid=${conid}, database=${database}, sql=${sql}`);
|
console.log(`Processing query, conid=${conid}, database=${database}, sql=${sql}`);
|
||||||
const opened = await this.ensureOpened(conid, database);
|
const opened = await this.ensureOpened(conid, database);
|
||||||
@@ -132,7 +132,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
runScript_meta: 'post',
|
runScript_meta: true,
|
||||||
async runScript({ conid, database, sql }) {
|
async runScript({ conid, database, sql }) {
|
||||||
console.log(`Processing script, conid=${conid}, database=${database}, sql=${sql}`);
|
console.log(`Processing script, conid=${conid}, database=${database}, sql=${sql}`);
|
||||||
const opened = await this.ensureOpened(conid, database);
|
const opened = await this.ensureOpened(conid, database);
|
||||||
@@ -140,21 +140,21 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
collectionData_meta: 'post',
|
collectionData_meta: true,
|
||||||
async collectionData({ conid, database, options }) {
|
async collectionData({ conid, database, options }) {
|
||||||
const opened = await this.ensureOpened(conid, database);
|
const opened = await this.ensureOpened(conid, database);
|
||||||
const res = await this.sendRequest(opened, { msgtype: 'collectionData', options });
|
const res = await this.sendRequest(opened, { msgtype: 'collectionData', options });
|
||||||
return res.result;
|
return res.result;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateCollection_meta: 'post',
|
updateCollection_meta: true,
|
||||||
async updateCollection({ conid, database, changeSet }) {
|
async updateCollection({ conid, database, changeSet }) {
|
||||||
const opened = await this.ensureOpened(conid, database);
|
const opened = await this.ensureOpened(conid, database);
|
||||||
const res = await this.sendRequest(opened, { msgtype: 'updateCollection', changeSet });
|
const res = await this.sendRequest(opened, { msgtype: 'updateCollection', changeSet });
|
||||||
return res.result;
|
return res.result;
|
||||||
},
|
},
|
||||||
|
|
||||||
status_meta: 'get',
|
status_meta: true,
|
||||||
async status({ conid, database }) {
|
async status({ conid, database }) {
|
||||||
const existing = this.opened.find(x => x.conid == conid && x.database == database);
|
const existing = this.opened.find(x => x.conid == conid && x.database == database);
|
||||||
if (existing) {
|
if (existing) {
|
||||||
@@ -176,7 +176,7 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
ping_meta: 'post',
|
ping_meta: true,
|
||||||
async ping({ conid, database }) {
|
async ping({ conid, database }) {
|
||||||
let existing = this.opened.find(x => x.conid == conid && x.database == database);
|
let existing = this.opened.find(x => x.conid == conid && x.database == database);
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh_meta: 'post',
|
refresh_meta: true,
|
||||||
async refresh({ conid, database, keepOpen }) {
|
async refresh({ conid, database, keepOpen }) {
|
||||||
if (!keepOpen) this.close(conid, database);
|
if (!keepOpen) this.close(conid, database);
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ module.exports = {
|
|||||||
return { status: 'ok' };
|
return { status: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
syncModel_meta: 'post',
|
syncModel_meta: true,
|
||||||
async syncModel({ conid, database }) {
|
async syncModel({ conid, database }) {
|
||||||
const conn = await this.ensureOpened(conid, database);
|
const conn = await this.ensureOpened(conid, database);
|
||||||
conn.subprocess.send({ msgtype: 'syncModel' });
|
conn.subprocess.send({ msgtype: 'syncModel' });
|
||||||
@@ -224,13 +224,13 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
disconnect_meta: 'post',
|
disconnect_meta: true,
|
||||||
async disconnect({ conid, database }) {
|
async disconnect({ conid, database }) {
|
||||||
await this.close(conid, database, true);
|
await this.close(conid, database, true);
|
||||||
return { status: 'ok' };
|
return { status: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
structure_meta: 'get',
|
structure_meta: true,
|
||||||
async structure({ conid, database }) {
|
async structure({ conid, database }) {
|
||||||
if (conid == '__model') {
|
if (conid == '__model') {
|
||||||
const model = await importDbModel(database);
|
const model = await importDbModel(database);
|
||||||
@@ -247,13 +247,13 @@ module.exports = {
|
|||||||
// };
|
// };
|
||||||
},
|
},
|
||||||
|
|
||||||
serverVersion_meta: 'get',
|
serverVersion_meta: true,
|
||||||
async serverVersion({ conid, database }) {
|
async serverVersion({ conid, database }) {
|
||||||
const opened = await this.ensureOpened(conid, database);
|
const opened = await this.ensureOpened(conid, database);
|
||||||
return opened.serverVersion;
|
return opened.serverVersion;
|
||||||
},
|
},
|
||||||
|
|
||||||
sqlPreview_meta: 'post',
|
sqlPreview_meta: true,
|
||||||
async sqlPreview({ conid, database, objects, options }) {
|
async sqlPreview({ conid, database, objects, options }) {
|
||||||
// wait for structure
|
// wait for structure
|
||||||
await this.structure({ conid, database });
|
await this.structure({ conid, database });
|
||||||
@@ -263,7 +263,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
exportModel_meta: 'post',
|
exportModel_meta: true,
|
||||||
async exportModel({ conid, database }) {
|
async exportModel({ conid, database }) {
|
||||||
const archiveFolder = await archive.getNewArchiveFolder({ database });
|
const archiveFolder = await archive.getNewArchiveFolder({ database });
|
||||||
await fs.mkdir(path.join(archivedir(), archiveFolder));
|
await fs.mkdir(path.join(archivedir(), archiveFolder));
|
||||||
@@ -273,7 +273,7 @@ module.exports = {
|
|||||||
return { archiveFolder };
|
return { archiveFolder };
|
||||||
},
|
},
|
||||||
|
|
||||||
generateDeploySql_meta: 'post',
|
generateDeploySql_meta: true,
|
||||||
async generateDeploySql({ conid, database, archiveFolder }) {
|
async generateDeploySql({ conid, database, archiveFolder }) {
|
||||||
const opened = await this.ensureOpened(conid, database);
|
const opened = await this.ensureOpened(conid, database);
|
||||||
const res = await this.sendRequest(opened, { msgtype: 'generateDeploySql', modelFolder: resolveArchiveFolder(archiveFolder) });
|
const res = await this.sendRequest(opened, { msgtype: 'generateDeploySql', modelFolder: resolveArchiveFolder(archiveFolder) });
|
||||||
@@ -300,7 +300,7 @@ module.exports = {
|
|||||||
// };
|
// };
|
||||||
// return sql;
|
// return sql;
|
||||||
},
|
},
|
||||||
// runCommand_meta: 'post',
|
// runCommand_meta: true,
|
||||||
// async runCommand({ conid, database, sql }) {
|
// async runCommand({ conid, database, sql }) {
|
||||||
// console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`);
|
// console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`);
|
||||||
// const opened = await this.ensureOpened(conid, database);
|
// const opened = await this.ensureOpened(conid, database);
|
||||||
@@ -343,7 +343,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
generateDbDiffReport_meta: 'post',
|
generateDbDiffReport_meta: true,
|
||||||
async generateDbDiffReport({ filePath, sourceConid, sourceDatabase, targetConid, targetDatabase }) {
|
async generateDbDiffReport({ filePath, sourceConid, sourceDatabase, targetConid, targetDatabase }) {
|
||||||
const unifiedDiff = await this.getUnifiedDiff({ sourceConid, sourceDatabase, targetConid, targetDatabase });
|
const unifiedDiff = await this.getUnifiedDiff({ sourceConid, sourceDatabase, targetConid, targetDatabase });
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ function deserialize(format, text) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
list_meta: 'get',
|
list_meta: true,
|
||||||
async list({ folder }) {
|
async list({ folder }) {
|
||||||
if (!hasPermission(`files/${folder}/read`)) return [];
|
if (!hasPermission(`files/${folder}/read`)) return [];
|
||||||
const dir = path.join(filesdir(), folder);
|
const dir = path.join(filesdir(), folder);
|
||||||
@@ -29,7 +29,7 @@ module.exports = {
|
|||||||
return files;
|
return files;
|
||||||
},
|
},
|
||||||
|
|
||||||
listAll_meta: 'get',
|
listAll_meta: true,
|
||||||
async listAll() {
|
async listAll() {
|
||||||
const folders = await fs.readdir(filesdir());
|
const folders = await fs.readdir(filesdir());
|
||||||
const res = [];
|
const res = [];
|
||||||
@@ -42,7 +42,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
delete_meta: 'post',
|
delete_meta: true,
|
||||||
async delete({ folder, file }) {
|
async delete({ folder, file }) {
|
||||||
if (!hasPermission(`files/${folder}/write`)) return;
|
if (!hasPermission(`files/${folder}/write`)) return;
|
||||||
await fs.unlink(path.join(filesdir(), folder, file));
|
await fs.unlink(path.join(filesdir(), folder, file));
|
||||||
@@ -50,7 +50,7 @@ module.exports = {
|
|||||||
socket.emitChanged(`all-files-changed`);
|
socket.emitChanged(`all-files-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
rename_meta: 'post',
|
rename_meta: true,
|
||||||
async rename({ folder, file, newFile }) {
|
async rename({ folder, file, newFile }) {
|
||||||
if (!hasPermission(`files/${folder}/write`)) return;
|
if (!hasPermission(`files/${folder}/write`)) return;
|
||||||
await fs.rename(path.join(filesdir(), folder, file), path.join(filesdir(), folder, newFile));
|
await fs.rename(path.join(filesdir(), folder, file), path.join(filesdir(), folder, newFile));
|
||||||
@@ -58,7 +58,7 @@ module.exports = {
|
|||||||
socket.emitChanged(`all-files-changed`);
|
socket.emitChanged(`all-files-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
copy_meta: 'post',
|
copy_meta: true,
|
||||||
async copy({ folder, file, newFile }) {
|
async copy({ folder, file, newFile }) {
|
||||||
if (!hasPermission(`files/${folder}/write`)) return;
|
if (!hasPermission(`files/${folder}/write`)) return;
|
||||||
await fs.copyFile(path.join(filesdir(), folder, file), path.join(filesdir(), folder, newFile));
|
await fs.copyFile(path.join(filesdir(), folder, file), path.join(filesdir(), folder, newFile));
|
||||||
@@ -66,7 +66,7 @@ module.exports = {
|
|||||||
socket.emitChanged(`all-files-changed`);
|
socket.emitChanged(`all-files-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
load_meta: 'post',
|
load_meta: true,
|
||||||
async load({ folder, file, format }) {
|
async load({ folder, file, format }) {
|
||||||
if (folder.startsWith('archive:')) {
|
if (folder.startsWith('archive:')) {
|
||||||
const text = await fs.readFile(path.join(resolveArchiveFolder(folder.substring('archive:'.length)), file), {
|
const text = await fs.readFile(path.join(resolveArchiveFolder(folder.substring('archive:'.length)), file), {
|
||||||
@@ -80,7 +80,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
save_meta: 'post',
|
save_meta: true,
|
||||||
async save({ folder, file, data, format }) {
|
async save({ folder, file, data, format }) {
|
||||||
if (folder.startsWith('archive:')) {
|
if (folder.startsWith('archive:')) {
|
||||||
const dir = resolveArchiveFolder(folder.substring('archive:'.length));
|
const dir = resolveArchiveFolder(folder.substring('archive:'.length));
|
||||||
@@ -101,12 +101,12 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
saveAs_meta: 'post',
|
saveAs_meta: true,
|
||||||
async saveAs({ filePath, data, format }) {
|
async saveAs({ filePath, data, format }) {
|
||||||
await fs.writeFile(filePath, serialize(format, data));
|
await fs.writeFile(filePath, serialize(format, data));
|
||||||
},
|
},
|
||||||
|
|
||||||
favorites_meta: 'get',
|
favorites_meta: true,
|
||||||
async favorites() {
|
async favorites() {
|
||||||
if (!hasPermission(`files/favorites/read`)) return [];
|
if (!hasPermission(`files/favorites/read`)) return [];
|
||||||
const dir = path.join(filesdir(), 'favorites');
|
const dir = path.join(filesdir(), 'favorites');
|
||||||
@@ -125,7 +125,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
generateUploadsFile_meta: 'get',
|
generateUploadsFile_meta: true,
|
||||||
async generateUploadsFile() {
|
async generateUploadsFile() {
|
||||||
const fileName = `${uuidv1()}.html`;
|
const fileName = `${uuidv1()}.html`;
|
||||||
return {
|
return {
|
||||||
@@ -134,7 +134,7 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
exportChart_meta: 'post',
|
exportChart_meta: true,
|
||||||
async exportChart({ filePath, title, config, image }) {
|
async exportChart({ filePath, title, config, image }) {
|
||||||
const fileName = path.parse(filePath).base;
|
const fileName = path.parse(filePath).base;
|
||||||
const imageFile = fileName.replace('.html', '-preview.png');
|
const imageFile = fileName.replace('.html', '-preview.png');
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ module.exports = {
|
|||||||
return datastore;
|
return datastore;
|
||||||
},
|
},
|
||||||
|
|
||||||
getInfo_meta: 'get',
|
getInfo_meta: true,
|
||||||
async getInfo({ jslid }) {
|
async getInfo({ jslid }) {
|
||||||
const file = getJslFileName(jslid);
|
const file = getJslFileName(jslid);
|
||||||
const firstLine = await readFirstLine(file);
|
const firstLine = await readFirstLine(file);
|
||||||
@@ -112,13 +112,13 @@ module.exports = {
|
|||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
getRows_meta: 'post',
|
getRows_meta: true,
|
||||||
async getRows({ jslid, offset, limit, filters }) {
|
async getRows({ jslid, offset, limit, filters }) {
|
||||||
const datastore = await this.ensureDatastore(jslid);
|
const datastore = await this.ensureDatastore(jslid);
|
||||||
return datastore.getRows(offset, limit, _.isEmpty(filters) ? null : filters);
|
return datastore.getRows(offset, limit, _.isEmpty(filters) ? null : filters);
|
||||||
},
|
},
|
||||||
|
|
||||||
getStats_meta: 'get',
|
getStats_meta: true,
|
||||||
getStats({ jslid }) {
|
getStats({ jslid }) {
|
||||||
const file = `${getJslFileName(jslid)}.stats`;
|
const file = `${getJslFileName(jslid)}.stats`;
|
||||||
if (fs.existsSync(file)) {
|
if (fs.existsSync(file)) {
|
||||||
@@ -146,7 +146,7 @@ module.exports = {
|
|||||||
// }
|
// }
|
||||||
},
|
},
|
||||||
|
|
||||||
saveFreeTable_meta: 'post',
|
saveFreeTable_meta: true,
|
||||||
async saveFreeTable({ jslid, data }) {
|
async saveFreeTable({ jslid, data }) {
|
||||||
saveFreeTableData(getJslFileName(jslid), data);
|
saveFreeTableData(getJslFileName(jslid), data);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ function pickObjectNames(array) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
// tableData_meta: 'get',
|
// tableData_meta: true,
|
||||||
// async tableData({ conid, database, schemaName, pureName }) {
|
// async tableData({ conid, database, schemaName, pureName }) {
|
||||||
// const opened = await databaseConnections.ensureOpened(conid, database);
|
// const opened = await databaseConnections.ensureOpened(conid, database);
|
||||||
// const res = await databaseConnections.sendRequest(opened, { msgtype: 'tableData', schemaName, pureName });
|
// const res = await databaseConnections.sendRequest(opened, { msgtype: 'tableData', schemaName, pureName });
|
||||||
// return res;
|
// return res;
|
||||||
// },
|
// },
|
||||||
|
|
||||||
listObjects_meta: 'get',
|
listObjects_meta: true,
|
||||||
async listObjects({ conid, database }) {
|
async listObjects({ conid, database }) {
|
||||||
const opened = await databaseConnections.ensureOpened(conid, database);
|
const opened = await databaseConnections.ensureOpened(conid, database);
|
||||||
const types = ['tables', 'collections', 'views', 'procedures', 'functions', 'triggers'];
|
const types = ['tables', 'collections', 'views', 'procedures', 'functions', 'triggers'];
|
||||||
@@ -27,7 +27,7 @@ module.exports = {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
tableInfo_meta: 'get',
|
tableInfo_meta: true,
|
||||||
async tableInfo({ conid, database, schemaName, pureName }) {
|
async tableInfo({ conid, database, schemaName, pureName }) {
|
||||||
const opened = await databaseConnections.ensureOpened(conid, database);
|
const opened = await databaseConnections.ensureOpened(conid, database);
|
||||||
const table = opened.structure.tables.find(x => x.pureName == pureName && x.schemaName == schemaName);
|
const table = opened.structure.tables.find(x => x.pureName == pureName && x.schemaName == schemaName);
|
||||||
@@ -38,7 +38,7 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
sqlObjectInfo_meta: 'get',
|
sqlObjectInfo_meta: true,
|
||||||
async sqlObjectInfo({ objectTypeField, conid, database, schemaName, pureName }) {
|
async sqlObjectInfo({ objectTypeField, conid, database, schemaName, pureName }) {
|
||||||
const opened = await databaseConnections.ensureOpened(conid, database);
|
const opened = await databaseConnections.ensureOpened(conid, database);
|
||||||
const res = opened.structure[objectTypeField].find(x => x.pureName == pureName && x.schemaName == schemaName);
|
const res = opened.structure[objectTypeField].find(x => x.pureName == pureName && x.schemaName == schemaName);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ const _ = require('lodash');
|
|||||||
const packagedPluginsContent = require('../packagedPluginsContent');
|
const packagedPluginsContent = require('../packagedPluginsContent');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
script_meta: 'get',
|
script_meta: true,
|
||||||
async script({ packageName }) {
|
async script({ packageName }) {
|
||||||
const packagedContent = packagedPluginsContent();
|
const packagedContent = packagedPluginsContent();
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ module.exports = {
|
|||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
|
||||||
search_meta: 'get',
|
search_meta: true,
|
||||||
async search({ filter }) {
|
async search({ filter }) {
|
||||||
// DOCS: https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search
|
// DOCS: https://github.com/npm/registry/blob/master/docs/REGISTRY-API.md#get-v1search
|
||||||
const resp = await axios.default.get(
|
const resp = await axios.default.get(
|
||||||
@@ -40,7 +40,7 @@ module.exports = {
|
|||||||
return (objects || []).map(x => x.package);
|
return (objects || []).map(x => x.package);
|
||||||
},
|
},
|
||||||
|
|
||||||
info_meta: 'get',
|
info_meta: true,
|
||||||
async info({ packageName }) {
|
async info({ packageName }) {
|
||||||
try {
|
try {
|
||||||
const infoResp = await axios.default.get(`https://registry.npmjs.org/${packageName}`);
|
const infoResp = await axios.default.get(`https://registry.npmjs.org/${packageName}`);
|
||||||
@@ -63,7 +63,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
installed_meta: 'get',
|
installed_meta: true,
|
||||||
async installed() {
|
async installed() {
|
||||||
const packagedContent = packagedPluginsContent();
|
const packagedContent = packagedPluginsContent();
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ module.exports = {
|
|||||||
// await fs.writeFile(path.join(datadir(), 'removed-plugins'), this.removedPlugins.join('\n'));
|
// await fs.writeFile(path.join(datadir(), 'removed-plugins'), this.removedPlugins.join('\n'));
|
||||||
// },
|
// },
|
||||||
|
|
||||||
install_meta: 'post',
|
install_meta: true,
|
||||||
async install({ packageName }) {
|
async install({ packageName }) {
|
||||||
if (!hasPermission(`plugins/install`)) return;
|
if (!hasPermission(`plugins/install`)) return;
|
||||||
const dir = path.join(pluginsdir(), packageName);
|
const dir = path.join(pluginsdir(), packageName);
|
||||||
@@ -120,7 +120,7 @@ module.exports = {
|
|||||||
// await this.saveRemovePlugins();
|
// await this.saveRemovePlugins();
|
||||||
},
|
},
|
||||||
|
|
||||||
uninstall_meta: 'post',
|
uninstall_meta: true,
|
||||||
async uninstall({ packageName }) {
|
async uninstall({ packageName }) {
|
||||||
if (!hasPermission(`plugins/install`)) return;
|
if (!hasPermission(`plugins/install`)) return;
|
||||||
const dir = path.join(pluginsdir(), packageName);
|
const dir = path.join(pluginsdir(), packageName);
|
||||||
@@ -130,7 +130,7 @@ module.exports = {
|
|||||||
await this.saveRemovePlugins();
|
await this.saveRemovePlugins();
|
||||||
},
|
},
|
||||||
|
|
||||||
upgrade_meta: 'post',
|
upgrade_meta: true,
|
||||||
async upgrade({ packageName }) {
|
async upgrade({ packageName }) {
|
||||||
if (!hasPermission(`plugins/install`)) return;
|
if (!hasPermission(`plugins/install`)) return;
|
||||||
const dir = path.join(pluginsdir(), packageName);
|
const dir = path.join(pluginsdir(), packageName);
|
||||||
@@ -143,13 +143,13 @@ module.exports = {
|
|||||||
socket.emitChanged(`installed-plugins-changed`);
|
socket.emitChanged(`installed-plugins-changed`);
|
||||||
},
|
},
|
||||||
|
|
||||||
command_meta: 'post',
|
command_meta: true,
|
||||||
async command({ packageName, command, args }) {
|
async command({ packageName, command, args }) {
|
||||||
const content = requirePlugin(packageName);
|
const content = requirePlugin(packageName);
|
||||||
return content.commands[command](args);
|
return content.commands[command](args);
|
||||||
},
|
},
|
||||||
|
|
||||||
authTypes_meta: 'get',
|
authTypes_meta: true,
|
||||||
async authTypes({ engine }) {
|
async authTypes({ engine }) {
|
||||||
const packageName = extractPackageName(engine);
|
const packageName = extractPackageName(engine);
|
||||||
const content = requirePlugin(packageName);
|
const content = requirePlugin(packageName);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ function readCore(reader, skip, limit, filter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
read_meta: 'get',
|
read_meta: true,
|
||||||
async read({ skip, limit, filter }) {
|
async read({ skip, limit, filter }) {
|
||||||
const fileName = path.join(datadir(), 'query-history.jsonl');
|
const fileName = path.join(datadir(), 'query-history.jsonl');
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -44,7 +44,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
write_meta: 'post',
|
write_meta: true,
|
||||||
async write({ data }) {
|
async write({ data }) {
|
||||||
const fileName = path.join(datadir(), 'query-history.jsonl');
|
const fileName = path.join(datadir(), 'query-history.jsonl');
|
||||||
await fs.appendFile(fileName, JSON.stringify(data) + '\n');
|
await fs.appendFile(fileName, JSON.stringify(data) + '\n');
|
||||||
|
|||||||
@@ -139,18 +139,18 @@ module.exports = {
|
|||||||
return newOpened;
|
return newOpened;
|
||||||
},
|
},
|
||||||
|
|
||||||
start_meta: 'post',
|
start_meta: true,
|
||||||
async start({ script }) {
|
async start({ script }) {
|
||||||
const runid = uuidv1();
|
const runid = uuidv1();
|
||||||
return this.startCore(runid, scriptTemplate(script, false));
|
return this.startCore(runid, scriptTemplate(script, false));
|
||||||
},
|
},
|
||||||
|
|
||||||
getNodeScript_meta: 'post',
|
getNodeScript_meta: true,
|
||||||
async getNodeScript({ script }) {
|
async getNodeScript({ script }) {
|
||||||
return scriptTemplate(script, true);
|
return scriptTemplate(script, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
cancel_meta: 'post',
|
cancel_meta: true,
|
||||||
async cancel({ runid }) {
|
async cancel({ runid }) {
|
||||||
const runner = this.opened.find(x => x.runid == runid);
|
const runner = this.opened.find(x => x.runid == runid);
|
||||||
if (!runner) {
|
if (!runner) {
|
||||||
@@ -160,7 +160,7 @@ module.exports = {
|
|||||||
return { state: 'ok' };
|
return { state: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
files_meta: 'get',
|
files_meta: true,
|
||||||
async files({ runid }) {
|
async files({ runid }) {
|
||||||
const directory = path.join(rundir(), runid);
|
const directory = path.join(rundir(), runid);
|
||||||
const files = await fs.readdir(directory);
|
const files = await fs.readdir(directory);
|
||||||
@@ -176,7 +176,7 @@ module.exports = {
|
|||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
||||||
loadReader_meta: 'post',
|
loadReader_meta: true,
|
||||||
async loadReader({ functionName, props }) {
|
async loadReader({ functionName, props }) {
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
const runid = uuidv1();
|
const runid = uuidv1();
|
||||||
|
|||||||
@@ -86,25 +86,25 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
disconnect_meta: 'post',
|
disconnect_meta: true,
|
||||||
async disconnect({ conid }) {
|
async disconnect({ conid }) {
|
||||||
await this.close(conid, true);
|
await this.close(conid, true);
|
||||||
return { status: 'ok' };
|
return { status: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
listDatabases_meta: 'get',
|
listDatabases_meta: true,
|
||||||
async listDatabases({ conid }) {
|
async listDatabases({ conid }) {
|
||||||
const opened = await this.ensureOpened(conid);
|
const opened = await this.ensureOpened(conid);
|
||||||
return opened.databases;
|
return opened.databases;
|
||||||
},
|
},
|
||||||
|
|
||||||
version_meta: 'get',
|
version_meta: true,
|
||||||
async version({ conid }) {
|
async version({ conid }) {
|
||||||
const opened = await this.ensureOpened(conid);
|
const opened = await this.ensureOpened(conid);
|
||||||
return opened.version;
|
return opened.version;
|
||||||
},
|
},
|
||||||
|
|
||||||
serverStatus_meta: 'get',
|
serverStatus_meta: true,
|
||||||
async serverStatus() {
|
async serverStatus() {
|
||||||
return {
|
return {
|
||||||
...this.closed,
|
...this.closed,
|
||||||
@@ -112,7 +112,7 @@ module.exports = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
ping_meta: 'post',
|
ping_meta: true,
|
||||||
async ping({ connections }) {
|
async ping({ connections }) {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
_.uniq(connections).map(async conid => {
|
_.uniq(connections).map(async conid => {
|
||||||
@@ -128,7 +128,7 @@ module.exports = {
|
|||||||
return { status: 'ok' };
|
return { status: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh_meta: 'post',
|
refresh_meta: true,
|
||||||
async refresh({ conid, keepOpen }) {
|
async refresh({ conid, keepOpen }) {
|
||||||
if (!keepOpen) this.close(conid);
|
if (!keepOpen) this.close(conid);
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ module.exports = {
|
|||||||
return { status: 'ok' };
|
return { status: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
createDatabase_meta: 'post',
|
createDatabase_meta: true,
|
||||||
async createDatabase({ conid, name }) {
|
async createDatabase({ conid, name }) {
|
||||||
const opened = await this.ensureOpened(conid);
|
const opened = await this.ensureOpened(conid);
|
||||||
opened.subprocess.send({ msgtype: 'createDatabase', name });
|
opened.subprocess.send({ msgtype: 'createDatabase', name });
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ module.exports = {
|
|||||||
|
|
||||||
handle_ping() {},
|
handle_ping() {},
|
||||||
|
|
||||||
create_meta: 'post',
|
create_meta: true,
|
||||||
async create({ conid, database }) {
|
async create({ conid, database }) {
|
||||||
const sesid = uuidv1();
|
const sesid = uuidv1();
|
||||||
const connection = await connections.get({ conid });
|
const connection = await connections.get({ conid });
|
||||||
@@ -84,7 +84,7 @@ module.exports = {
|
|||||||
return newOpened;
|
return newOpened;
|
||||||
},
|
},
|
||||||
|
|
||||||
executeQuery_meta: 'post',
|
executeQuery_meta: true,
|
||||||
async executeQuery({ sesid, sql }) {
|
async executeQuery({ sesid, sql }) {
|
||||||
const session = this.opened.find(x => x.sesid == sesid);
|
const session = this.opened.find(x => x.sesid == sesid);
|
||||||
if (!session) {
|
if (!session) {
|
||||||
@@ -98,7 +98,7 @@ module.exports = {
|
|||||||
return { state: 'ok' };
|
return { state: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
// cancel_meta: 'post',
|
// cancel_meta: true,
|
||||||
// async cancel({ sesid }) {
|
// async cancel({ sesid }) {
|
||||||
// const session = this.opened.find((x) => x.sesid == sesid);
|
// const session = this.opened.find((x) => x.sesid == sesid);
|
||||||
// if (!session) {
|
// if (!session) {
|
||||||
@@ -108,7 +108,7 @@ module.exports = {
|
|||||||
// return { state: 'ok' };
|
// return { state: 'ok' };
|
||||||
// },
|
// },
|
||||||
|
|
||||||
kill_meta: 'post',
|
kill_meta: true,
|
||||||
async kill({ sesid }) {
|
async kill({ sesid }) {
|
||||||
const session = this.opened.find(x => x.sesid == sesid);
|
const session = this.opened.find(x => x.sesid == sesid);
|
||||||
if (!session) {
|
if (!session) {
|
||||||
@@ -119,7 +119,7 @@ module.exports = {
|
|||||||
return { state: 'ok' };
|
return { state: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
// runCommand_meta: 'post',
|
// runCommand_meta: true,
|
||||||
// async runCommand({ conid, database, sql }) {
|
// async runCommand({ conid, database, sql }) {
|
||||||
// console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`);
|
// console.log(`Running SQL command , conid=${conid}, database=${database}, sql=${sql}`);
|
||||||
// const opened = await this.ensureOpened(conid, database);
|
// const opened = await this.ensureOpened(conid, database);
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ module.exports = function useController(app, route, controller) {
|
|||||||
const meta = controller[`${key}_meta`];
|
const meta = controller[`${key}_meta`];
|
||||||
if (!meta) continue;
|
if (!meta) continue;
|
||||||
|
|
||||||
let method = 'get';
|
let method = 'post';
|
||||||
let raw = false;
|
let raw = false;
|
||||||
let rawParams = false;
|
let rawParams = false;
|
||||||
|
|
||||||
if (_.isString(meta)) {
|
// if (_.isString(meta)) {
|
||||||
method = meta;
|
// method = meta;
|
||||||
}
|
// }
|
||||||
if (_.isPlainObject(meta)) {
|
if (_.isPlainObject(meta)) {
|
||||||
method = meta.method;
|
method = meta.method;
|
||||||
raw = meta.raw;
|
raw = meta.raw;
|
||||||
|
|||||||
Reference in New Issue
Block a user