diff --git a/api/src/controllers/NotesTitleController.kt b/api/src/controllers/NotesTitleController.kt index 00e82ff..c6d910e 100644 --- a/api/src/controllers/NotesTitleController.kt +++ b/api/src/controllers/NotesTitleController.kt @@ -12,10 +12,15 @@ import io.ktor.application.call import io.ktor.http.HttpStatusCode import io.ktor.request.receive import io.ktor.response.respond -import io.ktor.routing.* +import io.ktor.routing.Route +import io.ktor.routing.get +import io.ktor.routing.patch +import io.ktor.routing.post import me.liuwj.ktorm.database.Database import me.liuwj.ktorm.dsl.* -import me.liuwj.ktorm.entity.* +import me.liuwj.ktorm.entity.add +import me.liuwj.ktorm.entity.find +import me.liuwj.ktorm.entity.sequenceOf import org.kodein.di.Kodein import org.kodein.di.generic.instance import java.time.LocalDateTime @@ -121,8 +126,35 @@ class NotesTitleController(kodein: Kodein) : AuthCrudController("/notes/{noteTit return@patch call.respondStatus(HttpStatusCode.BadRequest) } + val noteId = call.requestedNoteId() + ?: return@patch call.respondStatus(HttpStatusCode.NotFound) + db.useTransaction { + if (requestedChanges.title != null) { + db.update(Notes) { + it.title to requestedChanges.title + where { it.id eq noteId } + } + } + if (requestedChanges.tags != null) { + // delete all tags + db.delete(Tags) { + it.noteId eq noteId + } + + // put new ones + requestedChanges.tags.forEach { tagName -> + db.insert(Tags) { + it.name to tagName + it.noteId to noteId + } + } + } + + } + + call.respondStatus(HttpStatusCode.OK) } } } \ No newline at end of file