Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] MyPageService API 연동 #60

Merged
merged 9 commits into from
Jan 22, 2025
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

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.android.bbangzip.data.datasource.remote

import org.android.bbangzip.data.dto.response.ResponseBadgeNameDto
import org.android.bbangzip.data.service.MyPageService
import org.android.bbangzip.data.util.base.BaseResponse
import javax.inject.Inject

class BadgesNameRemoteDataSource
@Inject
constructor(
private val myPageService: MyPageService,
) {
suspend fun getBadgeDetail(badgeName: String): BaseResponse<ResponseBadgeNameDto?> = myPageService.getBadgeDetail(badgeName = badgeName)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.android.bbangzip.data.datasource.remote

import org.android.bbangzip.data.dto.response.ResponseBadgesDto
import org.android.bbangzip.data.service.MyPageService
import org.android.bbangzip.data.util.base.BaseResponse
import javax.inject.Inject

class BadgesRemoteDataSource
@Inject
constructor(
private val myPageService: MyPageService,
) {
suspend fun getBadgeCategoryList(): BaseResponse<ResponseBadgesDto?> = myPageService.getBadgeCategoryList()
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package org.android.bbangzip.data.datasource.remote

import org.android.bbangzip.data.dto.request.RequestMarkDoneDto
import org.android.bbangzip.data.dto.request.RequestPieceIdDto
import org.android.bbangzip.data.dto.response.ResponseMarkDoneDto
import org.android.bbangzip.data.dto.response.ResponseTodayOrdersDto
import org.android.bbangzip.data.dto.response.ResponseTodoDto
import org.android.bbangzip.data.service.PieceService
import org.android.bbangzip.data.util.base.BaseResponse
import javax.inject.Inject

class PieceRemoteDataSource
@Inject
constructor(
private val pieceService: PieceService,
) {
suspend fun postAddTodoItemList(
requestPieceIdDto: RequestPieceIdDto,
): BaseResponse<Unit?> = pieceService.postAddTodoItemList(requestPieceIdDto = requestPieceIdDto)

suspend fun postDeletedItemList(
requestPieceIdDto: RequestPieceIdDto,
): BaseResponse<Unit?> = pieceService.postDeletedItemList(requestPieceIdDto = requestPieceIdDto)

suspend fun postCompleteCardId(
pieceId: Int,
requestMarkDoneDto: RequestMarkDoneDto,
): BaseResponse<ResponseMarkDoneDto?> = pieceService.postCompleteCardId(pieceId = pieceId, requestMarkDoneDto = requestMarkDoneDto)

suspend fun postUnCompleteCardId(
pieceId: Int,
requestMarkDoneDto: RequestMarkDoneDto,
): BaseResponse<Unit?> = pieceService.postUnCompleteCardId(pieceId = pieceId, requestMarkDoneDto = requestMarkDoneDto)

suspend fun getTodoInfo(
area: String,
year: Int,
semester: String,
sortOption: String,
): BaseResponse<ResponseTodayOrdersDto?> =
pieceService.getTodoInfo(
area = area,
year = year,
semester = semester,
sortOption = sortOption,
)

suspend fun getAddTodolist(
year: Int,
semester: String,
sortOption: String,
): BaseResponse<ResponseTodoDto?> =
pieceService.getAddTodoList(
year = year,
semester = semester,
sortOption = sortOption,
)
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.android.bbangzip.data.dto.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.android.bbangzip.domain.model.BadgeDetailEntity

@Serializable
data class ResponseBadgeNameDto(
@SerialName("achievementCondition")
val achievementCondition: String,
@SerialName("badgeImage")
val badgeImage: String,
@SerialName("badgeIsLocked")
val badgeIsLocked: Boolean,
@SerialName("badgeName")
val badgeName: String,
@SerialName("hashTags")
val hashTags: List<String>,
@SerialName("reward")
val reward: Int,
) {
fun toBadgeDetailEntity(): BadgeDetailEntity =
BadgeDetailEntity(
achievementCondition = achievementCondition,
badgeImage = badgeImage,
badgeIsLocked = badgeIsLocked,
badgeName = badgeName,
hashTags = hashTags,
reward = reward,
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.android.bbangzip.data.dto.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.android.bbangzip.domain.model.BadgeCategoryEntity
import org.android.bbangzip.domain.model.BadgeCategoryListEntity

@Serializable
data class ResponseBadgesDto(
@SerialName("badgeList")
val badgeList: List<BadgeDetail>,
) {
fun toBadgeCategoryList(): BadgeCategoryListEntity =
badgeList.map { data ->
data.toBadgeCategoryEntity()
}.let {
BadgeCategoryListEntity(it)
}
}

@Serializable
data class BadgeDetail(
@SerialName("badgeCategory")
val badgeCategory: String,
@SerialName("badgeImage")
val badgeImage: String,
@SerialName("badgeIsLocked")
val badgeIsLocked: Boolean,
@SerialName("badgeName")
val badgeName: String,
) {
fun toBadgeCategoryEntity(): BadgeCategoryEntity =
BadgeCategoryEntity(
badgeCategory = badgeCategory,
badgeImage = badgeImage,
badgeIsLocked = badgeIsLocked,
badgeName = badgeName,
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.android.bbangzip.data.repositoryImpl

import org.android.bbangzip.data.datasource.remote.BadgesNameRemoteDataSource
import org.android.bbangzip.data.datasource.remote.BadgesRemoteDataSource
import org.android.bbangzip.domain.model.BadgeCategoryListEntity
import org.android.bbangzip.domain.model.BadgeDetailEntity
import org.android.bbangzip.domain.repository.remote.MyPageRepository
import javax.inject.Inject

class MyPageRepositoryImpl
@Inject
constructor(
private val badgesNameRemoteDataSource: BadgesNameRemoteDataSource,
private val badgesRemoteDataSource: BadgesRemoteDataSource,
) : MyPageRepository {
override suspend fun getBadgeCategoryList(): Result<BadgeCategoryListEntity> =
runCatching {
val response = badgesRemoteDataSource.getBadgeCategoryList()

val responseData = response.data ?: throw IllegalStateException(response.message ?: "Null Error")

responseData.toBadgeCategoryList()
}

override suspend fun getBadgeDetail(badgeName: String): Result<BadgeDetailEntity> =
runCatching {
val response = badgesNameRemoteDataSource.getBadgeDetail(badgeName)

val responseData = response.data ?: throw IllegalStateException(response.message ?: "Null Error")

responseData.toBadgeDetailEntity()
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
package org.android.bbangzip.data.repositoryImpl

import org.android.bbangzip.data.datasource.remote.AssignToTodayRemoteDataSource
import org.android.bbangzip.data.datasource.remote.HideRemoteDataSource
import org.android.bbangzip.data.datasource.remote.MarkDoneRemoteDataStore
import org.android.bbangzip.data.datasource.remote.MarkUnDoneRemoteDataStore
import org.android.bbangzip.data.datasource.remote.TodayOrdersRemoteDataSource
import org.android.bbangzip.data.datasource.remote.TodoRemoteDataSource
import org.android.bbangzip.data.datasource.remote.PieceRemoteDataSource
import org.android.bbangzip.data.dto.request.RequestMarkDoneDto
import org.android.bbangzip.data.dto.request.RequestPieceIdDto
import org.android.bbangzip.domain.model.BadgeCardListEntity
Expand All @@ -16,12 +11,7 @@ import javax.inject.Inject
class PieceRepositoryImpl
@Inject
constructor(
private val todayOrdersRemoteDateSource: TodayOrdersRemoteDataSource,
private val todoRemoteDataSource: TodoRemoteDataSource,
private val hideRemoteDataSource: HideRemoteDataSource,
private val assignToTodayRemoteDataSource: AssignToTodayRemoteDataSource,
private val markDoneRemoteDataStore: MarkDoneRemoteDataStore,
private val markUnDoneRemoteDataStore: MarkUnDoneRemoteDataStore,
private val pieceRemoteDataSource: PieceRemoteDataSource,
) : PieceRepository {
override suspend fun getTodoInfo(
area: String,
Expand All @@ -31,7 +21,7 @@ class PieceRepositoryImpl
): Result<ToDoInfoEntity> =
runCatching {
val response =
todayOrdersRemoteDateSource.getTodoInfo(
pieceRemoteDataSource.getTodoInfo(
area = area,
year = year,
semester = semester,
Expand All @@ -50,7 +40,7 @@ class PieceRepositoryImpl
): Result<ToDoInfoEntity> =
runCatching {
val response =
todoRemoteDataSource.getAddTodolist(
pieceRemoteDataSource.getAddTodolist(
year = year,
semester = semester,
sortOption = sortOption,
Expand All @@ -64,7 +54,7 @@ class PieceRepositoryImpl
override suspend fun postDeletedItemList(requestPieceIdDto: RequestPieceIdDto): Result<Unit> =
runCatching {
val response =
hideRemoteDataSource.postDeletedItemList(
pieceRemoteDataSource.postDeletedItemList(
requestPieceIdDto = requestPieceIdDto,
)
response
Expand All @@ -73,7 +63,7 @@ class PieceRepositoryImpl
override suspend fun postAddTodoItemList(requestPieceIdDto: RequestPieceIdDto): Result<Unit> =
runCatching {
val response =
assignToTodayRemoteDataSource.postDeletedItemList(
pieceRemoteDataSource.postAddTodoItemList(
requestPieceIdDto = requestPieceIdDto,
)
response
Expand All @@ -85,7 +75,7 @@ class PieceRepositoryImpl
): Result<BadgeCardListEntity> =
runCatching {
val response =
markDoneRemoteDataStore.postCompleteCardId(
pieceRemoteDataSource.postCompleteCardId(
pieceId = pieceId,
requestMarkDoneDto = requestMarkDoneDto,
)
Expand All @@ -99,7 +89,7 @@ class PieceRepositoryImpl
): Result<Unit> =
runCatching {
val response =
markUnDoneRemoteDataStore.postUnCompleteCardId(
pieceRemoteDataSource.postUnCompleteCardId(
pieceId = pieceId,
requestMarkDoneDto = requestMarkDoneDto,
)
Expand Down
Loading
Loading