Fixed W8
This commit is contained in:
parent
cb0a0dee2b
commit
b44fe71c28
10 changed files with 1832 additions and 0 deletions
123
w8/index.js
Normal file
123
w8/index.js
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
import express from "express";
|
||||
import mustache from "mustache";
|
||||
import bodyParse from "body-parser";
|
||||
import { readdirSync, readFileSync } from "fs";
|
||||
import { MongoClient } from "mongodb";
|
||||
import { ObjectId } from "mongodb";
|
||||
|
||||
const app = express();
|
||||
app.use(express.static("./static"));
|
||||
app.use(bodyParse.urlencoded({ extended: true }));
|
||||
app.use(bodyParse.json());
|
||||
const port = 9889;
|
||||
|
||||
const templates = new Map(readdirSync("./templates").map(fn => [fn, readFileSync(`./templates/${fn}`, "utf-8")]));
|
||||
|
||||
/** @type {MongoClient} */
|
||||
const client = await MongoClient.connect("mongodb://127.0.0.1:27017/weit_db?directConnection=true&serverSelectionTimeoutMS=2000&appName=weit");
|
||||
const announcements = client.db().collection("announcements");
|
||||
try { await announcements.createIndex({ text: "text" }); } catch (e) { }
|
||||
|
||||
app.get("/", (req, res) => {
|
||||
res.send(mustache.render(templates.get("mainPage.html")));
|
||||
});
|
||||
|
||||
app.get("/createAnnouncement", (req, res) => {
|
||||
res.send(mustache.render(templates.get("createAnnouncementPage.html")));
|
||||
});
|
||||
|
||||
app.get("/:announcementID", (req, res) => {
|
||||
res.send(mustache.render(templates.get("announcementPage.html"), { anid: req.params.announcementID }));
|
||||
});
|
||||
|
||||
app.get("/api/announcements", async (req, res) => {
|
||||
res.send({
|
||||
count: await announcements.countDocuments(),
|
||||
announcements: await (async () => {
|
||||
let out = [];
|
||||
await announcements.find().forEach(anmnt => out.push(anmnt));
|
||||
return out;
|
||||
})()
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/api/announcement/:announcementID", async (req, res) => {
|
||||
let announcement = { ok: false };
|
||||
try {
|
||||
announcement = await announcements.findOne({ _id: ObjectId(req.params.announcementID) });
|
||||
announcement.ok = true;
|
||||
} catch (e) { console.error(e); }
|
||||
|
||||
res.send(announcement);
|
||||
});
|
||||
|
||||
app.put("/api/announcement", async (req, res) => {
|
||||
const { title, text, phone } = req.body;
|
||||
let result = { ok: false };
|
||||
if (title === undefined || text === undefined || phone === undefined) {
|
||||
result["error"] = "Empty input data!";
|
||||
} else {
|
||||
result["announcementId"] = (await announcements.insertOne({
|
||||
title, text, phone
|
||||
})).insertedId;
|
||||
result.ok = true;
|
||||
}
|
||||
res.send(result);
|
||||
});
|
||||
|
||||
app.delete("/api/announcements/:announcementID", async (req, res) => {
|
||||
let result = { ok: false };
|
||||
try {
|
||||
result = await announcements.deleteOne({ _id: ObjectId(req.params.announcementID) });
|
||||
result.ok = true;
|
||||
} catch (e) { console.error(e); result["error"] = `Exception: ${e}`; }
|
||||
|
||||
res.send(result);
|
||||
});
|
||||
|
||||
app.patch("/api/announcements/:announcementID", async (req, res) => {
|
||||
let result = { ok: false };
|
||||
const { title, text, phone } = req.body;
|
||||
if (title === undefined && text === undefined && phone === undefined) {
|
||||
result["error"] = "Empty input data!";
|
||||
} else {
|
||||
try {
|
||||
let mod = {};
|
||||
if (title) {
|
||||
mod["title"] = title;
|
||||
}
|
||||
if (text) {
|
||||
mod["text"] = text;
|
||||
}
|
||||
if (phone) {
|
||||
mod["phone"] = phone;
|
||||
}
|
||||
await announcements.updateOne({ _id: ObjectId(req.params.announcementID) }, { $set: mod });
|
||||
result.ok = true;
|
||||
} catch (e) { console.error(e); result["error"] = `Exception: ${e}`; }
|
||||
}
|
||||
|
||||
res.send(result);
|
||||
});
|
||||
|
||||
app.post("/api/search", async (req, res) => {
|
||||
let result = { ok: false };
|
||||
const { text } = req.body;
|
||||
if (text === undefined) {
|
||||
result["error"] = "Empty search!";
|
||||
} else {
|
||||
try {
|
||||
let searchResults = await (async () => {
|
||||
let out = [];
|
||||
await announcements.find({ $text: { $search: text } }).forEach(anmnt => out.push(anmnt));
|
||||
return out;
|
||||
})();
|
||||
result["result"] = searchResults;
|
||||
result.ok = true;
|
||||
} catch (e) { console.error(e); result["error"] = `Exception: ${e}`; }
|
||||
}
|
||||
|
||||
res.send(result);
|
||||
});
|
||||
|
||||
app.listen(port, () => console.log(`⚡️ Serving on port ${port}`));
|
||||
Loading…
Add table
Add a link
Reference in a new issue