import express from "express"; import { PrismaClient } from "@prisma/client"; const prisma : PrismaClient = new PrismaClient(); const app : express.Application = express(); const portti : number = Number(process.env.PORT) || 3011; app.set("view engine", "ejs"); app.use(express.json()); app.use(express.urlencoded({ extended : true })); app.get("/", async (req : express.Request, res : express.Response) => { let key : string = "name"; let kunnat = await prisma.kunta.findMany(); function GetSortOrder(prop : string) { return function(a : any, b : any) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } kunnat.sort(GetSortOrder("kunta")); res.render("index", { kunnat : kunnat, key : key }); }); app.post("/hae", async (req : express.Request, res : express.Response) => { let key : string = "name"; let kunnat = await prisma.kunta.findMany({ where: { kunta : { startsWith: req.body.nimi } } }) function GetSortOrder(prop : string) { return function(a : any, b : any) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } kunnat.sort(GetSortOrder("kunta")); res.render("index", { kunnat : kunnat, key : key }); }); app.post("/sortByName", (req : express.Request, res : express.Response) => { let key : string = "name"; let kunnat = JSON.parse(req.body.kunnat); function GetSortOrder(prop : string) { return function(a : any, b : any) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } if(req.body.key === "name"){ key = "nameDown"; kunnat.sort(GetSortOrder("kunta")); kunnat.reverse(); res.render("index", { kunnat : kunnat, key : key }); } else { kunnat.sort(GetSortOrder("kunta")); res.render("index", { kunnat : kunnat, key : key }); } }); app.post("/sortByPeople", (req : express.Request, res : express.Response) => { let key : string = "people"; let kunnat = JSON.parse(req.body.kunnat); function GetSortOrder(prop : string) { return function(a : any, b : any) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } if(req.body.key === "people"){ key = "peopleDown"; kunnat.sort(GetSortOrder("asukkaatYhteensa")); kunnat.reverse(); res.render("index", { kunnat : kunnat, key : key }); } else { kunnat.sort(GetSortOrder("asukkaatYhteensa")); res.render("index", { kunnat : kunnat, key : key }); } }); app.post("/sortByMen", (req : express.Request, res : express.Response) => { let key : string = "men"; let kunnat = JSON.parse(req.body.kunnat); function GetSortOrder(prop : string) { return function(a : any, b : any) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } if(req.body.key === "men"){ key = "menDown"; kunnat.sort(GetSortOrder("asukkaatMiehet")); kunnat.reverse(); res.render("index", { kunnat : kunnat, key : key }); } else { kunnat.sort(GetSortOrder("asukkaatMiehet")); res.render("index", { kunnat : kunnat, key : key }); } }); app.post("/sortByWomen", (req : express.Request, res : express.Response) => { let key : string = "women"; let kunnat = JSON.parse(req.body.kunnat); function GetSortOrder(prop : string) { return function(a : any, b : any) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } if(req.body.key === "women"){ key = "womenDown"; kunnat.sort(GetSortOrder("asukkaatNaiset")); kunnat.reverse(); res.render("index", { kunnat : kunnat, key : key }); } else { kunnat.sort(GetSortOrder("asukkaatNaiset")); res.render("index", { kunnat : kunnat, key : key }); } }); app.listen(portti, () => { console.log(`Palvelin käynnistyi osoitteeseen http://localhost:${portti}`) });