saved sql files - save to server (minimal version)

This commit is contained in:
Jan Prochazka
2020-12-02 20:02:58 +01:00
parent 203e490321
commit e952d5c6f8
10 changed files with 99 additions and 67 deletions

View File

@@ -0,0 +1,46 @@
const fs = require('fs-extra');
const path = require('path');
const { filesdir } = require('../utility/directories');
const socket = require('../utility/socket');
function serialize(folder, data) {
if (folder == 'sql') return data;
return JSON.stringify(data);
}
function deserialize(folder, text) {
if (folder == 'sql') return text;
return JSON.parse(text);
}
module.exports = {
list_meta: 'get',
async list({ folder }) {
const dir = path.join(filesdir(), folder);
if (!(await fs.exists(dir))) return [];
const files = (await fs.readdir(dir)).map((name) => ({ name }));
return files;
},
delete_meta: 'post',
async delete({ folder, file }) {
await fs.unlink(path.join(filesdir(), folder, file));
socket.emitChanged(`files-changed-${folder}`);
},
load_meta: 'post',
async load({ folder, file }) {
const text = await fs.readFile(path.join(filesdir(), folder, file), { encoding: 'utf-8' });
return deserialize(folder, text);
},
save_meta: 'post',
async save({ folder, file, data }) {
const dir = path.join(filesdir(), folder);
if (!(await fs.exists(dir))) {
await fs.mkdir(dir);
}
await fs.writeFile(path.join(dir, file), serialize(folder, data));
socket.emitChanged(`files-changed-${folder}`);
},
};

View File

@@ -23,6 +23,7 @@ const config = require('./controllers/config');
const archive = require('./controllers/archive');
const uploads = require('./controllers/uploads');
const plugins = require('./controllers/plugins');
const files = require('./controllers/files');
const { rundir } = require('./utility/directories');
@@ -67,6 +68,7 @@ function start(argument = null) {
useController(app, '/archive', archive);
useController(app, '/uploads', uploads);
useController(app, '/plugins', plugins);
useController(app, '/files', files);
if (process.env.PAGES_DIRECTORY) {
app.use('/pages', express.static(process.env.PAGES_DIRECTORY));

View File

@@ -37,6 +37,7 @@ const rundir = dirFunc('run', true);
const uploadsdir = dirFunc('uploads', true);
const pluginsdir = dirFunc('plugins');
const archivedir = dirFunc('archive');
const filesdir = dirFunc('files');
module.exports = {
datadir,
@@ -46,4 +47,5 @@ module.exports = {
archivedir,
ensureDirectory,
pluginsdir,
filesdir,
};