Fix arrow depreciations
This commit is contained in:
parent
c2c03e415e
commit
e64352f54c
@ -1,10 +1,6 @@
|
|||||||
package be.simplenotes.domain.usecases
|
package be.simplenotes.domain.usecases
|
||||||
|
|
||||||
import arrow.core.Either
|
import arrow.core.computations.either
|
||||||
import arrow.core.extensions.fx
|
|
||||||
import be.simplenotes.types.Note
|
|
||||||
import be.simplenotes.types.PersistedNote
|
|
||||||
import be.simplenotes.types.PersistedNoteMetadata
|
|
||||||
import be.simplenotes.domain.security.HtmlSanitizer
|
import be.simplenotes.domain.security.HtmlSanitizer
|
||||||
import be.simplenotes.domain.usecases.markdown.MarkdownConverter
|
import be.simplenotes.domain.usecases.markdown.MarkdownConverter
|
||||||
import be.simplenotes.domain.usecases.markdown.MarkdownParsingError
|
import be.simplenotes.domain.usecases.markdown.MarkdownParsingError
|
||||||
@ -12,6 +8,9 @@ import be.simplenotes.persistance.repositories.NoteRepository
|
|||||||
import be.simplenotes.persistance.repositories.UserRepository
|
import be.simplenotes.persistance.repositories.UserRepository
|
||||||
import be.simplenotes.search.NoteSearcher
|
import be.simplenotes.search.NoteSearcher
|
||||||
import be.simplenotes.search.SearchTerms
|
import be.simplenotes.search.SearchTerms
|
||||||
|
import be.simplenotes.types.Note
|
||||||
|
import be.simplenotes.types.PersistedNote
|
||||||
|
import be.simplenotes.types.PersistedNoteMetadata
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class NoteService(
|
class NoteService(
|
||||||
@ -21,7 +20,7 @@ class NoteService(
|
|||||||
private val searcher: NoteSearcher,
|
private val searcher: NoteSearcher,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun create(userId: Int, markdownText: String) = Either.fx<MarkdownParsingError, PersistedNote> {
|
fun create(userId: Int, markdownText: String) = either.eager<MarkdownParsingError, PersistedNote> {
|
||||||
val persistedNote = !markdownConverter.renderDocument(markdownText)
|
val persistedNote = !markdownConverter.renderDocument(markdownText)
|
||||||
.map { it.copy(html = HtmlSanitizer.sanitize(it.html)) }
|
.map { it.copy(html = HtmlSanitizer.sanitize(it.html)) }
|
||||||
.map { Note(it.metadata, markdown = markdownText, html = it.html) }
|
.map { Note(it.metadata, markdown = markdownText, html = it.html) }
|
||||||
@ -31,7 +30,7 @@ class NoteService(
|
|||||||
persistedNote
|
persistedNote
|
||||||
}
|
}
|
||||||
|
|
||||||
fun update(userId: Int, uuid: UUID, markdownText: String) = Either.fx<MarkdownParsingError, PersistedNote?> {
|
fun update(userId: Int, uuid: UUID, markdownText: String) = either.eager<MarkdownParsingError, PersistedNote?> {
|
||||||
val persistedNote = !markdownConverter.renderDocument(markdownText)
|
val persistedNote = !markdownConverter.renderDocument(markdownText)
|
||||||
.map { it.copy(html = HtmlSanitizer.sanitize(it.html)) }
|
.map { it.copy(html = HtmlSanitizer.sanitize(it.html)) }
|
||||||
.map { Note(it.metadata, markdown = markdownText, html = it.html) }
|
.map { Note(it.metadata, markdown = markdownText, html = it.html) }
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package be.simplenotes.domain.usecases.markdown
|
package be.simplenotes.domain.usecases.markdown
|
||||||
|
|
||||||
import arrow.core.Either
|
import arrow.core.Either
|
||||||
import arrow.core.extensions.fx
|
import arrow.core.computations.either
|
||||||
import arrow.core.left
|
import arrow.core.left
|
||||||
import arrow.core.right
|
import arrow.core.right
|
||||||
import be.simplenotes.types.NoteMetadata
|
|
||||||
import be.simplenotes.domain.validation.NoteValidations
|
import be.simplenotes.domain.validation.NoteValidations
|
||||||
|
import be.simplenotes.types.NoteMetadata
|
||||||
import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension
|
import com.vladsch.flexmark.ext.gfm.tasklist.TaskListExtension
|
||||||
import com.vladsch.flexmark.html.HtmlRenderer
|
import com.vladsch.flexmark.html.HtmlRenderer
|
||||||
import com.vladsch.flexmark.parser.Parser
|
import com.vladsch.flexmark.parser.Parser
|
||||||
@ -73,10 +73,10 @@ internal class MarkdownConverterImpl : MarkdownConverter {
|
|||||||
|
|
||||||
private fun renderMarkdown(markdown: String) = parser.parse(markdown).run(renderer::render)
|
private fun renderMarkdown(markdown: String) = parser.parse(markdown).run(renderer::render)
|
||||||
|
|
||||||
override fun renderDocument(input: String) = Either.fx<MarkdownParsingError, Document> {
|
override fun renderDocument(input: String) = either.eager<MarkdownParsingError, Document> {
|
||||||
val (meta, md) = !splitMetaFromDocument(input)
|
val (meta, md) = !splitMetaFromDocument(input)
|
||||||
val parsedMeta = !parseMeta(meta)
|
val parsedMeta = !parseMeta(meta)
|
||||||
!NoteValidations.validateMetadata(parsedMeta).toEither { }.swap()
|
!Either.fromNullable(NoteValidations.validateMetadata(parsedMeta)).swap()
|
||||||
val html = renderMarkdown(md)
|
val html = renderMarkdown(md)
|
||||||
Document(parsedMeta, html)
|
Document(parsedMeta, html)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
package be.simplenotes.domain.usecases.users.delete
|
package be.simplenotes.domain.usecases.users.delete
|
||||||
|
|
||||||
import arrow.core.Either
|
import arrow.core.Either
|
||||||
import arrow.core.extensions.fx
|
import arrow.core.computations.either
|
||||||
import arrow.core.rightIfNotNull
|
import arrow.core.rightIfNotNull
|
||||||
import be.simplenotes.domain.security.PasswordHash
|
import be.simplenotes.domain.security.PasswordHash
|
||||||
import be.simplenotes.persistance.repositories.UserRepository
|
|
||||||
import be.simplenotes.domain.validation.UserValidations
|
import be.simplenotes.domain.validation.UserValidations
|
||||||
|
import be.simplenotes.persistance.repositories.UserRepository
|
||||||
import be.simplenotes.search.NoteSearcher
|
import be.simplenotes.search.NoteSearcher
|
||||||
|
|
||||||
internal class DeleteUseCaseImpl(
|
internal class DeleteUseCaseImpl(
|
||||||
@ -13,15 +13,14 @@ internal class DeleteUseCaseImpl(
|
|||||||
private val passwordHash: PasswordHash,
|
private val passwordHash: PasswordHash,
|
||||||
private val searcher: NoteSearcher,
|
private val searcher: NoteSearcher,
|
||||||
) : DeleteUseCase {
|
) : DeleteUseCase {
|
||||||
override fun delete(form: DeleteForm) = Either.fx<DeleteError, Unit> {
|
override fun delete(form: DeleteForm) = either.eager<DeleteError, Unit> {
|
||||||
val user = !UserValidations.validateDelete(form)
|
val user = !UserValidations.validateDelete(form)
|
||||||
val persistedUser = !userRepository.find(user.username).rightIfNotNull { DeleteError.Unregistered }
|
val persistedUser = !userRepository.find(user.username).rightIfNotNull { DeleteError.Unregistered }
|
||||||
!Either.cond(
|
!Either.conditionally(
|
||||||
passwordHash.verify(user.password, persistedUser.password),
|
passwordHash.verify(user.password, persistedUser.password),
|
||||||
{ Unit },
|
{ DeleteError.WrongPassword },
|
||||||
{ DeleteError.WrongPassword }
|
{ Unit })
|
||||||
)
|
!Either.conditionally(userRepository.delete(persistedUser.id), { DeleteError.Unregistered }, { Unit })
|
||||||
!Either.cond(userRepository.delete(persistedUser.id), { Unit }, { DeleteError.Unregistered })
|
|
||||||
searcher.dropIndex(persistedUser.id)
|
searcher.dropIndex(persistedUser.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package be.simplenotes.domain.usecases.users.login
|
package be.simplenotes.domain.usecases.users.login
|
||||||
|
|
||||||
import arrow.core.Either
|
import arrow.core.computations.either
|
||||||
import arrow.core.extensions.fx
|
|
||||||
import arrow.core.filterOrElse
|
import arrow.core.filterOrElse
|
||||||
import arrow.core.rightIfNotNull
|
import arrow.core.rightIfNotNull
|
||||||
import be.simplenotes.domain.security.PasswordHash
|
import be.simplenotes.domain.security.PasswordHash
|
||||||
@ -15,7 +14,7 @@ internal class LoginUseCaseImpl(
|
|||||||
private val passwordHash: PasswordHash,
|
private val passwordHash: PasswordHash,
|
||||||
private val jwt: SimpleJwt
|
private val jwt: SimpleJwt
|
||||||
) : LoginUseCase {
|
) : LoginUseCase {
|
||||||
override fun login(form: LoginForm) = Either.fx<LoginError, Token> {
|
override fun login(form: LoginForm) = either.eager<LoginError, Token> {
|
||||||
val user = !UserValidations.validateLogin(form)
|
val user = !UserValidations.validateLogin(form)
|
||||||
!userRepository.find(user.username)
|
!userRepository.find(user.username)
|
||||||
.rightIfNotNull { Unregistered }
|
.rightIfNotNull { Unregistered }
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
package be.simplenotes.domain.validation
|
package be.simplenotes.domain.validation
|
||||||
|
|
||||||
import arrow.core.*
|
|
||||||
import be.simplenotes.types.NoteMetadata
|
|
||||||
import be.simplenotes.domain.usecases.markdown.ValidationError
|
import be.simplenotes.domain.usecases.markdown.ValidationError
|
||||||
|
import be.simplenotes.types.NoteMetadata
|
||||||
import io.konform.validation.Validation
|
import io.konform.validation.Validation
|
||||||
import io.konform.validation.jsonschema.maxItems
|
import io.konform.validation.jsonschema.maxItems
|
||||||
import io.konform.validation.jsonschema.maxLength
|
import io.konform.validation.jsonschema.maxLength
|
||||||
@ -28,9 +27,9 @@ internal object NoteValidations {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun validateMetadata(meta: NoteMetadata): Option<ValidationError> {
|
fun validateMetadata(meta: NoteMetadata): ValidationError? {
|
||||||
val errors = metaValidator.validate(meta).errors
|
val errors = metaValidator.validate(meta).errors
|
||||||
return if (errors.isEmpty()) none()
|
return if (errors.isEmpty()) null
|
||||||
else return ValidationError(errors).some()
|
else return ValidationError(errors)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user