diff --git a/docker-compose.yaml b/docker-compose.yaml index 37336a2..03824ce 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,7 +3,6 @@ services: db: image: mariadb environment: - MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: twitter MYSQL_USER: dev @@ -21,16 +20,16 @@ services: PMA_HOST: db MYSQL_ROOT_PASSWORD: root - web: - depends_on: - - db - image: tomcat - volumes: - - ./target/twitter-0.0.1-SNAPSHOT.war:/usr/local/tomcat/webapps/twitter.war - ports: - - '8080:8080' - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: test_application - MYSQL_USER: dev - MYSQL_PASSWORD: dev \ No newline at end of file + #web: + # depends_on: + # - db + # image: tomcat + # volumes: + # - ./target/twitter-0.0.1-SNAPSHOT.war:/usr/local/tomcat/webapps/twitter.war + # ports: + # - '8080:8080' + # environment: + # MYSQL_ROOT_PASSWORD: root + # MYSQL_DATABASE: test_application + # MYSQL_USER: dev + # MYSQL_PASSWORD: dev \ No newline at end of file diff --git a/src/main/java/de/school/twitter/controller/CommentController.java b/src/main/java/de/school/twitter/controller/CommentController.java index ec66c9a..b3b6381 100644 --- a/src/main/java/de/school/twitter/controller/CommentController.java +++ b/src/main/java/de/school/twitter/controller/CommentController.java @@ -1,18 +1,13 @@ package de.school.twitter.controller; -import java.util.List; - import de.school.twitter.model.Comment; import de.school.twitter.model.Tweet; import de.school.twitter.repository.CommentRepository; import de.school.twitter.repository.TweetRepository; -import jakarta.websocket.server.PathParam; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController public class CommentController { @@ -28,7 +23,7 @@ public List getAllComments(){ return commentRepository.findAll(); } - @PostMapping("tweet/{id}/comment") + @PostMapping("/tweet/{id}/comment") public void addComment( @PathVariable("id") Integer aId, @RequestBody Comment aComment){ @@ -40,7 +35,14 @@ public void addComment( } @GetMapping("/tweet/{id}/comments") - public List getAllCommentsForTweet(@PathVariable("id") Integer aId){ + public List getAllCommentsForTweet(@PathVariable("id") Integer aId) { return commentRepository.getAllCommentsByTweet(aId); } + + @GetMapping("/tweet/{id}/comment/{comment_id}/like") + public void likeComment(@PathVariable("id") Integer aId, @PathVariable("comment_id") Integer aCommentId) { + Comment comment = commentRepository.getReferenceById(aCommentId); + comment.setLikes(comment.getLikes() + 1); + commentRepository.save(comment); + } } diff --git a/src/main/java/de/school/twitter/controller/TweetController.java b/src/main/java/de/school/twitter/controller/TweetController.java index 02a360c..74932e8 100644 --- a/src/main/java/de/school/twitter/controller/TweetController.java +++ b/src/main/java/de/school/twitter/controller/TweetController.java @@ -1,16 +1,11 @@ package de.school.twitter.controller; -import java.util.List; - import de.school.twitter.model.Tweet; import de.school.twitter.repository.TweetRepository; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController public class TweetController { @@ -32,13 +27,21 @@ public void saveTweet(@RequestBody Tweet aTweet){ } @GetMapping("/tweet/{id}") - public Tweet getTweetById(@PathVariable("id") Integer aId){ - return tweetRepository.getReferenceById(aId); + public Tweet getTweetById(@PathVariable("id") Integer aId) { + return tweetRepository.getReferenceById(aId); } //TODO: not working: Cannot delete or update a parent row: a foreign key constraint fails @DeleteMapping("/tweet/{id}") - public void deleteTweetById(@PathVariable("id") Integer aId){ + public void deleteTweetById(@PathVariable("id") Integer aId) { tweetRepository.deleteById(aId); } + + @GetMapping("/tweet/{id}/like") + public void liketweet(@PathVariable("id") Integer aId) { + Tweet tweet = tweetRepository.getReferenceById(aId); + tweet.setLikes(tweet.getLikes() + 1); + tweetRepository.save(tweet); + } + } diff --git a/src/main/java/de/school/twitter/repository/CommentRepository.java b/src/main/java/de/school/twitter/repository/CommentRepository.java index 7a1a371..21fc88f 100644 --- a/src/main/java/de/school/twitter/repository/CommentRepository.java +++ b/src/main/java/de/school/twitter/repository/CommentRepository.java @@ -1,15 +1,19 @@ package de.school.twitter.repository; -import java.util.List; - import de.school.twitter.model.Comment; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.List; + public interface CommentRepository extends JpaRepository { @Query(value = "SELECT * FROM comments WHERE tweet_id_id = :id", nativeQuery = true) List getAllCommentsByTweet(@Param("id") int aId); + @Override + Comment getReferenceById(Integer integer); + + } diff --git a/twitter/src/app/app.component.ts b/twitter/src/app/app.component.ts index 028efc2..9bd3d32 100644 --- a/twitter/src/app/app.component.ts +++ b/twitter/src/app/app.component.ts @@ -1,5 +1,5 @@ -import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core'; -import { HttpService, Tweet, Comment } from './http.service'; +import {AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core'; +import {Comment, HttpService, Tweet} from './http.service'; @Component({ selector: 'app-root', @@ -9,6 +9,7 @@ import { HttpService, Tweet, Comment } from './http.service'; export class AppComponent implements OnInit, AfterViewInit { tweets!: Tweet[] port: string = '8080' + url: string = 'https://twatter.vetrix.dev' height: number = window.innerHeight @ViewChild('content') contentDiv!: ElementRef; @@ -24,7 +25,7 @@ export class AppComponent implements OnInit, AfterViewInit { } async setTweets(){ - this.tweets = (await this.http.get(`http://127.0.0.1:${this.port}/tweet`)) + this.tweets = (await this.http.get(`${this.url}/twitter/`)) for(var i of this.tweets){ i.showComments = false @@ -33,7 +34,7 @@ export class AppComponent implements OnInit, AfterViewInit { async setComments(item: any, overWrite: boolean = false): Promise{ if(item.comments == undefined || overWrite == true){ - item.comments = await this.http.get(`http://127.0.0.1:${this.port}/tweet/${item.id}/comment`) + item.comments = await this.http.get(`${this.url}/twitter/tweet/${item.id}/comments`) item.showComments = true return true } @@ -89,7 +90,7 @@ export class AppComponent implements OnInit, AfterViewInit { } async submitComment(comment: string, id: number){ - await this.http.post(`http://127.0.0.1:${this.port}/tweet/${id}/comment`, { content: comment }) + await this.http.post(`${this.url}/twitter/tweet/${id}/comment`, {content: comment}) for(var i of this.tweets){ if(i.id == id){ @@ -103,24 +104,24 @@ export class AppComponent implements OnInit, AfterViewInit { async submitTweet(tweet: string){ this.height = this.getHeight() - await this.http.post(`http://127.0.0.1:${this.port}/tweet`, { content: tweet }) + await this.http.post(`${this.url}/twitter/tweet`, {content: tweet}) await this.setTweets() } async likeTweet(id: number){ - await this.http.get(`http://127.0.0.1:${this.port}/tweet/${id}/like`) + await this.http.get(`${this.url}/twitter/tweet/${id}/like`) this.tweets[ this.tweetIndexById(id) ].likes++ } async likeComment(tid: number, cid: number){ - await this.http.get(`http://127.0.0.1:${this.port}/tweet/${tid}/comment/${cid}/like`) + await this.http.get(`${this.url}/twitter/tweet/${tid}/comment/${cid}/like`) this.tweets[ this.tweetIndexById(tid) ].comments[ this.commentIndexById(tid, cid) ].likes++ } async deleteTweet(id: number){ - await this.http.delete(`http://127.0.0.1:${this.port}/tweet/${id}`) + await this.http.delete(`${this.url}/twitter/tweet/${id}`) await this.setTweets() } }