diff --git a/.github/workflows/pr_builder.yml b/.github/workflows/pr_builder.yml index b5f9928c..28dec77f 100644 --- a/.github/workflows/pr_builder.yml +++ b/.github/workflows/pr_builder.yml @@ -28,6 +28,9 @@ jobs: java-version: '11' distribution: 'temurin' cache: gradle + + - name: Add google-services.json + run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json - name: Grant execute permission for gradlew run: chmod +x gradlew diff --git a/.gitignore b/.gitignore index f59efd2c..59ad039f 100644 --- a/.gitignore +++ b/.gitignore @@ -78,7 +78,7 @@ captures/ *.keystore # Google Services (e.g. APIs or Firebase) -# google-services.json +google-services.json # Android Patch gen-external-apklibs diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9d53afb2..331c634e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,6 +6,7 @@ plugins { kotlin("kapt") id("dagger.hilt.android.plugin") id("org.jlleitschuh.gradle.ktlint") version "10.3.0" + id("com.google.gms.google-services") } android { @@ -96,6 +97,15 @@ dependencies { implementation(gson) implementation(retrofit2) implementation(retrofit2Converter) + implementation(roomRuntime) + implementation(roomKtx) + annotationProcessor(roomCompiler) + kapt(roomKapComplier) + } + FirebaseDependencies.run { + implementation(platform(FirebaseDependencies.firebaseBom)) + implementation(FirebaseDependencies.firebaseAnalytics) + implementation(FirebaseDependencies.firebaseAuth) } } diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/JjbaksaApp.kt b/app/src/main/java/com/jjbaksa/jjbaksa/JjbaksaApp.kt index 8a6d351f..0586d38d 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/JjbaksaApp.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/JjbaksaApp.kt @@ -2,12 +2,39 @@ package com.jjbaksa.jjbaksa import android.app.Application import com.kakao.sdk.common.KakaoSdk +import android.content.Context +import android.content.pm.ApplicationInfo +import android.content.pm.PackageManager import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class JjbaksaApp : Application() { + val appContext: Context = this + val isDebug + get() = isDebug(appContext) + override fun onCreate() { super.onCreate() KakaoSdk.init(this, BuildConfig.kakao_native_app_key) } + + /** + * 디버그모드인지 확인하는 함수 + */ + private fun isDebug(context: Context): Boolean { + var debuggable = false + val pm: PackageManager = context.packageManager + try { + val appinfo = pm.getApplicationInfo(context.packageName, 0) + debuggable = 0 != appinfo.flags and ApplicationInfo.FLAG_DEBUGGABLE + } catch (e: PackageManager.NameNotFoundException) { + } + + return debuggable + } + companion object { + lateinit var instance: JjbaksaApp + private set + } } + diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/DataBaseModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/DataBaseModule.kt new file mode 100644 index 00000000..02e28728 --- /dev/null +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/DataBaseModule.kt @@ -0,0 +1,30 @@ +package com.jjbaksa.jjbaksa.di + +import android.content.Context +import androidx.room.Room +import com.jjbaksa.data.database.AppDatabase +import com.jjbaksa.data.database.UserDao +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object DataBaseModule { + @Provides + @Singleton + fun provideRoomDataBase(@ApplicationContext context: Context): AppDatabase { + return Room + .databaseBuilder(context, AppDatabase::class.java, "MyExoPlayer.db") + .allowMainThreadQueries() + .build() + } + @Provides + @Singleton + fun provideVideoDao(appDatabase: AppDatabase): UserDao { + return appDatabase.userDao() + } +} diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt new file mode 100644 index 00000000..233442cf --- /dev/null +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt @@ -0,0 +1,27 @@ +package com.jjbaksa.jjbaksa.di + +import com.jjbaksa.data.api.AuthApi +import com.jjbaksa.data.api.NoAuthApi +import com.jjbaksa.data.database.UserDao +import com.jjbaksa.data.datasource.local.UserLocalDataSource +import com.jjbaksa.data.datasource.remote.UserRemoteDataSource +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object DataSourceModule { + @Provides + @Singleton + fun provideUserRemoteDataSource(authApi: AuthApi, noAuthApi: NoAuthApi): UserRemoteDataSource { + return UserRemoteDataSource(authApi, noAuthApi) + } + @Provides + @Singleton + fun provideLocalDataSource(userDao: UserDao): UserLocalDataSource { + return UserLocalDataSource(userDao) + } +} diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt new file mode 100644 index 00000000..f16ca33f --- /dev/null +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/NetworkModule.kt @@ -0,0 +1,186 @@ +package com.jjbaksa.jjbaksa.di + +import com.jjbaksa.data.BASE_URL +import com.jjbaksa.data.api.AuthApi +import com.jjbaksa.data.api.NoAuthApi +import com.jjbaksa.jjbaksa.JjbaksaApp +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import java.util.concurrent.TimeUnit +import javax.inject.Qualifier +import javax.inject.Singleton + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class AUTH + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class NOAUTH + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class REFRESH + +@Module +@InstallIn(SingletonComponent::class) +object NetworkModule { + private val httpLoggingInterceptor = HttpLoggingInterceptor().apply { + level = if (JjbaksaApp.instance.isDebug) { + HttpLoggingInterceptor.Level.BODY + } else { + HttpLoggingInterceptor.Level.HEADERS + } + } + + @AUTH + @Provides + @Singleton + fun provideAuthInterceptor(): Interceptor { + return Interceptor { chain: Interceptor.Chain -> + // val accessToken //todo 추후 ACCESS TOKEN 추가 + val newRequest: Request = chain.request().newBuilder() + // .addHeader("Authorization", "Bearer $accessToken") + .build() + chain.proceed(newRequest) + } + } + // TODO 추후 Refresh 추가 + /* + @AUTH + @Provides + @Singleton + fun provideTokenAuthenticator(@REFRESH refreshRetrofit: Retrofit): TokenAuthenticator { + return TokenAuthenticator( + KoalaApp.instance.applicationContext, + refreshRetrofit + ) + } + + */ + // TODO 추후 Refresh 추가 + /* + @REFRESH + @Provides + @Singleton + fun provideRefreshInterceptor(): Interceptor { + return Interceptor { chain: Interceptor.Chain -> + val refreshToken = Hawk.get(REFRESH_TOKEN, "") + val newRequest: Request = chain.request().newBuilder() + .addHeader("RefreshToken", "Bearer $refreshToken") + .build() + chain.proceed(newRequest) + } + } + + */ + + @NOAUTH + @Provides + @Singleton + fun provideNoAuthOkHttpClient(): OkHttpClient { + return OkHttpClient.Builder().apply { + connectTimeout(10, TimeUnit.SECONDS) + readTimeout(30, TimeUnit.SECONDS) + writeTimeout(15, TimeUnit.SECONDS) + addInterceptor(httpLoggingInterceptor) + }.build() + } + // TODO 추후 Refresh 추가 + /* + @AUTH + @Provides + @Singleton + fun provideAuthOkHttpClient( + @AUTH authInterceptor: Interceptor, + @AUTH tokenAuthenticator: TokenAuthenticator + ): OkHttpClient { + return OkHttpClient.Builder().apply { + connectTimeout(10, TimeUnit.SECONDS) + readTimeout(30, TimeUnit.SECONDS) + writeTimeout(15, TimeUnit.SECONDS) + addInterceptor(httpLoggingInterceptor) + addInterceptor(authInterceptor) + authenticator(tokenAuthenticator) + }.build() + } + + */ + + @REFRESH + @Provides + @Singleton + fun provideRefreshOkHttpClient( + @REFRESH refreshAuthInterceptor: Interceptor + ): OkHttpClient { + return OkHttpClient.Builder().apply { + connectTimeout(10, TimeUnit.SECONDS) + readTimeout(30, TimeUnit.SECONDS) + writeTimeout(15, TimeUnit.SECONDS) + addInterceptor(httpLoggingInterceptor) + addInterceptor(refreshAuthInterceptor) + }.build() + } + + @NOAUTH + @Provides + @Singleton + fun provideNoAuthRetrofit(@NOAUTH okHttpClient: OkHttpClient): Retrofit { + return Retrofit.Builder() + .client(okHttpClient) + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } + + @AUTH + @Provides + @Singleton + fun provideAuthRetrofit(@AUTH okHttpClient: OkHttpClient): Retrofit { + return Retrofit.Builder() + .client(okHttpClient) + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } + + @REFRESH + @Provides + @Singleton + fun provideRefreshRetrofit(@REFRESH okHttpClient: OkHttpClient): Retrofit { + return Retrofit.Builder() + .client(okHttpClient) + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } + + @NOAUTH + @Provides + @Singleton + fun provideNoAuthApi(@NOAUTH retrofit: Retrofit): NoAuthApi { + return retrofit.create(NoAuthApi::class.java) + } + + @AUTH + @Provides + @Singleton + fun provideAuthApi(@AUTH retrofit: Retrofit): AuthApi { + return retrofit.create(AuthApi::class.java) + } + + @REFRESH + @Provides + @Singleton + fun provideRefreshApi(@REFRESH retrofit: Retrofit): AuthApi { + return retrofit.create(AuthApi::class.java) + } +} diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/RepositoryModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/RepositoryModule.kt index 998d9956..01d98850 100644 --- a/app/src/main/java/com/jjbaksa/jjbaksa/di/RepositoryModule.kt +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/RepositoryModule.kt @@ -1,12 +1,16 @@ package com.jjbaksa.jjbaksa.di +import com.jjbaksa.data.datasource.local.UserLocalDataSource +import com.jjbaksa.data.datasource.remote.UserRemoteDataSource +import com.jjbaksa.domain.repository.UserRepository +import com.jjbaksa.data.repository.UserRepositoryImpl +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn import android.content.Context import com.jjbaksa.jjbaksa.HandleKakaoLoginUseCase import com.jjbaksa.jjbaksa.KakaoLoginRepository import com.jjbaksa.jjbaksa.KakaoLoginRepositoryImpl -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import javax.inject.Singleton @@ -14,6 +18,15 @@ import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) object RepositoryModule { + @Singleton + @Provides + fun provideUserRepository( + userRemoteDataSource: UserRemoteDataSource, + userLocalDataSource: UserLocalDataSource + ): UserRepository { + return UserRepositoryImpl(userRemoteDataSource, userLocalDataSource) + } +} @Singleton @Provides diff --git a/app/src/main/java/com/jjbaksa/jjbaksa/di/UseCaseModule.kt b/app/src/main/java/com/jjbaksa/jjbaksa/di/UseCaseModule.kt new file mode 100644 index 00000000..2b0924ac --- /dev/null +++ b/app/src/main/java/com/jjbaksa/jjbaksa/di/UseCaseModule.kt @@ -0,0 +1,3 @@ +package com.jjbaksa.jjbaksa.di + +object UseCaseModule diff --git a/build.gradle.kts b/build.gradle.kts index 84295355..78fe7eff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,6 +17,7 @@ plugins { id("com.android.library") version "7.2.0" apply false id("org.jetbrains.kotlin.android") version "1.7.10" apply false id("org.jetbrains.kotlin.jvm") version "1.6.10" apply false + id("com.google.gms.google-services") version "4.3.13" apply false } tasks.register("clean", Delete::class) { diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index f2342b6b..6a9e0df5 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -43,8 +43,17 @@ object ThirdPartyDependencies { const val retrofit2Converter = "com.squareup.retrofit2:converter-gson:${Versions.retrofit2Version}" const val timber = "com.jakewharton.timber:timber:${Versions.timberVersion}" + const val roomRuntime = "androidx.room:room-runtime:${Versions.roomVersion}" + const val roomKtx = "androidx.room:room-ktx:${Versions.roomVersion}" + const val roomCompiler = "androidx.room:room-compiler:${Versions.roomVersion}" + const val roomKapComplier = "androidx.room:room-compiler:${Versions.roomVersion}" +} +object FirebaseDependencies { + const val firebaseBom = "com.google.firebase:firebase-bom:${Versions.firebaseBomVersion}" + const val firebaseAnalytics = "com.google.firebase:firebase-analytics-ktx" + const val firebaseAuth = "com.google.firebase:firebase-auth-ktx" } object ClassPathPlugins { const val hilt = "com.google.dagger:hilt-android-gradle-plugin:${Versions.hiltVersion}" -} +} \ No newline at end of file diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index 6088eaf9..a7675440 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -26,4 +26,8 @@ object Versions { val javaVersion = JavaVersion.VERSION_1_8 const val jvmVersion = "1.8" + + const val firebaseBomVersion = "30.2.0" + + const val roomVersion = "2.4.1" } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 05a1df3a..8b876672 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -1,3 +1,4 @@ + plugins { id("com.android.library") kotlin("android") @@ -52,6 +53,10 @@ dependencies { implementation(gson) implementation(retrofit2) implementation(retrofit2Converter) + implementation(roomRuntime) + implementation(roomKtx) + annotationProcessor(roomCompiler) + kapt(roomKapComplier) } } diff --git a/data/src/main/java/com/jjbaksa/data/ApiConst.kt b/data/src/main/java/com/jjbaksa/data/ApiConst.kt new file mode 100644 index 00000000..bdbb15ac --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/ApiConst.kt @@ -0,0 +1,3 @@ +package com.jjbaksa.data + +const val BASE_URL = "https://api.stage.jjbaksa.com:443" diff --git a/data/src/main/java/com/jjbaksa/data/api/AuthApi.kt b/data/src/main/java/com/jjbaksa/data/api/AuthApi.kt new file mode 100644 index 00000000..c98cc9fc --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/api/AuthApi.kt @@ -0,0 +1,3 @@ +package com.jjbaksa.data.api + +interface AuthApi diff --git a/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt b/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt new file mode 100644 index 00000000..bc2c3fc6 --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/api/NoAuthApi.kt @@ -0,0 +1,14 @@ +package com.jjbaksa.data.api + +import com.jjbaksa.data.resp.user.SignUpReq +import com.jjbaksa.data.resp.user.SignUpResp +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.POST + +interface NoAuthApi { + @POST("user") + suspend fun signUp( + @Body singUpReq: SignUpReq + ): Response +} diff --git a/data/src/main/java/com/jjbaksa/data/database/AppDatabase.kt b/data/src/main/java/com/jjbaksa/data/database/AppDatabase.kt new file mode 100644 index 00000000..8aa786aa --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/database/AppDatabase.kt @@ -0,0 +1,12 @@ +package com.jjbaksa.data.database + +import androidx.room.Database +import androidx.room.RoomDatabase +import com.jjbaksa.data.entity.UserEntity + +@Database( + entities = [UserEntity::class], version = 1 +) +abstract class AppDatabase : RoomDatabase() { + abstract fun userDao(): UserDao +} diff --git a/data/src/main/java/com/jjbaksa/data/database/UserDao.kt b/data/src/main/java/com/jjbaksa/data/database/UserDao.kt new file mode 100644 index 00000000..9422279c --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/database/UserDao.kt @@ -0,0 +1,6 @@ +package com.jjbaksa.data.database + +import androidx.room.Dao + +@Dao +interface UserDao diff --git a/data/src/main/java/com/jjbaksa/data/datasource/UserDataSource.kt b/data/src/main/java/com/jjbaksa/data/datasource/UserDataSource.kt new file mode 100644 index 00000000..b30da742 --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/datasource/UserDataSource.kt @@ -0,0 +1,9 @@ +package com.jjbaksa.data.datasource + +import com.jjbaksa.data.resp.user.SignUpReq +import com.jjbaksa.data.resp.user.SignUpResp +import retrofit2.Response + +interface UserDataSource { + suspend fun postSignUp(signUpReq: SignUpReq): Response? +} diff --git a/data/src/main/java/com/jjbaksa/data/datasource/local/UserLocalDataSource.kt b/data/src/main/java/com/jjbaksa/data/datasource/local/UserLocalDataSource.kt new file mode 100644 index 00000000..b2f353b7 --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/datasource/local/UserLocalDataSource.kt @@ -0,0 +1,16 @@ +package com.jjbaksa.data.datasource.local + +import com.jjbaksa.data.database.UserDao +import com.jjbaksa.data.datasource.UserDataSource +import com.jjbaksa.data.resp.user.SignUpReq +import com.jjbaksa.data.resp.user.SignUpResp +import retrofit2.Response +import javax.inject.Inject + +class UserLocalDataSource @Inject constructor( + private val userDao: UserDao +) : UserDataSource { + override suspend fun postSignUp(signUpReq: SignUpReq): Response? { + return null + } +} diff --git a/data/src/main/java/com/jjbaksa/data/datasource/remote/UserRemoteDataSource.kt b/data/src/main/java/com/jjbaksa/data/datasource/remote/UserRemoteDataSource.kt new file mode 100644 index 00000000..3e79728e --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/datasource/remote/UserRemoteDataSource.kt @@ -0,0 +1,18 @@ +package com.jjbaksa.data.datasource.remote + +import com.jjbaksa.data.api.AuthApi +import com.jjbaksa.data.api.NoAuthApi +import com.jjbaksa.data.datasource.UserDataSource +import com.jjbaksa.data.resp.user.SignUpReq +import com.jjbaksa.data.resp.user.SignUpResp +import retrofit2.Response +import javax.inject.Inject + +class UserRemoteDataSource @Inject constructor( + private val authApi: AuthApi, + private val noAuthApi: NoAuthApi +) : UserDataSource { + override suspend fun postSignUp(signUpReq: SignUpReq): Response { + return noAuthApi.signUp(signUpReq) + } +} diff --git a/data/src/main/java/com/jjbaksa/data/entity/UserEntity.kt b/data/src/main/java/com/jjbaksa/data/entity/UserEntity.kt new file mode 100644 index 00000000..fdeecf75 --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/entity/UserEntity.kt @@ -0,0 +1,10 @@ +package com.jjbaksa.data.entity + +import androidx.room.Entity +import javax.annotation.concurrent.Immutable + +@Immutable +@Entity(primaryKeys = [("id")]) +data class UserEntity( + var id: Int +) diff --git a/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt b/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt new file mode 100644 index 00000000..daa2b2c1 --- /dev/null +++ b/data/src/main/java/com/jjbaksa/data/repository/UserRepositoryImpl.kt @@ -0,0 +1,16 @@ +package com.jjbaksa.data.repository + +import com.jjbaksa.data.datasource.local.UserLocalDataSource +import com.jjbaksa.data.datasource.remote.UserRemoteDataSource +import com.jjbaksa.data.resp.user.SignUpReq +import com.jjbaksa.domain.repository.UserRepository +import javax.inject.Inject + +class UserRepositoryImpl @Inject constructor( + private val userRemoteDataSource: UserRemoteDataSource, + private val userLocalDataSource: UserLocalDataSource +) : UserRepository { + override suspend fun postSignUp(signUpReq: SignUpReq) { + val resp = userRemoteDataSource.postSignUp(signUpReq) + } +} diff --git a/data/src/main/res/values/strings.xml b/data/src/main/res/values/strings.xml new file mode 100644 index 00000000..0d2c4cc4 --- /dev/null +++ b/data/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/domain/src/main/java/com/jjbaksa/domain/MyClass.kt b/domain/src/main/java/com/jjbaksa/domain/MyClass.kt deleted file mode 100644 index fa99ba2e..00000000 --- a/domain/src/main/java/com/jjbaksa/domain/MyClass.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.jjbaksa.domain - -class MyClass diff --git a/domain/src/main/java/com/jjbaksa/domain/repository/UserRepository.kt b/domain/src/main/java/com/jjbaksa/domain/repository/UserRepository.kt new file mode 100644 index 00000000..d1ec353d --- /dev/null +++ b/domain/src/main/java/com/jjbaksa/domain/repository/UserRepository.kt @@ -0,0 +1,7 @@ +package com.jjbaksa.domain.repository + +import com.jjbaksa.data.resp.user.SignUpReq + +interface UserRepository { + suspend fun postSignUp(signUpReq: SignUpReq) +} diff --git a/domain/src/main/java/com/jjbaksa/domain/resp/user/SignUpReq.kt b/domain/src/main/java/com/jjbaksa/domain/resp/user/SignUpReq.kt new file mode 100644 index 00000000..dc88d939 --- /dev/null +++ b/domain/src/main/java/com/jjbaksa/domain/resp/user/SignUpReq.kt @@ -0,0 +1,8 @@ +package com.jjbaksa.data.resp.user + +data class SignUpReq( + val acctoun: String, + val email: String, + val nickname: String, + val password: String +) diff --git a/domain/src/main/java/com/jjbaksa/domain/resp/user/SignUpResp.kt b/domain/src/main/java/com/jjbaksa/domain/resp/user/SignUpResp.kt new file mode 100644 index 00000000..a012e697 --- /dev/null +++ b/domain/src/main/java/com/jjbaksa/domain/resp/user/SignUpResp.kt @@ -0,0 +1,10 @@ +package com.jjbaksa.data.resp.user + +data class SignUpResp( + val account: String, + val email: String, + val id: Long, + val nickname: String, + val oauthType: String, + val userType: String +) diff --git a/domain/src/main/java/com/jjbaksa/domain/usecase/SignUpUseCase.kt b/domain/src/main/java/com/jjbaksa/domain/usecase/SignUpUseCase.kt new file mode 100644 index 00000000..63af5a20 --- /dev/null +++ b/domain/src/main/java/com/jjbaksa/domain/usecase/SignUpUseCase.kt @@ -0,0 +1,10 @@ +package com.jjbaksa.domain.usecase + +import com.jjbaksa.domain.repository.UserRepository +import javax.inject.Inject + +class SignUpUseCase @Inject constructor( + private val userRepository: UserRepository +) { + operator fun invoke() {} +}