replace Article entity by Article request for the HTTP request

Add draft
This commit is contained in:
2019-09-16 22:47:37 +02:00
parent 05c28a2f62
commit c2beed416e
13 changed files with 157 additions and 73 deletions

View File

@@ -10,6 +10,8 @@ class Article(
var content: String?,
var description: String?,
var tags: List<String> = emptyList(),
var draft: Boolean = false,
var lastVersion: Boolean = false,
createdBy: Citizen?
):
UuidEntity(id),

View File

@@ -8,6 +8,8 @@ class Constitution(
var title: String?,
var anonymous: Boolean? = true,
var titles: List<Title> = listOf(),
var draft: Boolean = false,
var lastVersion: Boolean = false,
createdBy: Citizen?
): UuidEntity(id),
EntityVersioning<UUID, Int> by UuidEntityVersioning(),

View File

@@ -0,0 +1,41 @@
package fr.dcproject.entity.request
import fr.dcproject.entity.Citizen
import java.util.*
import fr.dcproject.entity.Article as ArticleEntity
class Article(
val id: UUID?,
val title: String,
val anonymous: Boolean? = true,
val content: String,
val description: String,
val tags: List<String> = emptyList(),
val draft: Boolean = false,
val versionId: UUID?
):
Request {
fun merge(article: ArticleEntity) {
article.title = this.title
article.content = this.content
article.description = this.description
article.tags = this.tags.distinct()
article.anonymous = this.anonymous
article.draft = this.draft
article.versionId = this.versionId ?: UUID.randomUUID()
}
fun create(createdBy: Citizen): ArticleEntity {
return ArticleEntity(
id ?: UUID.randomUUID(),
title,
anonymous,
content,
description,
tags,
draft,
createdBy = createdBy
).apply { this.versionId = this@Article.versionId ?: UUID.randomUUID() }
}
}

View File

@@ -0,0 +1,3 @@
package fr.dcproject.entity.request
interface Request

View File

@@ -14,6 +14,7 @@ import io.ktor.request.receive
import io.ktor.response.respond
import io.ktor.routing.Route
import fr.dcproject.entity.Article as ArticleEntity
import fr.dcproject.entity.request.Article as ArticleEntityRequest
import fr.dcproject.repository.Article as ArticleRepository
@KtorExperimentalLocationsAPI
@@ -53,8 +54,8 @@ fun Route.article(repo: ArticleRepository) {
}
post<ArticlesPaths.PostArticleRequest> {
val article = call.receive<ArticleEntity>()
article.createdBy = citizen
val request = call.receive<ArticleEntityRequest>()
val article = request.create(citizen)
assertCan(CREATE, article)