diff --git a/src/app.ts b/src/app.ts index 2e04e28..4b94634 100644 --- a/src/app.ts +++ b/src/app.ts @@ -39,6 +39,27 @@ app.post("/api/addRequest", async (request, response) => { .catch((e: any) => errorHandler(request,response,e)); }); +app.post("/api/updateRequestState", async (request, response) => { + response.type('text/plain'); + if (!request.body.url) { + response.status(400); + response.send("Missing url"); + return + } + if (!request.body.state) { + response.status(400); + response.send("Missing scoreDiff"); + return + } + var url = request.body.url as string; + var state = request.body.state as string; + requests.updateRequestState(url,state).then((val: [number,string]) => { + response.status(val[0]); + response.send(val[1]); + }) + .catch((e: any) => errorHandler(request,response,e)); +}); + app.post("/api/updateRequestScore", async (request, response) => { response.type('text/plain'); if (!request.body.url) { diff --git a/src/requests.ts b/src/requests.ts index 0306fc0..db615ac 100644 --- a/src/requests.ts +++ b/src/requests.ts @@ -47,6 +47,29 @@ export async function addRequest(url: string, requester: string) { .then((result: pg.QueryResult) => "Song request added."); }; +// updateRequestState +const checkValidStateQuery = { + name: "checkValidState", + text: "SELECT * FROM states WHERE state = $1" +} + +const updateRequestStateQuery = { + name: "updateRequestState", + text: "UPDATE requests SET state = $2 WHERE url = $1" +} + +export async function updateRequestState(url: string, state: string) { + var query = Object.assign(checkValidStateQuery, { values: [state] }); + var result = await db.query(query); + if (result.rowCount < 1) { + return [400,"Invalid state"] + } + + var query = Object.assign(updateRequestStateQuery, { values: [url,state] }); + return db.query(query) + .then((result: pg.QueryResult) => [200,"Song request state updated."]); +}; + // updateRequestScore const updateRequestScoreQuery = { name: "updateRequestScore",