Skip to content

Commit

Permalink
bugfix: Attempting to fix a bug in the Update Resource API. #8
Browse files Browse the repository at this point in the history
  • Loading branch information
cheomuk committed Jan 12, 2025
1 parent 4ebd879 commit 95ef88e
Show file tree
Hide file tree
Showing 30 changed files with 243 additions and 187 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,14 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
// 권한 설정
.authorizeHttpRequests(auth -> {
auth
// .requestMatchers("/api/v1/admin/**").hasRole("ADMIN") // ADMIN 역할만 접근 가능
// .requestMatchers("/api/v1/**").authenticated() // 인증된 사용자만 접근 가능
.requestMatchers("/api/v1/admin/**").hasRole("ADMIN") // ADMIN 역할만 접근 가능
.requestMatchers("/api/v1/users/test/login").permitAll()
.requestMatchers("/api/v1/users/signup").permitAll()
.requestMatchers("/api/v1/users/cancel").permitAll()
.requestMatchers("/api/v1/users/**").authenticated()
.requestMatchers("/api/v1/media/single").permitAll()
.requestMatchers("/api/v1/media/**").authenticated()
.requestMatchers("/api/v1/game/**").authenticated()
.anyRequest().permitAll(); // 그 외 모든 요청은 허용
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.Components;
import org.springdoc.core.models.GroupedOpenApi;
Expand Down Expand Up @@ -48,7 +47,7 @@ public GroupedOpenApi userApi() {
public GroupedOpenApi gameRoomApi() {
return GroupedOpenApi.builder()
.group("games")
.pathsToMatch("/api/v1/game/**")
.pathsToMatch("/api/v1/game/room/**")
.displayName("Game's API")
.build();
}
Expand All @@ -57,7 +56,7 @@ public GroupedOpenApi gameRoomApi() {
public GroupedOpenApi gameResourceApi() {
return GroupedOpenApi.builder()
.group("resources")
.pathsToMatch("/api/v1/resource/**")
.pathsToMatch("/api/v1/game/resource/**")
.displayName("Game Resource's API")
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ public class GameResources {
private final Long id;
private String title;
private final Games games;
private Links links;
private Images images;
private Links links;

@Builder
public GameResources(Long id, String title, Games games, Links links, Images images) {
public GameResources(Long id, String title, Games games, Images images, Links links) {
this.id = id;
this.title = title;
this.games = games;
this.links = links;
this.images = images;
this.links = links;
}

public void updateImage(String title, Images images) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.games.balancegameback.domain.media;

import com.games.balancegameback.domain.game.Games;
import com.games.balancegameback.domain.media.enums.MediaType;
import com.games.balancegameback.domain.user.Users;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -9,11 +10,13 @@
public class Images extends Media {

private String fileUrl;
private final MediaType mediaType;

@Builder
public Images(Long id, Games games, Users users, String fileUrl) {
super(id, games, users);
public Images(Long id, Games games, Users users, MediaType mediaType, String fileUrl) {
super(id, games, users, mediaType);
this.fileUrl = fileUrl;
this.mediaType = mediaType;
}

public void update(String fileUrl) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.games.balancegameback.domain.media;

import com.games.balancegameback.domain.game.Games;
import com.games.balancegameback.domain.media.enums.MediaType;
import com.games.balancegameback.domain.user.Users;
import lombok.Builder;
import lombok.Getter;
Expand All @@ -11,13 +12,15 @@ public class Links extends Media {
private String urls;
private int startSec;
private int endSec;
private final MediaType mediaType;

@Builder
public Links(Long id, Games games, Users users, String urls, int startSec, int endSec) {
super(id, games, users);
public Links(Long id, Games games, Users users, MediaType mediaType, String urls, int startSec, int endSec) {
super(id, games, users, mediaType);
this.urls = urls;
this.startSec = startSec;
this.endSec = endSec;
this.mediaType = mediaType;
}

public void update(String urls, int startSec, int endSec) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.games.balancegameback.domain.media;

import com.games.balancegameback.domain.game.Games;
import com.games.balancegameback.domain.media.enums.MediaType;
import com.games.balancegameback.domain.user.Users;
import lombok.Getter;

Expand All @@ -10,10 +11,12 @@ public class Media {
private final Long id;
private final Games games;
private final Users users;
private final MediaType mediaType;

public Media(Long id, Games games, Users users) {
public Media(Long id, Games games, Users users, MediaType mediaType) {
this.id = id;
this.games = games;
this.users = users;
this.mediaType = mediaType;
}
}
13 changes: 11 additions & 2 deletions src/main/java/com/games/balancegameback/domain/user/Users.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import com.games.balancegameback.domain.user.enums.UserRole;
import lombok.*;

import java.util.UUID;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Users {

private String uid;
Expand All @@ -16,4 +16,13 @@ public class Users {
private LoginType loginType;
private UserRole userRole;
private boolean isDeleted;

public Users(String uid, String nickname, String email, LoginType loginType, UserRole userRole, boolean isDeleted) {
this.uid = uid == null ? String.valueOf(UUID.randomUUID()) : uid;
this.nickname = nickname;
this.email = email;
this.loginType = loginType;
this.userRole = userRole;
this.isDeleted = isDeleted;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
@NoArgsConstructor
public class GameResourceRequest {

@Schema(description = "리소스 ID")
@NotBlank(message = "resource ID는 필수입니다.")
private Long resourceId;

@Schema(description = "리소스 제목")
private String title;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.games.balancegameback.dto.game;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GameResourceTemporaryResponse {

@Schema(description = "리소스 ID")
private Long resourceId;

@Schema(description = "리소스 제목")
private String title;

@Schema(description = "이미지 URL")
private String fileUrl;

@Schema(description = "유튜브 Link")
private String link;

@Schema(description = "유튜브 URL 시작 초")
private int startSec;

@Schema(description = "유튜브 URL 끝 초")
private int endSec;
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class GameResourcesEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false)
@Column
private String title;

@Column(updatable = false)
Expand All @@ -29,28 +29,28 @@ public class GameResourcesEntity {
private LocalDateTime updatedDate;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "games_id")
@JoinColumn(name = "games_id", nullable = false)
private GamesEntity games;

@ManyToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "images_id")
private ImagesEntity images;

@ManyToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "links_id")
private LinksEntity links;

public static GameResourcesEntity from(GameResources gameResources) {
GameResourcesEntity gameResourcesEntity = new GameResourcesEntity();
gameResourcesEntity.title = gameResources.getTitle();
gameResourcesEntity.title = gameResources.getTitle() != null ? gameResources.getTitle() : "";
gameResourcesEntity.games = GamesEntity.from(gameResources.getGames());

if (gameResources.getImages() != null) {
gameResourcesEntity.images = ImagesEntity.from(gameResources.getImages());
}

if (gameResources.getLinks() != null) {
gameResourcesEntity.links = LinksEntity.from(gameResources.getLinks());
gameResourcesEntity.links = LinksEntity.from((gameResources.getLinks()));
}

return gameResourcesEntity;
Expand All @@ -59,7 +59,7 @@ public static GameResourcesEntity from(GameResources gameResources) {
public GameResources toModel() {
return GameResources.builder()
.id(id)
.title(title)
.title(title != null ? title : "")
.games(games.toModel())
.images(images != null ? images.toModel() : null)
.links(links != null ? links.toModel() : null)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.games.balancegameback.infra.entity;

import com.games.balancegameback.domain.media.Images;
import com.games.balancegameback.domain.media.enums.MediaType;
import jakarta.persistence.*;
import lombok.Getter;

@Getter
@Entity
@DiscriminatorValue("IMAGE")
@Table(name = "images")
public class ImagesEntity extends MediaEntity {

Expand All @@ -16,6 +16,7 @@ public class ImagesEntity extends MediaEntity {
public static ImagesEntity from(Images images) {
ImagesEntity imagesEntity = new ImagesEntity();
imagesEntity.fileUrl = images.getFileUrl();
imagesEntity.mediaType = images.getMediaType() == null ? MediaType.IMAGE : images.getMediaType();

if (images.getGames() != null) {
imagesEntity.games = GamesEntity.from(images.getGames());
Expand All @@ -34,6 +35,7 @@ public Images toModel() {
.id(this.getId())
.users(users == null ? null : users.toModel())
.games(games == null ? null : games.toModel())
.mediaType(MediaType.IMAGE)
.fileUrl(fileUrl)
.build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.games.balancegameback.infra.entity;

import com.games.balancegameback.domain.media.Links;
import com.games.balancegameback.domain.media.enums.MediaType;
import jakarta.persistence.*;
import lombok.Getter;

@Getter
@Entity
@DiscriminatorValue("LINK")
@Table(name = "links")
public class LinksEntity extends MediaEntity {

Expand All @@ -24,6 +24,7 @@ public static LinksEntity from(Links links) {
linksEntity.urls = links.getUrls();
linksEntity.startSec = links.getStartSec();
linksEntity.endSec = links.getEndSec();
linksEntity.mediaType = links.getMediaType() == null ? MediaType.LINK : links.getMediaType();

if (links.getGames() != null) {
linksEntity.games = GamesEntity.from(links.getGames());
Expand All @@ -39,6 +40,7 @@ public Links toModel() {
.urls(urls)
.startSec(startSec)
.endSec(endSec)
.mediaType(mediaType)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.games.balancegameback.infra.entity;

import com.games.balancegameback.domain.media.Media;
import com.games.balancegameback.domain.media.enums.MediaType;
import jakarta.persistence.*;
import lombok.Getter;
import org.springframework.data.annotation.LastModifiedDate;
Expand All @@ -10,14 +11,16 @@
@Getter
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "media_type", discriminatorType = DiscriminatorType.STRING)
@Table(name = "media")
public abstract class MediaEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false)
protected MediaType mediaType = MediaType.IMAGE;

@Column
@LastModifiedDate
private LocalDateTime updatedDate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.springframework.data.annotation.LastModifiedDate;

import java.time.LocalDateTime;
import java.util.UUID;

@Getter
@Entity
Expand Down Expand Up @@ -46,7 +45,7 @@ public class UsersEntity {

public static UsersEntity from(Users user) {
UsersEntity userEntity = new UsersEntity();
userEntity.uid = user.getUid() == null ? String.valueOf(UUID.randomUUID()) : user.getUid();
userEntity.uid = user.getUid();
userEntity.nickname = user.getNickname();
userEntity.email = user.getEmail();
userEntity.loginType = user.getLoginType();
Expand Down
Loading

0 comments on commit 95ef88e

Please sign in to comment.