added unwrapped json for gallery-image/list and news/list, integerated news-list api into news api
This commit is contained in:
@@ -19,12 +19,9 @@ galleryImageAPI.get('/list', async (request, response) => {
|
||||
for (const entry of rows) {
|
||||
ret = ret + "<tr>\n";
|
||||
for (const data in entry) {
|
||||
ret = ret + `<td>${entry[data]}</td>\n`;
|
||||
ret = ret + `\t<td>${entry[data]}</td>\n`;
|
||||
}
|
||||
ret = ret + `<td>\n
|
||||
<button class='delete-button' hx-delete='/api/gallery-image?target=${entry["id"]}'>Delete</button>\n
|
||||
<a href='/update-gallery-image.html?target=${entry["id"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n
|
||||
</td>\n</tr>\n`;
|
||||
ret = ret + `\t<td>\n\t\t<button class='delete-button' hx-delete='/api/gallery-image?target=${entry["id"]}'>Delete</button>\n\t\t<a href='/update-gallery-image.html?target=${entry["id"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n\t</td>\n</tr>\n`;
|
||||
}
|
||||
return ret;
|
||||
});
|
||||
@@ -34,6 +31,23 @@ galleryImageAPI.get('/list', async (request, response) => {
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
response.status(500).send(err);
|
||||
}
|
||||
});
|
||||
|
||||
galleryImageAPI.get('/list-unwrapped', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
const sqlQuery = "SELECT * FROM gallery";
|
||||
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => { return rows; });
|
||||
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
response.status(500).send(err);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -56,6 +70,7 @@ galleryImageAPI.get('/', async (request, response) => {
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
response.status(500).send(err);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -72,6 +87,7 @@ galleryImageAPI.post('/', async (request, response) => {
|
||||
console.log("Image added successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
@@ -99,6 +115,7 @@ galleryImageAPI.put('/', async (request, response) => {
|
||||
console.log("Image updated successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
@@ -123,6 +140,7 @@ galleryImageAPI.delete('/', async (request, response) => {
|
||||
console.log("Image deleted successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
@@ -130,4 +148,4 @@ galleryImageAPI.delete('/', async (request, response) => {
|
||||
response.status(200).send();
|
||||
});
|
||||
|
||||
export default galleryImageAPI;
|
||||
export default galleryImageAPI;
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import express from 'express';
|
||||
|
||||
import newsAPI from './news.js';
|
||||
import newsListAPI from './news-list.js';
|
||||
import galleryImageAPI from './gallery-image.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use('/news', newsAPI);
|
||||
router.use('/news-list', newsListAPI);
|
||||
router.use('/gallery-image', galleryImageAPI);
|
||||
|
||||
export default router;
|
||||
export default router;
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
import express from 'express';
|
||||
import sqlite3 from 'sqlite3';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { asyncDatabaseRead } from '../utils/asyncDatabase.js';
|
||||
|
||||
const newsListAPI = express.Router();
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const databasePath = path.join(__dirname, "../../assets/databases/news.db");
|
||||
|
||||
newsListAPI.get('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
const sqlQuery = `SELECT * FROM news ORDER BY date DESC;`;
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {
|
||||
let ret = "";
|
||||
for (const entry of rows) {
|
||||
ret = ret + "<tr>\n";
|
||||
for (const data in entry) {
|
||||
if (data == "article" || data == "coverImagePath" || data == "linkPath") continue;
|
||||
if (data == "entryType") {
|
||||
ret = ret + `<td>${entry[data] == 0 ? "Article" : "Tweet"}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
if (data == "date") {
|
||||
ret = ret + `<td>${new Date(entry[data]).toLocaleString()}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
ret = ret + `<td>${entry[data]}</td>\n`;
|
||||
}
|
||||
ret = ret + `<td>\n
|
||||
<button class='delete-button' hx-delete='/api/news?target=${entry["date"]}'>Delete</button>\n
|
||||
<a href='/update-news.html?target=${entry["date"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n
|
||||
</td>\n</tr>\n`;
|
||||
}
|
||||
return ret
|
||||
});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
export default newsListAPI;
|
||||
@@ -15,6 +15,7 @@ newsAPI.get('/', async (request, response) => {
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
console.error("Query is not number");
|
||||
response.status(500).send("Query is not number");
|
||||
return;
|
||||
}
|
||||
@@ -33,7 +34,7 @@ newsAPI.get('/', async (request, response) => {
|
||||
|
||||
newsAPI.post('/', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
|
||||
|
||||
const currentDate = new Date();
|
||||
const currentUnixTime = currentDate.valueOf();
|
||||
const entryType = request.body.entryType;
|
||||
@@ -41,14 +42,15 @@ newsAPI.post('/', async (request, response) => {
|
||||
const article = request.body.article;
|
||||
const linkPath = entryType == 0 ? `/news/${request.body.linkPath}` : "";
|
||||
const coverImagePath = request.body.coverImagePath;
|
||||
|
||||
|
||||
const sqlQuery = `INSERT INTO news (date, entryType, cardContent, article, linkPath, coverImagePath) VALUES (${currentUnixTime}, ${entryType}, "${cardContent}", "${article}", "${linkPath}", "${coverImagePath}");`;
|
||||
|
||||
|
||||
try {
|
||||
await asyncDatabaseWrite(database, sqlQuery, () => {
|
||||
console.log("News added successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
response.status(500).send(err);
|
||||
}
|
||||
database.close();
|
||||
@@ -66,6 +68,7 @@ newsAPI.put('/', async (request, response) => {
|
||||
const coverImagePath = request.body.coverImagePath;
|
||||
|
||||
if (isNaN(target)) {
|
||||
console.error('Target is not number');
|
||||
response.status(500).send('Target is not number');
|
||||
return;
|
||||
}
|
||||
@@ -77,6 +80,7 @@ newsAPI.put('/', async (request, response) => {
|
||||
console.log("News updated successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
@@ -90,6 +94,7 @@ newsAPI.delete('/', async (request, response) => {
|
||||
const target = Number(request.query.target);
|
||||
|
||||
if (isNaN(target)) {
|
||||
console.error('No Entry Found!');
|
||||
response.status(404).send('No Entry Found!');
|
||||
return;
|
||||
}
|
||||
@@ -101,6 +106,7 @@ newsAPI.delete('/', async (request, response) => {
|
||||
console.log("News deleted successfully.");
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
response.status(500).send(err);
|
||||
}
|
||||
|
||||
@@ -109,4 +115,50 @@ newsAPI.delete('/', async (request, response) => {
|
||||
response.status(200).send();
|
||||
});
|
||||
|
||||
export default newsAPI;
|
||||
newsAPI.get('/list', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
const sqlQuery = `SELECT id, date, entryType, cardContent FROM news ORDER BY date DESC;`;
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => {
|
||||
let ret = "";
|
||||
for (const entry of rows) {
|
||||
ret = ret + "<tr>\n";
|
||||
for (const data in entry) {
|
||||
if (data == "entryType") {
|
||||
ret = ret + `\t<td>${entry[data] == 0 ? "Article" : "Tweet"}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
if (data == "date") {
|
||||
ret = ret + `\t<td>${new Date(entry[data]).toLocaleString()}</td>\n`;
|
||||
continue;
|
||||
}
|
||||
ret = ret + `\t<td>${entry[data]}</td>\n`;
|
||||
}
|
||||
ret = ret + `\t<td>\n\t\t<button class='delete-button' hx-delete='/api/news?target=${entry["date"]}'>Delete</button>\n\t\t<a href='/update-news.html?target=${entry["date"]}'><button class='edit-button' hx-confirm='unset'>Edit</button></a>\n\t</td>\n</tr>\n`;
|
||||
}
|
||||
return ret
|
||||
});
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
newsAPI.get('/list-unwrapped', async (request, response) => {
|
||||
const database = new sqlite3.Database(databasePath);
|
||||
const sqlQuery = `SELECT id, date, entryType, cardContent FROM news ORDER BY date DESC;`;
|
||||
|
||||
try {
|
||||
const result = await asyncDatabaseRead(database, sqlQuery, (rows) => { return rows; });
|
||||
|
||||
database.close();
|
||||
response.send(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
database.close();
|
||||
}
|
||||
});
|
||||
|
||||
export default newsAPI;
|
||||
|
||||
Reference in New Issue
Block a user