diff --git a/api/src/routing/Routes.kt b/api/src/routing/Routes.kt index 7f0a709..da82d16 100644 --- a/api/src/routing/Routes.kt +++ b/api/src/routing/Routes.kt @@ -9,4 +9,5 @@ fun Routing.registerRoutes(kodein: Kodein) { notes(kodein) title(kodein) chapters(kodein) + tags(kodein) } \ No newline at end of file diff --git a/api/src/routing/TagController.kt b/api/src/routing/TagController.kt new file mode 100644 index 0000000..6c61003 --- /dev/null +++ b/api/src/routing/TagController.kt @@ -0,0 +1,20 @@ +package be.vandewalleh.routing + +import be.vandewalleh.extensions.userId +import be.vandewalleh.services.NotesService +import io.ktor.application.* +import io.ktor.auth.* +import io.ktor.response.* +import io.ktor.routing.* +import org.kodein.di.Kodein +import org.kodein.di.generic.instance + +fun Routing.tags(kodein: Kodein) { + val notesService by kodein.instance() + + authenticate { + get("/tags") { + call.respond(notesService.getTags(call.userId())) + } + } +} \ No newline at end of file diff --git a/api/src/services/NotesService.kt b/api/src/services/NotesService.kt index 0b20fe5..1f31991 100644 --- a/api/src/services/NotesService.kt +++ b/api/src/services/NotesService.kt @@ -111,6 +111,12 @@ class NotesService(override val kodein: Kodein) : KodeinAware { db.useTransaction { db.delete(Notes) { it.id eq noteId } } + + fun getTags(userId: Int): List = db.from(Tags) + .leftJoin(Notes, on = Tags.noteId eq Notes.id) + .select(Tags.name) + .where { Notes.userId eq userId } + .map { it[Tags.name]!! } } data class ChaptersDTO(val title: String, val content: String)