diff --git a/src/main/kotlin/dao/TermDao.kt b/src/main/kotlin/dao/TermDao.kt index 236d9af..1ca0833 100644 --- a/src/main/kotlin/dao/TermDao.kt +++ b/src/main/kotlin/dao/TermDao.kt @@ -19,6 +19,7 @@ class TermDao(id: EntityID) : IntEntity(id) { var member by Terms.member var order2 by Terms.order2 var flags by Terms.flags + var pronunciations by PronunciationDao via TermsPronunciations fun toModel(): Term = Term( id = id.value, @@ -41,6 +42,6 @@ class TermDao(id: EntityID) : IntEntity(id) { member = member, order2 = order2, flags = flags, - pronunciation = null + pronunciations = pronunciations.map { it.toModel() } ) } \ No newline at end of file diff --git a/src/main/kotlin/models/Term.kt b/src/main/kotlin/models/Term.kt index cd6d97b..7c01250 100644 --- a/src/main/kotlin/models/Term.kt +++ b/src/main/kotlin/models/Term.kt @@ -29,5 +29,5 @@ data class TermFull( val member: String?, val order2: Int?, val flags: IntArray?, - val pronunciation: Pronunciation? + val pronunciations: List? ) \ No newline at end of file diff --git a/src/main/kotlin/service/TermService.kt b/src/main/kotlin/service/TermService.kt index 4534796..0a447eb 100644 --- a/src/main/kotlin/service/TermService.kt +++ b/src/main/kotlin/service/TermService.kt @@ -3,9 +3,11 @@ package service import dao.TermDao import models.Term import models.TermFull +import models.Pronunciation interface TermService { fun getTerm(id: Int): Term? fun getFullTerm(id: Int): TermFull? fun getAllTerm(): List + fun getPronunciationsForTerm(id: Int): List? } diff --git a/src/main/kotlin/service/TermServiceImpl.kt b/src/main/kotlin/service/TermServiceImpl.kt index 3c97d7a..bbb41a5 100644 --- a/src/main/kotlin/service/TermServiceImpl.kt +++ b/src/main/kotlin/service/TermServiceImpl.kt @@ -5,6 +5,7 @@ import org.jetbrains.exposed.sql.transactions.transaction import service.DatabaseFactory.dbExecId import models.Term import models.TermFull +import models.Pronunciation class TermServiceImpl : TermService { override fun getTerm(id: Int): Term? = dbExecId(1) { @@ -19,4 +20,7 @@ class TermServiceImpl : TermService { TermDao.findById(id)?.toFullModel() } + override fun getPronunciationsForTerm(id: Int): List? = dbExecId(1) { + null + } } \ No newline at end of file diff --git a/src/main/kotlin/web/TermResource.kt b/src/main/kotlin/web/TermResource.kt index 43e857b..1b2b891 100644 --- a/src/main/kotlin/web/TermResource.kt +++ b/src/main/kotlin/web/TermResource.kt @@ -27,7 +27,7 @@ fun Route.term(TermService: TermServiceImpl) { get("/{id}/full") { val id = call.parameters["id"]?.toInt() ?: throw IllegalStateException("Must provide id") val term = TermService.getFullTerm(id) - val pron = Pro + if (term == null) call.respond(HttpStatusCode.NotFound) else call.respond(term) } diff --git a/src/main/kotlin/web/WidgetResource.kt.old b/src/main/kotlin/web/WidgetResource.kt.old deleted file mode 100644 index bd7e258..0000000 --- a/src/main/kotlin/web/WidgetResource.kt.old +++ /dev/null @@ -1,64 +0,0 @@ -package web - -import io.ktor.http.* -import io.ktor.server.request.* -import io.ktor.server.response.* -import io.ktor.server.routing.* -import io.ktor.server.websocket.* -import io.ktor.websocket.* -import model.NewWidget -import service.WidgetService - -fun Route.widget(widgetService: WidgetService) { - - route("/widgets") { - - get { - call.respond(widgetService.getAllWidgets()) - } - - get("/{id}") { - val id = call.parameters["id"]?.toInt() ?: throw IllegalStateException("Must provide id") - val widget = widgetService.getWidget(id) - if (widget == null) call.respond(HttpStatusCode.NotFound) - else call.respond(widget) - } - - post { - val widget = call.receive() - call.respond(HttpStatusCode.Created, widgetService.addWidget(widget)) - } - - put { - val widget = call.receive() - val updated = widgetService.updateWidget(widget) - if (updated == null) call.respond(HttpStatusCode.NotFound) - else call.respond(HttpStatusCode.OK, updated) - } - - delete("/{id}") { - val id = call.parameters["id"]?.toInt() ?: throw IllegalStateException("Must provide id") - val removed = widgetService.deleteWidget(id) - if (removed) call.respond(HttpStatusCode.OK) - else call.respond(HttpStatusCode.NotFound) - } - - } - - webSocket("/updates") { - try { - widgetService.addChangeListener(this.hashCode()) { - sendSerialized(it) - } - for (frame in incoming) { - if (frame.frameType == FrameType.CLOSE) { - break - } else if (frame is Frame.Text) { - call.application.environment.log.info("Received websocket message: {}", frame.readText()) - } - } - } finally { - widgetService.removeChangeListener(this.hashCode()) - } - } -}