[WIP] - Updated database

This commit is contained in:
Faraphel 2024-05-16 22:15:29 +02:00
parent bc8dd0f859
commit 834081e557
32 changed files with 215 additions and 43 deletions

View file

@ -3,10 +3,6 @@ package com.faraphel.tasks_valider.database
import androidx.room.Database import androidx.room.Database
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.TypeConverters import androidx.room.TypeConverters
import com.faraphel.tasks_valider.connectivity.task.session.TaskPermission
import com.faraphel.tasks_valider.connectivity.task.session.TaskSession
import com.faraphel.tasks_valider.database.api.entities.base.BaseApi
import com.faraphel.tasks_valider.database.api.entities.*
import com.faraphel.tasks_valider.database.converters.InstantConverter import com.faraphel.tasks_valider.database.converters.InstantConverter
import com.faraphel.tasks_valider.database.dao.GroupDao import com.faraphel.tasks_valider.database.dao.GroupDao
import com.faraphel.tasks_valider.database.dao.GroupStudentDao import com.faraphel.tasks_valider.database.dao.GroupStudentDao
@ -14,13 +10,12 @@ import com.faraphel.tasks_valider.database.dao.StudentDao
import com.faraphel.tasks_valider.database.dao.TaskDao import com.faraphel.tasks_valider.database.dao.TaskDao
import com.faraphel.tasks_valider.database.dao.TaskGroupDao import com.faraphel.tasks_valider.database.dao.TaskGroupDao
import com.faraphel.tasks_valider.database.dao.TeacherDao import com.faraphel.tasks_valider.database.dao.TeacherDao
import com.faraphel.tasks_valider.database.entities.GroupEntity import com.faraphel.tasks_valider.database.entities._old.GroupEntity
import com.faraphel.tasks_valider.database.entities.GroupStudentEntity import com.faraphel.tasks_valider.database.entities._old.GroupStudentEntity
import com.faraphel.tasks_valider.database.entities.StudentEntity import com.faraphel.tasks_valider.database.entities._old.StudentEntity
import com.faraphel.tasks_valider.database.entities.TaskEntity import com.faraphel.tasks_valider.database.entities._old.TaskEntity
import com.faraphel.tasks_valider.database.entities.TaskGroupEntity import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity
import com.faraphel.tasks_valider.database.entities.TeacherEntity import com.faraphel.tasks_valider.database.entities._old.TeacherEntity
import fi.iki.elonen.NanoHTTPD
/** /**

View file

@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities
import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.GroupEntity import com.faraphel.tasks_valider.database.entities._old.GroupEntity
class GroupApi(dao: BaseDao<GroupEntity>) : BaseJsonApi<GroupEntity>(dao) class GroupApi(dao: BaseDao<GroupEntity>) : BaseJsonApi<GroupEntity>(dao)

View file

@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities
import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.GroupStudentEntity import com.faraphel.tasks_valider.database.entities._old.GroupStudentEntity
class GroupStudentApi(dao: BaseDao<GroupStudentEntity>) : BaseJsonApi<GroupStudentEntity>(dao) class GroupStudentApi(dao: BaseDao<GroupStudentEntity>) : BaseJsonApi<GroupStudentEntity>(dao)

View file

@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities
import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.StudentEntity import com.faraphel.tasks_valider.database.entities._old.StudentEntity
class StudentApi(dao: BaseDao<StudentEntity>) : BaseJsonApi<StudentEntity>(dao) class StudentApi(dao: BaseDao<StudentEntity>) : BaseJsonApi<StudentEntity>(dao)

View file

@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities
import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.TaskEntity import com.faraphel.tasks_valider.database.entities._old.TaskEntity
class TaskApi(dao: BaseDao<TaskEntity>) : BaseJsonApi<TaskEntity>(dao) class TaskApi(dao: BaseDao<TaskEntity>) : BaseJsonApi<TaskEntity>(dao)

View file

@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities
import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.TaskGroupEntity import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity
class TaskGroupApi(dao: BaseDao<TaskGroupEntity>) : BaseJsonApi<TaskGroupEntity>(dao) class TaskGroupApi(dao: BaseDao<TaskGroupEntity>) : BaseJsonApi<TaskGroupEntity>(dao)

View file

@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities
import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.TeacherEntity import com.faraphel.tasks_valider.database.entities._old.TeacherEntity
class TeacherApi(dao: BaseDao<TeacherEntity>) : BaseJsonApi<TeacherEntity>(dao) class TeacherApi(dao: BaseDao<TeacherEntity>) : BaseJsonApi<TeacherEntity>(dao)

View file

@ -4,7 +4,7 @@ import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.RewriteQueriesToDropUnusedColumns import androidx.room.RewriteQueriesToDropUnusedColumns
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.GroupEntity import com.faraphel.tasks_valider.database.entities._old.GroupEntity
@Dao @Dao

View file

@ -3,7 +3,7 @@ package com.faraphel.tasks_valider.database.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.GroupStudentEntity import com.faraphel.tasks_valider.database.entities._old.GroupStudentEntity
@Dao @Dao

View file

@ -4,7 +4,7 @@ import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.RewriteQueriesToDropUnusedColumns import androidx.room.RewriteQueriesToDropUnusedColumns
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.StudentEntity import com.faraphel.tasks_valider.database.entities._old.StudentEntity
@Dao @Dao

View file

@ -4,7 +4,7 @@ import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.RewriteQueriesToDropUnusedColumns import androidx.room.RewriteQueriesToDropUnusedColumns
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.TaskEntity import com.faraphel.tasks_valider.database.entities._old.TaskEntity
@Dao @Dao

View file

@ -3,7 +3,7 @@ package com.faraphel.tasks_valider.database.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.TaskGroupEntity import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity
@Dao @Dao

View file

@ -3,7 +3,7 @@ package com.faraphel.tasks_valider.database.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import com.faraphel.tasks_valider.database.dao.base.BaseDao import com.faraphel.tasks_valider.database.dao.base.BaseDao
import com.faraphel.tasks_valider.database.entities.TeacherEntity import com.faraphel.tasks_valider.database.entities._old.TeacherEntity
@Dao @Dao

View file

@ -0,0 +1,12 @@
package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
@Entity(tableName = "classes")
data class ClassEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("name") val name: String,
) : BaseEntity()

View file

@ -0,0 +1,27 @@
package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
import java.time.Instant
@Entity(
tableName = "sessions",
foreignKeys = [
ForeignKey(
entity = ClassEntity::class,
parentColumns = ["id"],
childColumns = ["class_id"],
onDelete = ForeignKey.CASCADE
),
]
)
data class SessionEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("name") val name: String? = null,
@ColumnInfo("start") val start: Instant,
@ColumnInfo("class_id") val classId: Long? = null,
) : BaseEntity()

View file

@ -3,10 +3,13 @@ package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
import java.util.*
@Entity(tableName = "students") @Entity(tableName = "students")
class StudentEntity( data class StudentEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) override val id: Long = 0, @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("first_name") override val firstName: String, @ColumnInfo("first_name") val firstName: String,
@ColumnInfo("last_name") override val lastName: String @ColumnInfo("last_name") val lastName: String,
) : PersonEntity(id, firstName, lastName) @ColumnInfo("card_id") val cardId: UUID,
) : BaseEntity()

View file

@ -0,0 +1,12 @@
package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
@Entity(tableName = "subjects")
data class SubjectEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("name") val name: String,
) : BaseEntity()

View file

@ -2,12 +2,25 @@ package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity import com.faraphel.tasks_valider.database.entities.base.BaseEntity
@Entity(tableName = "tasks") @Entity(
tableName = "tasks",
foreignKeys = [
ForeignKey(
entity = SubjectEntity::class,
parentColumns = ["id"],
childColumns = ["subject_id"],
onDelete = ForeignKey.CASCADE
),
]
)
data class TaskEntity ( data class TaskEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("title") val title: String, @ColumnInfo("title") val title: String,
@ColumnInfo("description") val description: String, @ColumnInfo("description") val description: String? = null,
@ColumnInfo("subject_id") val subjectId: Long,
) : BaseEntity() ) : BaseEntity()

View file

@ -3,10 +3,13 @@ package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
// TODO(Faraphel): is this class really required ?
@Entity(tableName = "teachers") @Entity(tableName = "teachers")
class TeacherEntity( data class TeacherEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) override val id: Long = 0, @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("first_name") override val firstName: String, @ColumnInfo("first_name") val firstName: String,
@ColumnInfo("last_name") override val lastName: String @ColumnInfo("last_name") val lastName: String,
) : PersonEntity(id, firstName, lastName) ) : BaseEntity()

View file

@ -0,0 +1,26 @@
package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
@Entity(
tableName = "teams",
foreignKeys = [
ForeignKey(
entity = TeamEntity::class,
parentColumns = ["id"],
childColumns = ["team_id"],
onDelete = ForeignKey.CASCADE
),
]
)
data class TeamEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("name") val name: String? = null,
@ColumnInfo("team_id") val teamId: Long? = null,
) : BaseEntity()

View file

@ -0,0 +1,44 @@
package com.faraphel.tasks_valider.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.ForeignKey
import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
import java.time.Instant
@Entity(
tableName = "validations",
primaryKeys = [
"teacher_id",
"task_id",
"student_id",
],
foreignKeys = [
ForeignKey(
entity = TeacherEntity::class,
parentColumns = ["id"],
childColumns = ["teacher_id"],
onDelete = ForeignKey.CASCADE
),
ForeignKey(
entity = TaskEntity::class,
parentColumns = ["id"],
childColumns = ["task_id"],
onDelete = ForeignKey.CASCADE
),
ForeignKey(
entity = StudentEntity::class,
parentColumns = ["id"],
childColumns = ["student_id"],
onDelete = ForeignKey.CASCADE
),
]
)
data class ValidationEntity (
@ColumnInfo("date") val date: Instant,
@ColumnInfo("teacher_id") val teacherId: Long,
@ColumnInfo("task_id") val taskId: Long,
@ColumnInfo("student_id") val studentId: Long,
) : BaseEntity()

View file

@ -1,4 +1,4 @@
package com.faraphel.tasks_valider.database.entities package com.faraphel.tasks_valider.database.entities._old
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity

View file

@ -1,4 +1,4 @@
package com.faraphel.tasks_valider.database.entities package com.faraphel.tasks_valider.database.entities._old
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity

View file

@ -1,4 +1,4 @@
package com.faraphel.tasks_valider.database.entities package com.faraphel.tasks_valider.database.entities._old
import java.util.Locale import java.util.Locale
import com.faraphel.tasks_valider.database.entities.base.BaseEntity import com.faraphel.tasks_valider.database.entities.base.BaseEntity

View file

@ -0,0 +1,12 @@
package com.faraphel.tasks_valider.database.entities._old
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "students")
class StudentEntity(
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) override val id: Long = 0,
@ColumnInfo("first_name") override val firstName: String,
@ColumnInfo("last_name") override val lastName: String
) : PersonEntity(id, firstName, lastName)

View file

@ -0,0 +1,13 @@
package com.faraphel.tasks_valider.database.entities._old
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.faraphel.tasks_valider.database.entities.base.BaseEntity
@Entity(tableName = "tasks")
data class TaskEntity (
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0,
@ColumnInfo("title") val title: String,
@ColumnInfo("description") val description: String,
) : BaseEntity()

View file

@ -1,4 +1,4 @@
package com.faraphel.tasks_valider.database.entities package com.faraphel.tasks_valider.database.entities._old
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity

View file

@ -0,0 +1,12 @@
package com.faraphel.tasks_valider.database.entities._old
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "teachers")
class TeacherEntity(
@ColumnInfo("id") @PrimaryKey(autoGenerate = true) override val id: Long = 0,
@ColumnInfo("first_name") override val firstName: String,
@ColumnInfo("last_name") override val lastName: String
) : PersonEntity(id, firstName, lastName)

View file

@ -8,7 +8,7 @@ import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import com.faraphel.tasks_valider.connectivity.task.TaskClient import com.faraphel.tasks_valider.connectivity.task.TaskClient
import com.faraphel.tasks_valider.database.entities.TaskGroupEntity import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken

View file

@ -3,7 +3,7 @@ package com.faraphel.tasks_valider.ui.widgets.task
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.faraphel.tasks_valider.database.entities.GroupEntity import com.faraphel.tasks_valider.database.entities._old.GroupEntity
@Composable @Composable
fun WidgetGroup(group: GroupEntity) { fun WidgetGroup(group: GroupEntity) {

View file

@ -3,7 +3,7 @@ package com.faraphel.tasks_valider.ui.widgets.task
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import com.faraphel.tasks_valider.database.entities.TaskEntity import com.faraphel.tasks_valider.database.entities._old.TaskEntity
@Composable @Composable
fun WidgetTask(task: TaskEntity) { fun WidgetTask(task: TaskEntity) {

View file

@ -12,7 +12,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.faraphel.tasks_valider.database.TaskDatabase import com.faraphel.tasks_valider.database.TaskDatabase
import com.faraphel.tasks_valider.database.entities.TaskGroupEntity import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity
@Composable @Composable