From 1cfd40ae3ed98ed4e054c4ea525ab47d5b086bb3 Mon Sep 17 00:00:00 2001 From: maxnes3 <112558334+maxnes3@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:23:02 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=203=20=D0=BB?= =?UTF-8?q?=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/kotlinc.xml | 2 +- app/build.gradle.kts | 9 +++++ .../mobileapp/database/MobileAppDataBase.kt | 11 ++++++ .../example/mobileapp/database/dao/MailDao.kt | 12 +++++++ .../mobileapp/database/dao/StoryDao.kt | 12 +++++++ .../example/mobileapp/database/dao/UserDao.kt | 12 +++++++ .../mobileapp/database/entities/Mail.kt | 31 ++++++++++++++++ .../mobileapp/database/entities/Story.kt | 36 +++++++++++++++++++ .../mobileapp/database/entities/User.kt | 21 +++++++++++ build.gradle.kts | 1 + 10 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/example/mobileapp/database/MobileAppDataBase.kt create mode 100644 app/src/main/java/com/example/mobileapp/database/dao/MailDao.kt create mode 100644 app/src/main/java/com/example/mobileapp/database/dao/StoryDao.kt create mode 100644 app/src/main/java/com/example/mobileapp/database/dao/UserDao.kt create mode 100644 app/src/main/java/com/example/mobileapp/database/entities/Mail.kt create mode 100644 app/src/main/java/com/example/mobileapp/database/entities/Story.kt create mode 100644 app/src/main/java/com/example/mobileapp/database/entities/User.kt diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index 0fc3113..69e8615 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 890e4c0..de7fe54 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") + id("com.google.devtools.ksp") } android { @@ -67,4 +68,12 @@ dependencies { androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") + + // Room + val room_version = "2.5.2" + implementation("androidx.room:room-runtime:$room_version") + annotationProcessor("androidx.room:room-compiler:$room_version") + ksp("androidx.room:room-compiler:$room_version") + implementation("androidx.room:room-ktx:$room_version") + implementation("androidx.room:room-paging:$room_version") } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/database/MobileAppDataBase.kt b/app/src/main/java/com/example/mobileapp/database/MobileAppDataBase.kt new file mode 100644 index 0000000..239ccc7 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/MobileAppDataBase.kt @@ -0,0 +1,11 @@ +package com.example.mobileapp.database + +import androidx.room.Database +import androidx.room.RoomDatabase +import com.example.mobileapp.database.entities.Mail +import com.example.mobileapp.database.entities.Story +import com.example.mobileapp.database.entities.User + +@Database(entities = [User::class, Story::class, Mail::class], version = 1, exportSchema = false) +abstract class MobileAppDataBase : RoomDatabase() { +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/database/dao/MailDao.kt b/app/src/main/java/com/example/mobileapp/database/dao/MailDao.kt new file mode 100644 index 0000000..a08670e --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/dao/MailDao.kt @@ -0,0 +1,12 @@ +package com.example.mobileapp.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.example.mobileapp.database.entities.Mail +import kotlinx.coroutines.flow.Flow + +@Dao +interface MailDao { + @Query("select * from mails") + fun getAll(): Flow> +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/database/dao/StoryDao.kt b/app/src/main/java/com/example/mobileapp/database/dao/StoryDao.kt new file mode 100644 index 0000000..057de44 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/dao/StoryDao.kt @@ -0,0 +1,12 @@ +package com.example.mobileapp.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.example.mobileapp.database.entities.Story +import kotlinx.coroutines.flow.Flow + +@Dao +interface StoryDao { + @Query("select * from stories") + fun getAll(): Flow> +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/database/dao/UserDao.kt b/app/src/main/java/com/example/mobileapp/database/dao/UserDao.kt new file mode 100644 index 0000000..a5ceafc --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/dao/UserDao.kt @@ -0,0 +1,12 @@ +package com.example.mobileapp.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.example.mobileapp.database.entities.User +import kotlinx.coroutines.flow.Flow + +@Dao +interface UserDao { + @Query("select * from users") + fun getAll():Flow> +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt b/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt new file mode 100644 index 0000000..ba7eb54 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/entities/Mail.kt @@ -0,0 +1,31 @@ +package com.example.mobileapp.database.entities + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.ForeignKey +import androidx.room.PrimaryKey + +@Entity( + tableName = "mails", + foreignKeys = [ + ForeignKey( + entity = User::class, + parentColumns = ["id"], + childColumns = ["user_id"], + onDelete = ForeignKey.RESTRICT, + onUpdate = ForeignKey.RESTRICT + ) + ] +) +data class Mail( + @PrimaryKey(autoGenerate = true) + var id: Int?, + @ColumnInfo(name = "message") + val message: String, + @ColumnInfo(name="user_id") + val userId: Int +){ + override fun hashCode(): Int { + return id ?: -1 + } +} diff --git a/app/src/main/java/com/example/mobileapp/database/entities/Story.kt b/app/src/main/java/com/example/mobileapp/database/entities/Story.kt new file mode 100644 index 0000000..815658d --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/entities/Story.kt @@ -0,0 +1,36 @@ +package com.example.mobileapp.database.entities + +import android.graphics.Bitmap +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.ForeignKey +import androidx.room.PrimaryKey + +@Entity( + tableName = "stories", + foreignKeys = [ + ForeignKey( + entity = User::class, + parentColumns = ["id"], + childColumns = ["user_id"], + onDelete = ForeignKey.RESTRICT, + onUpdate = ForeignKey.RESTRICT + ) + ] +) +data class Story( + @PrimaryKey(autoGenerate = true) + val id: Int?, + @ColumnInfo(name = "title") + val title: String, + @ColumnInfo(name = "description") + val description: String, + @ColumnInfo(name = "cover") + val cover: Bitmap, + @ColumnInfo(name="user_id") + val userId: Int +){ + override fun hashCode(): Int { + return id ?: -1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobileapp/database/entities/User.kt b/app/src/main/java/com/example/mobileapp/database/entities/User.kt new file mode 100644 index 0000000..7337a99 --- /dev/null +++ b/app/src/main/java/com/example/mobileapp/database/entities/User.kt @@ -0,0 +1,21 @@ +package com.example.mobileapp.database.entities + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "users") +data class User( + @PrimaryKey(autoGenerate = true) + var id: Int?, + @ColumnInfo(name = "login") + val login: String, + @ColumnInfo(name = "password") + val password: String, + @ColumnInfo(name = "email") + val email: String, +){ + override fun hashCode(): Int { + return id ?: -1 + } +} diff --git a/build.gradle.kts b/build.gradle.kts index 9861456..bd1eb8a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,4 +2,5 @@ plugins { id("com.android.application") version "8.1.1" apply false id("org.jetbrains.kotlin.android") version "1.8.10" apply false + id("com.google.devtools.ksp") version "1.8.20-1.0.11" apply false } \ No newline at end of file