From 765f96cedf3d0be19c437cec1d10ca36fb5e94f8 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 23 Apr 2020 00:15:08 +0200 Subject: [PATCH 1/4] Submit notes --- frontend/pages/create.vue | 85 ++++++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 33 deletions(-) diff --git a/frontend/pages/create.vue b/frontend/pages/create.vue index 42907c1..a309136 100644 --- a/frontend/pages/create.vue +++ b/frontend/pages/create.vue @@ -9,40 +9,39 @@ Create a note - - - + + + - + - + - - - - Create - - + + + + Create + + + @@ -51,9 +50,29 @@ name: "create", data: () => ({ delimiters: [" ", ","], - tags: [], - possibleTags: ["Dev", "Ephec", "Java"] - }) + form: { + title: '', + tags: [] + }, + possibleTags: [] + }), + methods: { + createNote() { + this.$axios.post(`/notes/${this.form.title}`, { + tags: this.form.tags + }).then(data => { + console.log(data) + } + ).catch(e => { + console.log(e) + }) + + } + }, + mounted() { + this.$axios.get("/tags") + .then(e => console.log(e.data)) + } } From 468e2dee6fdbb928baf88e88e8464b3b179ef50f Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 23 Apr 2020 00:22:34 +0200 Subject: [PATCH 2/4] Add tags request to NotesService --- api/src/services/NotesService.kt | 6 ++++++ 1 file changed, 6 insertions(+) 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) From b34beda535e83b409e2013735f4c567e57992370 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 23 Apr 2020 00:23:16 +0200 Subject: [PATCH 3/4] Add /tags --- api/src/routing/Routes.kt | 1 + api/src/routing/TagController.kt | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 api/src/routing/TagController.kt 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 From 22cbaec879cf54325f6e81485b02ed8ad9aceaaa Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 23 Apr 2020 00:36:47 +0200 Subject: [PATCH 4/4] Done --- frontend/pages/create.vue | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/frontend/pages/create.vue b/frontend/pages/create.vue index a309136..d433f14 100644 --- a/frontend/pages/create.vue +++ b/frontend/pages/create.vue @@ -9,10 +9,12 @@ Create a note + + A note with the same title already exists + @@ -54,24 +56,33 @@ title: '', tags: [] }, - possibleTags: [] + possibleTags: [], + conflict: false }), methods: { createNote() { + this.conflict = false this.$axios.post(`/notes/${this.form.title}`, { tags: this.form.tags - }).then(data => { - console.log(data) + }).then(_ => { + this.$router.push("/notes") } ).catch(e => { - console.log(e) + if (e.response && e.response.status === 409) { + this.conflict = true + } else { + console.log("??") + } }) } }, mounted() { this.$axios.get("/tags") - .then(e => console.log(e.data)) + .then(e => this.possibleTags = e.data) + .catch(e => { + console.log(e) + }) } }