Skip to content

Commit

Permalink
Merge pull request #72 from team-pofo/feat/search-projects
Browse files Browse the repository at this point in the history
feat: 프로젝트 검색 기능 추가
  • Loading branch information
sukjuhong authored Dec 31, 2024
2 parents 77cb171 + 5c77b66 commit 4d4f1e8
Show file tree
Hide file tree
Showing 27 changed files with 453 additions and 2,952 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package org.pofo.api.controller

import org.pofo.api.dto.CreateProjectRequest
import org.pofo.api.dto.UpdateProjectRequest
import org.pofo.api.dto.ProjectCreateRequest
import org.pofo.api.dto.ProjectListResponse
import org.pofo.api.dto.ProjectResponse
import org.pofo.api.dto.ProjectSearchRequest
import org.pofo.api.dto.ProjectUpdateRequest
import org.pofo.api.security.PrincipalDetails
import org.pofo.domain.rds.domain.project.Project
import org.pofo.domain.rds.domain.project.ProjectCategory
import org.pofo.domain.rds.domain.project.ProjectList
import org.pofo.domain.rds.domain.project.ProjectStack
import org.springframework.graphql.data.method.annotation.Argument
import org.springframework.graphql.data.method.annotation.MutationMapping
import org.springframework.graphql.data.method.annotation.QueryMapping
Expand All @@ -21,67 +20,38 @@ class ProjectController(
@QueryMapping
fun projectById(
@Argument projectId: Long,
): Project = projectService.findProjectById(projectId)
): ProjectResponse = projectService.findProjectById(projectId)

@QueryMapping
fun getAllProjectsByPagination(
@Argument cursor: Long?,
@Argument size: Int,
): ProjectList = projectService.getAllProjectsByPagination(size, cursor ?: 0)
): ProjectListResponse = projectService.getAllProjectsByPagination(size, cursor ?: 0)

@PreAuthorize("isAuthenticated()")
@MutationMapping
fun createProject(
@Argument title: String,
@Argument bio: String?,
@Argument urls: List<String>?,
@Argument keyImageIndex: Int?,
@Argument imageUrls: List<String>?,
@Argument content: String,
@Argument category: ProjectCategory,
@Argument stacks: List<ProjectStack>?,
@Argument projectCreateRequest: ProjectCreateRequest,
@AuthenticationPrincipal principalDetails: PrincipalDetails,
): Project =
): ProjectResponse =
projectService.createProject(
CreateProjectRequest(
title,
bio,
urls,
keyImageIndex,
imageUrls,
content,
category,
stacks,
principalDetails.jwtTokenData.userId,
),
projectCreateRequest,
principalDetails.jwtTokenData.userId,
)

@PreAuthorize("isAuthenticated()")
@MutationMapping
fun updateProject(
@Argument projectId: Long,
@Argument title: String?,
@Argument bio: String?,
@Argument urls: List<String>?,
@Argument keyImageIndex: Int,
@Argument imageUrls: List<String>?,
@Argument content: String?,
@Argument category: ProjectCategory?,
@Argument stacks: List<ProjectStack>?,
@Argument projectUpdateRequest: ProjectUpdateRequest,
@AuthenticationPrincipal principalDetails: PrincipalDetails,
): Project =
): ProjectResponse =
projectService.updateProject(
UpdateProjectRequest(
projectId,
title,
bio,
urls,
keyImageIndex,
imageUrls,
content,
category,
stacks,
principalDetails.jwtTokenData.userId,
),
projectUpdateRequest,
principalDetails.jwtTokenData.userId,
)

@QueryMapping
fun searchProject(
@Argument projectSearchRequest: ProjectSearchRequest,
): ProjectListResponse = projectService.searchProject(projectSearchRequest)
}
16 changes: 0 additions & 16 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/CreateProjectRequest.kt

This file was deleted.

15 changes: 15 additions & 0 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/ProjectCreateRequest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.pofo.api.dto

import org.pofo.domain.rds.domain.project.ProjectCategory

data class ProjectCreateRequest(
val title: String,
val bio: String? = null,
val urls: List<String>? = null,
val keyImageIndex: Int? = null,
val imageUrls: List<String>? = null,
val content: String,
val category: ProjectCategory? = null,
val stackNames: List<String>? = null,
val isApproved: Boolean = false,
)
19 changes: 19 additions & 0 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/ProjectListResponse.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.pofo.api.dto

import org.pofo.domain.rds.domain.project.Project
import org.springframework.data.domain.Slice

data class ProjectListResponse(
val projects: List<ProjectResponse>,
val hasNext: Boolean,
val count: Int,
) {
companion object {
fun from(projectSlice: Slice<Project>): ProjectListResponse =
ProjectListResponse(
projectSlice.content.map { ProjectResponse.from(it) },
projectSlice.hasNext(),
projectSlice.count(),
)
}
}
36 changes: 36 additions & 0 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/ProjectResponse.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.pofo.api.dto

import org.pofo.domain.rds.domain.project.Project

data class ProjectResponse(
val id: Long,
val title: String,
val bio: String?,
val urls: List<String>?,
val imageUrls: List<String>?,
val keyImageIndex: Int,
val content: String,
val isApproved: Boolean,
val likes: Int,
val category: String?,
val stacks: List<String>?,
val authorName: String,
) {
companion object {
fun from(project: Project): ProjectResponse =
ProjectResponse(
project.id!!,
project.title,
project.bio,
project.urls,
project.imageUrls,
project.keyImageIndex,
project.content,
project.isApproved,
project.likes,
project.category?.name,
project.stacks.map { it.stack.name },
project.author.email,
)
}
}
11 changes: 11 additions & 0 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/ProjectSearchRequest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.pofo.api.dto

import org.pofo.domain.rds.domain.project.ProjectCategory

data class ProjectSearchRequest(
val title: String?,
val category: ProjectCategory?,
val stackNames: List<String>?,
val page: Int = 0,
val size: Int = 30,
)
15 changes: 15 additions & 0 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/ProjectUpdateRequest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package org.pofo.api.dto

import org.pofo.domain.rds.domain.project.ProjectCategory

data class ProjectUpdateRequest(
val projectId: Long,
val title: String? = null,
val bio: String? = null,
val urls: List<String>? = null,
val imageUrls: List<String>? = null,
val keyImageIndex: Int? = null,
val content: String? = null,
val category: ProjectCategory? = null,
val stackNames: List<String>? = null,
)
17 changes: 0 additions & 17 deletions pofo-api/src/main/kotlin/org/pofo/api/dto/UpdateProjectRequest.kt

This file was deleted.

Loading

0 comments on commit 4d4f1e8

Please sign in to comment.