replace Article entity by Article request for the HTTP request
Add draft
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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(),
|
||||
|
||||
41
src/main/kotlin/fr/dcproject/entity/request/Article.kt
Normal file
41
src/main/kotlin/fr/dcproject/entity/request/Article.kt
Normal 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() }
|
||||
}
|
||||
}
|
||||
3
src/main/kotlin/fr/dcproject/entity/request/Request.kt
Normal file
3
src/main/kotlin/fr/dcproject/entity/request/Request.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
package fr.dcproject.entity.request
|
||||
|
||||
interface Request
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user