Skip to content

Commit

Permalink
Remove :domain module
Browse files Browse the repository at this point in the history
  • Loading branch information
fornewid committed Feb 3, 2025
1 parent f0cf286 commit 2893bc1
Show file tree
Hide file tree
Showing 23 changed files with 173 additions and 122 deletions.
18 changes: 18 additions & 0 deletions core/datetime/src/main/java/soup/movie/datetime/DateHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

private val ZONE_SEOUL = ZoneId.of("Asia/Seoul")
fun currentTime(): LocalDateTime = LocalDateTime.now(ZONE_SEOUL)
Expand Down Expand Up @@ -52,3 +53,20 @@ fun LocalDate.MM_DD(): String {
fun LocalDate.YYYY_MM_DD(): String {
return format(DateTimeFormatter.ofPattern("yyyy.MM.dd"))
}

fun calculateDDay(openDate: LocalDate?, today: LocalDate): Long? {
return openDate?.let {
ChronoUnit.DAYS.between(today, it)
}
}

/**
* Valid format: YYYY.MM.DD
*/
fun String.toLocalDate(): LocalDate? = split(".").let {
return if (it.size == 3) {
LocalDate.of(it[0].toInt(), it[1].toInt(), it[2].toInt())
} else {
null
}
}
23 changes: 23 additions & 0 deletions core/resources/src/main/kotlin/soup/movie/resources/Resources.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright 2021 SOUP
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package soup.movie.resources

fun dDayStringResource(dDay: Long): String {
return when {
dDay <= 0 -> "NOW"
else -> "D-$dDay"
}
}
1 change: 1 addition & 0 deletions data/database/impl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ android {
dependencies {
implementation projects.core.kotlin
implementation projects.core.logger
implementation projects.core.datetime
implementation projects.data.model
implementation projects.data.database.api

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import soup.movie.data.database.impl.mapper.toMovie
import soup.movie.data.database.impl.mapper.toMovieEntity
import soup.movie.data.database.impl.mapper.toOpenDateAlarm
import soup.movie.data.database.impl.mapper.toOpenDateAlarmEntity
import soup.movie.datetime.today
import soup.movie.log.Logger
import soup.movie.model.MovieListModel
import soup.movie.model.MovieModel
Expand Down Expand Up @@ -73,8 +74,9 @@ class LocalDataSourceImpl @Inject constructor(
}

private fun getMovieListFlow(type: String): Flow<List<MovieModel>> {
val today = today()
return cacheDao.getMovieListByType(type)
.map { it.list.map { movieEntity -> movieEntity.toMovie() } }
.map { it.list.map { movieEntity -> movieEntity.toMovie(today = today) } }
.catch { emit(emptyList()) }
}

Expand All @@ -100,8 +102,9 @@ class LocalDataSourceImpl @Inject constructor(

private suspend fun getMovieListOf(type: String): List<MovieModel> {
return try {
val today = today()
cacheDao.findByType(type).list
.map { movieEntity -> movieEntity.toMovie() }
.map { movieEntity -> movieEntity.toMovie(today = today) }
} catch (t: Throwable) {
Logger.w(t)
emptyList()
Expand All @@ -118,8 +121,9 @@ class LocalDataSourceImpl @Inject constructor(
}

override fun getFavoriteMovieList(): Flow<List<MovieModel>> {
val today = today()
return favoriteMovieDao.getFavoriteMovieList().map {
it.map { favoriteMovieEntity -> favoriteMovieEntity.toMovie() }
it.map { favoriteMovieEntity -> favoriteMovieEntity.toMovie(today = today) }
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,34 @@ package soup.movie.data.database.impl.mapper
import soup.movie.data.database.impl.entity.FavoriteMovieEntity
import soup.movie.data.database.impl.entity.MovieEntity
import soup.movie.data.database.impl.entity.OpenDateAlarmEntity
import soup.movie.datetime.calculateDDay
import soup.movie.datetime.toLocalDate
import soup.movie.model.MovieModel
import soup.movie.model.OpenDateAlarmModel
import soup.movie.model.TheaterRatingsModel
import java.time.LocalDate

fun MovieEntity.toMovie() = MovieModel(
id, score, title, posterUrl, openDate, isNow, age, nationFilter, genres, boxOffice,
TheaterRatingsModel(cgv, lotte, megabox),
)
fun MovieEntity.toMovie(today: LocalDate): MovieModel {
val openLocalDate = openDate.toLocalDate()
return MovieModel(
id = id,
score = score,
title = title,
posterUrl = posterUrl,
openDate = openDate,
isNow = isNow,
age = age,
nationFilter = nationFilter,
genres = genres,
boxOffice = boxOffice,
theater = TheaterRatingsModel(cgv, lotte, megabox),
openLocalDate = openLocalDate,
dDay = if (!isNow) calculateDDay(openDate = openLocalDate, today = today) else null,
)
}

fun FavoriteMovieEntity.toMovie(): MovieModel {
fun FavoriteMovieEntity.toMovie(today: LocalDate): MovieModel {
val openLocalDate = openDate.toLocalDate()
return MovieModel(
id = id,
score = score,
Expand All @@ -40,7 +58,15 @@ fun FavoriteMovieEntity.toMovie(): MovieModel {
genres = genres,
boxOffice = boxOffice,
theater = TheaterRatingsModel(cgv, lotte, megabox),
openLocalDate = openLocalDate,
dDay = if (!isNow) calculateDDay(openDate = openLocalDate, today = today) else null,
)
}

fun OpenDateAlarmEntity.toOpenDateAlarm() = OpenDateAlarmModel(movieId, title, openDate)
fun OpenDateAlarmEntity.toOpenDateAlarm(): OpenDateAlarmModel {
return OpenDateAlarmModel(
movieId = movieId,
title = title,
openDate = openDate,
)
}
4 changes: 4 additions & 0 deletions data/model/src/main/java/soup/movie/model/MovieModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package soup.movie.model

import java.time.LocalDate

/**
* @param genres 장르
*/
Expand All @@ -30,6 +32,8 @@ data class MovieModel(
val genres: List<String>?,
val boxOffice: Int?,
val theater: TheaterRatingsModel,
val openLocalDate: LocalDate?,
val dDay: Long?,
) {

val isPlan: Boolean = !isNow
Expand Down
1 change: 1 addition & 0 deletions data/network/api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ android {
}

dependencies {
implementation projects.core.datetime
implementation projects.data.model
implementation libs.kotlin.stdlib
implementation libs.kotlin.serialization
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@ package soup.movie.data.network.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import soup.movie.datetime.calculateDDay
import soup.movie.datetime.toLocalDate
import soup.movie.model.MovieDetailModel
import soup.movie.model.MovieModel
import soup.movie.model.TheaterRatingsModel
import java.time.LocalDate

/**
* @param genres 장르
Expand Down Expand Up @@ -59,7 +62,8 @@ class MovieDetailResponse(
val trailers: List<TrailerResponse>? = null,
)

fun MovieDetailResponse.asModel(): MovieDetailModel {
fun MovieDetailResponse.asModel(today: LocalDate): MovieDetailModel {
val openLocalDate = openDate.toLocalDate()
return MovieDetailModel(
movie = MovieModel(
id = id,
Expand All @@ -77,6 +81,8 @@ fun MovieDetailResponse.asModel(): MovieDetailModel {
lotte = lotte?.star,
megabox = megabox?.star,
),
openLocalDate = openLocalDate,
dDay = if (!isNow) calculateDDay(openDate = openLocalDate, today = today) else null,
),

boxOffice = boxOffice?.asModel(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,17 @@ package soup.movie.data.network.response

import kotlinx.serialization.Serializable
import soup.movie.model.MovieListModel
import java.time.LocalDate

@Serializable
class MovieListResponse(
val lastUpdateTime: Long,
val list: List<MovieResponse> = emptyList(),
)

fun MovieListResponse.asModel(): MovieListModel {
fun MovieListResponse.asModel(today: LocalDate): MovieListModel {
return MovieListModel(
lastUpdateTime = lastUpdateTime,
list = list.map { it.asModel() },
list = list.map { it.asModel(today = today) },
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ package soup.movie.data.network.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import soup.movie.datetime.calculateDDay
import soup.movie.datetime.toLocalDate
import soup.movie.model.MovieModel
import java.time.LocalDate

@Serializable
class MovieResponse(
Expand All @@ -35,7 +38,8 @@ class MovieResponse(
val theater: TheaterRatingsResponse,
)

fun MovieResponse.asModel(): MovieModel {
fun MovieResponse.asModel(today: LocalDate): MovieModel {
val openLocalDate = openDate.toLocalDate()
return MovieModel(
id = id,
score = score,
Expand All @@ -48,5 +52,7 @@ fun MovieResponse.asModel(): MovieModel {
genres = genres,
boxOffice = boxOffice,
theater = theater.asModel(),
openLocalDate = openLocalDate,
dDay = if (!isNow) calculateDDay(openDate = openLocalDate, today = today) else null,
)
}
1 change: 1 addition & 0 deletions data/repository/impl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ android {
dependencies {
implementation projects.core.kotlin
implementation projects.core.logger
implementation projects.core.datetime
implementation projects.data.model
implementation projects.data.network.api
implementation projects.data.database.api
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import soup.movie.data.network.RemoteDataSource
import soup.movie.data.network.response.asModel
import soup.movie.data.repository.MovieRepository
import soup.movie.data.repository.impl.util.SearchHelper
import soup.movie.datetime.today
import soup.movie.log.Logger
import soup.movie.model.MovieDetailModel
import soup.movie.model.MovieModel
Expand Down Expand Up @@ -54,7 +55,7 @@ class MovieRepositoryImpl @Inject constructor(
true
}
if (isStaleness) {
local.saveNowMovieList(remote.getNowMovieList().asModel())
local.saveNowMovieList(remote.getNowMovieList().asModel(today = today()))
}
}

Expand All @@ -78,14 +79,14 @@ class MovieRepositoryImpl @Inject constructor(
true
}
if (isStaleness) {
local.savePlanMovieList(remote.getPlanMovieList().asModel())
local.savePlanMovieList(remote.getPlanMovieList().asModel(today = today()))
}
}
}

override suspend fun getMovieDetail(movieId: String): MovieDetailModel {
return withContext(ioDispatcher) {
remote.getMovieDetail(movieId).asModel()
remote.getMovieDetail(movieId).asModel(today = today())
}
}

Expand Down
1 change: 0 additions & 1 deletion domain/.gitignore

This file was deleted.

17 changes: 0 additions & 17 deletions domain/build.gradle

This file was deleted.

1 change: 0 additions & 1 deletion domain/src/main/AndroidManifest.xml

This file was deleted.

56 changes: 0 additions & 56 deletions domain/src/main/java/soup/movie/domain/movie/MovieExt.kt

This file was deleted.

1 change: 0 additions & 1 deletion feature/detail/impl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ dependencies {
implementation projects.core.datetime
implementation projects.data.repository.api
implementation projects.data.model
implementation projects.domain
implementation projects.feature.home.api
implementation projects.feature.detail.api

Expand Down
Loading

0 comments on commit 2893bc1

Please sign in to comment.