diff --git a/package-lock.json b/package-lock.json index 66df3cf..4f6e878 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "devDependencies": { "@babel/preset-typescript": "^7.14.5", "@types/express": "^4.17.12", + "@types/mongoose": "^5.11.97", "@types/node": "^15.12.2", "@types/socket.io-client": "^3.0.0", "@typescript-eslint/eslint-plugin": "^4.26.1", @@ -515,6 +516,16 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, + "node_modules/@types/mongoose": { + "version": "5.11.97", + "resolved": "https://registry.npmjs.org/@types/mongoose/-/mongoose-5.11.97.tgz", + "integrity": "sha512-cqwOVYT3qXyLiGw7ueU2kX9noE8DPGRY6z8eUxudhXY8NZ7DMKYAxyZkLSevGfhCX3dO/AoX5/SO9lAzfjon0Q==", + "deprecated": "Mongoose publishes its own types, so you do not need to install this package.", + "dev": true, + "dependencies": { + "mongoose": "*" + } + }, "node_modules/@types/node": { "version": "15.14.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", diff --git a/src/client/src/app/components/users-list/users-list.component.html b/src/client/src/app/components/users-list/users-list.component.html index f012db9..966cf59 100644 --- a/src/client/src/app/components/users-list/users-list.component.html +++ b/src/client/src/app/components/users-list/users-list.component.html @@ -1,6 +1,14 @@ \ No newline at end of file +
  • + name: {{ user.name }}
    + username: {{ user.username }} + + +
  • + diff --git a/src/client/src/app/components/users-list/users-list.component.ts b/src/client/src/app/components/users-list/users-list.component.ts index 09cb436..924c662 100644 --- a/src/client/src/app/components/users-list/users-list.component.ts +++ b/src/client/src/app/components/users-list/users-list.component.ts @@ -16,9 +16,20 @@ export class UsersListComponent implements OnInit { ngOnInit(): void { } + deleteUser(id: any) { + this.userService.deleteUser(id).subscribe(); + } + getUsers() { return this.userService.getUsers() } + updateUser(id:any) { + this.userService.updateUser(id) + } + checkUpdated(id: any) { + return this.userService.updatedUserId == id ? "red" : 'black'; + + } } diff --git a/src/client/src/app/services/api.service.ts b/src/client/src/app/services/api.service.ts index 38b353b..4929542 100644 --- a/src/client/src/app/services/api.service.ts +++ b/src/client/src/app/services/api.service.ts @@ -6,6 +6,7 @@ import { Postable } from '../models/postable'; providedIn: 'root' }) export class ApiService { + baseUrl:string = 'http://localhost:3501/'; constructor(private http: HttpClient) { } @@ -16,4 +17,10 @@ export class ApiService { post(resourceName: string, data: Postable) { return this.http.post(this.baseUrl + resourceName, data); } + delete(resourceName: string, id: string) { + return this.http.delete(this.baseUrl + resourceName + "/" + id); + } + put(resourceName: string, data: Postable) { + return this.http.put(this.baseUrl + resourceName, data); + } } diff --git a/src/client/src/app/services/user.service.ts b/src/client/src/app/services/user.service.ts index e80374c..ea80607 100644 --- a/src/client/src/app/services/user.service.ts +++ b/src/client/src/app/services/user.service.ts @@ -7,12 +7,21 @@ import { User } from '../../../../shared/models/user.model'; providedIn: 'root', }) export class UserService { + updatedUserId = ''; constructor(private api: ApiService) {} getUsers() { return this.api.get<{ data: User[] }>('users').pipe(map(res => res.data)); } postUsers(user: User) { - return this.api.post('create-user', user); + return this.updatedUserId ? + this.api.put('update-user/' + this.updatedUserId, user) : + this.api.post('create-user', user); + } + deleteUser(id: string) { + return this.api.delete("delete-user", id); + } + updateUser(id: string,) { + this.updatedUserId = this.updatedUserId === id ? '' : id; } } diff --git a/src/server/server.ts b/src/server/server.ts index 2d06e7b..cd20568 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -74,7 +74,24 @@ app.post('/create-post', function(req,res){ res.json({errors: err}); }) }); +app.delete('/delete-user/:id', function (req, res) { + const _id = req.params.id; + UserModel.findByIdAndDelete(_id).then(data => { + res.json({ + data + }) + }) +}) +app.put('/update-user/:id', function (req, res) { + const _id = req.params.id; + UserModel.findByIdAndUpdate(_id).then(data => { + $set: {username:req.body.username, req.body.email} + res.json({ + data + }) + }) +}) app.listen(PORT, function(){ console.log( `starting at localhost http://localhost:${PORT}`);