Skip to content
Snippets Groups Projects
Commit e1baf6b1 authored by alec.schmidt's avatar alec.schmidt
Browse files

basic question service

parent 6209fe64
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -94,7 +94,7 @@ class DBHandler {
const request = "UPDATE users \
SET username = '"+ a.username +"', password = '"+ a.password +"' \
WHERE id = " + a.id.toString();
WHERE id = " + req.params.id;
asyncdb.all(request)
.then(() => res.status(StatusCodes.OK).end())
......@@ -153,7 +153,7 @@ class DBHandler {
const a = req.body as Question_t;
const request = "UPDATE questions \
SET question='"+ a.question +"', category='"+ a.category +"' \
WHERE id=" + a.id.toString();
WHERE id=" + req.params.id;
asyncdb.all(request)
......@@ -164,7 +164,7 @@ class DBHandler {
async deleteQuestion(req:express.Request, res:express.Response) {
const a = req.body as Question_t;
asyncdb.all("DELETE FROM questions WHERE id =" + a.id)
asyncdb.all("DELETE FROM questions WHERE id =" + req.params.id)
.then(() => res.status(StatusCodes.OK).end())
.catch(e => console.log(e));
}
......
......@@ -26,7 +26,7 @@ function isAdmin(token: string): Boolean {
if (token == null) return false;
jwt.verify(token, process.env.TOKEN_SECRET, (err:any, user:User_t) => {
console.log(err);
// console.log(err);
if (err) return false;
adminToken = user.type === "admin"
......@@ -41,7 +41,7 @@ function tokenDecode(req: express.Request): User_t {
const token = req.headers['authorization'] && req.headers['authorization'].split(' ')[1]
jwt.verify(token, process.env.TOKEN_SECRET, (err:any, user:User_t) => {
console.log(err);
// console.log(err);
if (err) user_data = undefined;
else
......@@ -85,17 +85,19 @@ router.get(ROUTE+'/user', (req: express.Request, res: express.Response) => {
DBHandler.getUsers(res);
});
router.patch(ROUTE+'/user', (req: express.Request, res: express.Response) => {
router.patch(ROUTE+'/user/:id', (req: express.Request, res: express.Response) => {
const a = req.body as User_t;
if (a.username === undefined ||
a.password === undefined ||
a.type === undefined) {
// if (a.username === undefined ||
// a.password === undefined ||
// a.type === undefined) {
res.statusMessage = "invalid JSON";
res.status(StatusCodes.BAD_REQUEST).end();
return;
}
// res.statusMessage = "invalid JSON";
// res.status(StatusCodes.BAD_REQUEST).end();
// return;
// }
console.log(a);
if (a.type === "admin")
if (!isAdmin(req.headers['authorization'] && req.headers['authorization'].split(' ')[1]))
......@@ -109,7 +111,6 @@ router.patch(ROUTE+'/user', (req: express.Request, res: express.Response) => {
if(exists)
return res.status(StatusCodes.CONFLICT).end();
DBHandler.updateUser(req, res);
})
......@@ -139,11 +140,11 @@ router.get(ROUTE+'/question', (req: express.Request, res: express.Response) => {
DBHandler.getQuestions(req, res);
})
router.patch(ROUTE+'/question', (req: express.Request, res: express.Response) => {
router.patch(ROUTE+'/question/:id', (req: express.Request, res: express.Response) => {
DBHandler.updateQuestion(req, res);
})
router.delete(ROUTE+'/question', (req: express.Request, res: express.Response) => {
router.delete(ROUTE+'/question/:id', (req: express.Request, res: express.Response) => {
DBHandler.deleteQuestion(req, res);
})
......
......@@ -11,6 +11,7 @@ export type QandA = {
};
export type Question = {
id: number;
question: string;
category: string;
}
......
......@@ -23,7 +23,7 @@
<td>{{question.question}}</td>
<td>{{question.category}}</td>
<td>UPDATE</td>
<td>DELETE</td>
<td><button (click)="deleteQuestion(question)">DELETE</button></td>
</tr>
</tbody>
</table>
\ No newline at end of file
......@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Answer, QandA, Question, User } from '../Types/types';
import { UsersService } from '../services/users.service';
import { QuestionsService } from '../services/questions.service';
@Component({
selector: 'app-admin',
......@@ -16,7 +17,8 @@ export class AdminComponent implements OnInit {
constructor(
private http: HttpClient,
private userController: UsersService) { }
private userController: UsersService,
private questionController: QuestionsService) { }
ngOnInit(): void {
......@@ -36,4 +38,8 @@ export class AdminComponent implements OnInit {
deleteUser(user:User) {
this.userController.deleteUser(user);
}
deleteQuestion(question: Question) {
this.questionController.deleteQuestion(question);
}
}
import { TestBed } from '@angular/core/testing';
import { QuestionsService } from './questions.service';
describe('QuestionsService', () => {
let service: QuestionsService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(QuestionsService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Question } from '../Types/types';
const ROUTE = "http://0.0.0.0:30992/API/v1/question"
@Injectable({
providedIn: 'root'
})
export class QuestionsService {
constructor(
private http: HttpClient) { }
deleteQuestion(question: Question) {
this.http.delete(ROUTE + "/" + question.id.toString()).subscribe(res => {
console.log("PLZ REFRESH")
});
}
// addUser(user: User) {
// this.http.post<User>(ROUTE, user).subscribe(res => {
// this.auth.login(user.username, user.password);
// });
// }
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment