Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@
package org.sopt.official.data.appjamtamp.datasource

import org.sopt.official.data.appjamtamp.dto.response.AppjamtampMissionsResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampPostStampResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampStampResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop10MissionScoreResponse
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop3RecentMissionResponse
import org.sopt.official.data.appjamtamp.dto.AppjamtampMissionsResponseDto

interface AppjamtampDataSource {
suspend fun getAppjamtampMissions(
teamNumber: String? = null,
isCompleted: Boolean? = null
): AppjamtampMissionsResponseDto

suspend fun getAppjamtampStamp(
missionId: Int,
nickname: String
): AppjamtampStampResponseDto

suspend fun postAppjamtampStamp(
missionId: Int,
image: String,
contents: String,
activityDate: String
): AppjamtampPostStampResponseDto

suspend fun getAppjamtampMissionTop3(size: Int): AppjamtampTop3RecentMissionResponse

suspend fun getAppjamtampMissionRanking(size: Int): AppjamtampTop10MissionScoreResponse
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package org.sopt.official.data.appjamtamp.datasourceimpl

import javax.inject.Inject
import org.sopt.official.data.appjamtamp.datasource.AppjamtampDataSource
import org.sopt.official.data.appjamtamp.dto.request.AppjamtampPostStampRequestDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampMissionsResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampPostStampResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampStampResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop10MissionScoreResponse
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop3RecentMissionResponse
import org.sopt.official.data.appjamtamp.dto.AppjamtampMissionsResponseDto
import org.sopt.official.data.appjamtamp.service.AppjamtampService
import javax.inject.Inject

internal class AppjamtampDataSourceImpl @Inject constructor(
private val appjamtampService: AppjamtampService
Expand All @@ -16,6 +19,25 @@ internal class AppjamtampDataSourceImpl @Inject constructor(
): AppjamtampMissionsResponseDto =
appjamtampService.getAppjamtampMissions(teamNumber, isCompleted)

override suspend fun getAppjamtampStamp(
missionId: Int,
nickname: String
): AppjamtampStampResponseDto = appjamtampService.getAppjamtampStamp(missionId, nickname)

override suspend fun postAppjamtampStamp(
missionId: Int,
image: String,
contents: String,
activityDate: String
): AppjamtampPostStampResponseDto = appjamtampService.postAppjamtampStamp(
AppjamtampPostStampRequestDto(
missionId = missionId,
image = image,
contents = contents,
activityDate = activityDate
)
)

override suspend fun getAppjamtampMissionTop3(size: Int): AppjamtampTop3RecentMissionResponse =
appjamtampService.getAppjamtampMissionTop3(size = size)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.sopt.official.data.appjamtamp.dto.request

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class AppjamtampPostStampRequestDto(
@SerialName("missionId")
val missionId: Int,
@SerialName("image")
val image: String,
@SerialName("contents")
val contents: String,
@SerialName("activityDate")
val activityDate: String
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.sopt.official.data.appjamtamp.dto
package org.sopt.official.data.appjamtamp.dto.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.sopt.official.data.appjamtamp.dto.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class AppjamtampPostStampResponseDto(
@SerialName("id")
val id: Int,
@SerialName("contents")
val contents: String,
@SerialName("images")
val images: List<String>,
@SerialName("activityDate")
val activityDate: String,
@SerialName("createdAt")
val createdAt: String,
@SerialName("updatedAt")
val updatedAt: String,
@SerialName("missionId")
val missionId: Int,
@SerialName("clapCount")
val clapCount: Int,
@SerialName("viewCount")
val viewCount: Int
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.sopt.official.data.appjamtamp.dto.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class AppjamtampStampResponseDto(
@SerialName("id")
val id: Int,
@SerialName("contents")
val contents: String,
@SerialName("images")
val images: List<String>,
@SerialName("activityDate")
val activityDate: String,
@SerialName("createdAt")
val createdAt: String,
@SerialName("updatedAt")
val updatedAt: String,
@SerialName("missionId")
val missionId: Int,
@SerialName("teamNumber")
val teamNumber: String,
@SerialName("teamName")
val teamName: String,
@SerialName("ownerNickname")
val ownerNickname: String,
@SerialName("ownerProfileImage")
val ownerProfileImage: String?,
@SerialName("clapCount")
val clapCount: Int,
@SerialName("viewCount")
val viewCount: Int,
@SerialName("myClapCount")
val myClapCount: Int,
@SerialName("isMine")
val isMine: Boolean
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.sopt.official.data.appjamtamp.mapper

import org.sopt.official.data.appjamtamp.dto.response.AppjamtampStampResponseDto
import org.sopt.official.domain.appjamtamp.entity.AppjamtampStampEntity

internal fun AppjamtampStampResponseDto.toEntity(): AppjamtampStampEntity =
AppjamtampStampEntity(
stampId = this.id,
contents = this.contents,
images = this.images,
activityDate = this.activityDate,
createdAt = this.createdAt,
updatedAt = this.updatedAt,
missionId = this.missionId,
teamNumber = this.teamNumber,
teamName = this.teamName,
ownerNickname = this.ownerNickname,
ownerProfileImage = this.ownerProfileImage,
clapCount = this.clapCount,
viewCount = this.viewCount,
myClapCount = this.myClapCount,
isMine = this.isMine
)
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package org.sopt.official.data.appjamtamp.repository

import javax.inject.Inject
import org.sopt.official.common.coroutines.suspendRunCatching
import org.sopt.official.data.appjamtamp.datasource.AppjamtampDataSource
import org.sopt.official.data.appjamtamp.mapper.toDomain
import org.sopt.official.data.appjamtamp.mapper.toEntity
import org.sopt.official.domain.appjamtamp.entity.AppjamtampMissionListEntity
import org.sopt.official.domain.appjamtamp.entity.AppjamtampMissionScore
import org.sopt.official.domain.appjamtamp.entity.AppjamtampRecentMission
import org.sopt.official.domain.appjamtamp.entity.AppjamtampStampEntity
import org.sopt.official.domain.appjamtamp.repository.AppjamtampRepository
import javax.inject.Inject

internal class AppjamtampRepositoryImpl @Inject constructor(
private val appjamtampDataSource: AppjamtampDataSource
Expand All @@ -19,6 +21,27 @@ internal class AppjamtampRepositoryImpl @Inject constructor(
appjamtampDataSource.getAppjamtampMissions(teamNumber, isCompleted).toEntity()
}

override suspend fun getAppjamtampStamp(
missionId: Int,
nickname: String
): Result<AppjamtampStampEntity> = suspendRunCatching {
appjamtampDataSource.getAppjamtampStamp(missionId, nickname).toEntity()
}

override suspend fun postAppjamtampStamp(
missionId: Int,
image: String,
contents: String,
activityDate: String
): Result<Unit> = suspendRunCatching {
appjamtampDataSource.postAppjamtampStamp(
missionId = missionId,
image = image,
contents = contents,
activityDate = activityDate
)
}

override suspend fun getAppjamtampMissionRanking(
size: Int
): Result<List<AppjamtampMissionScore>> = suspendRunCatching {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,33 @@
package org.sopt.official.data.appjamtamp.service

import org.sopt.official.data.appjamtamp.dto.AppjamtampMissionsResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop3RecentMissionResponse
import org.sopt.official.data.appjamtamp.dto.request.AppjamtampPostStampRequestDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampMissionsResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampPostStampResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampStampResponseDto
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop10MissionScoreResponse
import org.sopt.official.data.appjamtamp.dto.response.AppjamtampTop3RecentMissionResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Query

interface AppjamtampService {
@GET("appjamtamp/mission")
suspend fun getAppjamtampMissions(
@Query("teamNumber") teamNumber: String? = null,
@Query("isCompleted") isCompleted : Boolean? = null
) : AppjamtampMissionsResponseDto
@Query("isCompleted") isCompleted: Boolean? = null
): AppjamtampMissionsResponseDto

@GET("appjamtamp/stamp")
suspend fun getAppjamtampStamp(
@Query("missionId") missionId: Int,
@Query("nickname") nickname: String
): AppjamtampStampResponseDto

@POST("appjamtamp/stamp")
suspend fun postAppjamtampStamp(
@Body body: AppjamtampPostStampRequestDto
): AppjamtampPostStampResponseDto

/**
* 앱잼에 참여하는 전체 팀의 득점 랭킹 조회
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.sopt.official.domain.appjamtamp.entity

data class AppjamtampStampEntity(
val stampId: Int,
val contents: String,
val images: List<String>,
val activityDate: String,
val createdAt: String,
val updatedAt: String,
val missionId: Int,
val teamNumber: String,
val teamName: String,
val ownerNickname: String,
val ownerProfileImage: String?,
val clapCount: Int,
val viewCount: Int,
val myClapCount: Int,
val isMine: Boolean
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,30 @@ package org.sopt.official.domain.appjamtamp.repository
import org.sopt.official.domain.appjamtamp.entity.AppjamtampMissionListEntity
import org.sopt.official.domain.appjamtamp.entity.AppjamtampMissionScore
import org.sopt.official.domain.appjamtamp.entity.AppjamtampRecentMission
import org.sopt.official.domain.appjamtamp.entity.AppjamtampStampEntity

interface AppjamtampRepository {
suspend fun getAppjamtampMissions(
teamNumber: String? = null,
isCompleted: Boolean? = null
): Result<AppjamtampMissionListEntity>

suspend fun getAppjamtampStamp(
missionId: Int,
nickname: String
): Result<AppjamtampStampEntity>

suspend fun postAppjamtampStamp(
missionId: Int,
image: String,
contents: String,
activityDate: String
): Result<Unit>

suspend fun getAppjamtampMissionRanking(
size: Int
): Result<List<AppjamtampMissionScore>>

suspend fun getAppjamtampMissionTop3(
size: Int
): Result<List<AppjamtampRecentMission>>
Expand Down
Loading