server-side-rendering / index.ts
index.ts
Raw
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}`)

});