mirror of
https://github.com/pawelmalak/flame.git
synced 2025-08-02 17:35:17 +02:00
Merge branch 'pawelmalak:master' into master
This commit is contained in:
commit
35f5db62f2
66 changed files with 1309 additions and 222 deletions
|
@ -1,4 +1,5 @@
|
|||
const asyncWrapper = require('../../middleware/asyncWrapper');
|
||||
const ErrorResponse = require('../../utils/ErrorResponse');
|
||||
const File = require('../../utils/File');
|
||||
|
||||
// @desc Add custom search query
|
||||
|
@ -8,6 +9,12 @@ const addQuery = asyncWrapper(async (req, res, next) => {
|
|||
const file = new File('data/customQueries.json');
|
||||
let content = JSON.parse(file.read());
|
||||
|
||||
const prefixes = content.queries.map((q) => q.prefix);
|
||||
|
||||
if (prefixes.includes(req.body.prefix)) {
|
||||
return next(new ErrorResponse('Prefix must be unique', 400));
|
||||
}
|
||||
|
||||
// Add new query
|
||||
content.queries.push(req.body);
|
||||
file.write(content, true);
|
||||
|
|
28
controllers/themes/addTheme.js
Normal file
28
controllers/themes/addTheme.js
Normal file
|
@ -0,0 +1,28 @@
|
|||
const asyncWrapper = require('../../middleware/asyncWrapper');
|
||||
const ErrorResponse = require('../../utils/ErrorResponse');
|
||||
const File = require('../../utils/File');
|
||||
|
||||
// @desc Create new theme
|
||||
// @route POST /api/themes
|
||||
// @access Private
|
||||
const addTheme = asyncWrapper(async (req, res, next) => {
|
||||
const file = new File('data/themes.json');
|
||||
let content = JSON.parse(file.read());
|
||||
|
||||
const themeNames = content.themes.map((t) => t.name);
|
||||
|
||||
if (themeNames.includes(req.body.name)) {
|
||||
return next(new ErrorResponse('Name must be unique', 400));
|
||||
}
|
||||
|
||||
// Add new theme
|
||||
content.themes.push(req.body);
|
||||
file.write(content, true);
|
||||
|
||||
res.status(201).json({
|
||||
success: true,
|
||||
data: req.body,
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = addTheme;
|
22
controllers/themes/deleteTheme.js
Normal file
22
controllers/themes/deleteTheme.js
Normal file
|
@ -0,0 +1,22 @@
|
|||
const asyncWrapper = require('../../middleware/asyncWrapper');
|
||||
const File = require('../../utils/File');
|
||||
|
||||
// @desc Delete theme
|
||||
// @route DELETE /api/themes/:name
|
||||
// @access Public
|
||||
const deleteTheme = asyncWrapper(async (req, res, next) => {
|
||||
const file = new File('data/themes.json');
|
||||
let content = JSON.parse(file.read());
|
||||
|
||||
content.themes = content.themes.filter((t) => t.name != req.params.name);
|
||||
file.write(content, true);
|
||||
|
||||
const userThemes = content.themes.filter((t) => t.isCustom);
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: userThemes,
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = deleteTheme;
|
17
controllers/themes/getThemes.js
Normal file
17
controllers/themes/getThemes.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
const asyncWrapper = require('../../middleware/asyncWrapper');
|
||||
const File = require('../../utils/File');
|
||||
|
||||
// @desc Get themes file
|
||||
// @route GET /api/themes
|
||||
// @access Public
|
||||
const getThemes = asyncWrapper(async (req, res, next) => {
|
||||
const file = new File('data/themes.json');
|
||||
const content = JSON.parse(file.read());
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: content.themes,
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = getThemes;
|
6
controllers/themes/index.js
Normal file
6
controllers/themes/index.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
module.exports = {
|
||||
getThemes: require('./getThemes'),
|
||||
addTheme: require('./addTheme'),
|
||||
deleteTheme: require('./deleteTheme'),
|
||||
updateTheme: require('./updateTheme'),
|
||||
};
|
32
controllers/themes/updateTheme.js
Normal file
32
controllers/themes/updateTheme.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
const asyncWrapper = require('../../middleware/asyncWrapper');
|
||||
const File = require('../../utils/File');
|
||||
|
||||
// @desc Update theme
|
||||
// @route PUT /api/themes/:name
|
||||
// @access Public
|
||||
const updateTheme = asyncWrapper(async (req, res, next) => {
|
||||
const file = new File('data/themes.json');
|
||||
let content = JSON.parse(file.read());
|
||||
|
||||
let themeIdx = content.themes.findIndex((t) => t.name == req.params.name);
|
||||
|
||||
// theme found
|
||||
if (themeIdx > -1) {
|
||||
content.themes = [
|
||||
...content.themes.slice(0, themeIdx),
|
||||
req.body,
|
||||
...content.themes.slice(themeIdx + 1),
|
||||
];
|
||||
}
|
||||
|
||||
file.write(content, true);
|
||||
|
||||
const userThemes = content.themes.filter((t) => t.isCustom);
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: userThemes,
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = updateTheme;
|
Loading…
Add table
Add a link
Reference in a new issue