diff --git a/api/src/extensions/ParametersExtensions.kt b/api/src/extensions/ParametersExtensions.kt index c9bf06d..5e7863b 100644 --- a/api/src/extensions/ParametersExtensions.kt +++ b/api/src/extensions/ParametersExtensions.kt @@ -6,7 +6,7 @@ import be.vandewalleh.tables.Notes import io.ktor.http.* import org.kodein.di.generic.instance -val notesService by kodein.instance() +private val notesService by kodein.instance() fun Parameters.noteTitle(): String { return this["noteTitle"]!! diff --git a/api/src/services/UserService.kt b/api/src/services/UserService.kt index 514e6ad..2b98ede 100644 --- a/api/src/services/UserService.kt +++ b/api/src/services/UserService.kt @@ -1,6 +1,7 @@ package be.vandewalleh.services import be.vandewalleh.entities.User +import be.vandewalleh.tables.Notes import be.vandewalleh.tables.Users import me.liuwj.ktorm.database.* import me.liuwj.ktorm.dsl.* @@ -15,6 +16,7 @@ import java.time.LocalDateTime */ class UserService(override val kodein: Kodein) : KodeinAware { private val db by instance() + private val notesService by instance() /** * returns a user ID if present or null @@ -65,6 +67,21 @@ class UserService(override val kodein: Kodein) : KodeinAware { } } + fun deleteUser(userId: Int) { + db.useTransaction { + val notesId = db.from(Notes) + .select(Notes.id) + .where { Notes.userId eq userId } + .map { it[Notes.userId]!! } + + notesId.forEach { noteId -> + notesService.deleteNote(noteId) + } + } + + db.delete(Users) { it.id eq userId } + } + } data class UserRegistrationDto(val username: String, val email: String, val password: String) \ No newline at end of file