Move packages + remove circular dependencies

This commit is contained in:
2020-10-23 17:12:38 +02:00
parent ee026ec829
commit 38750a588c
116 changed files with 242 additions and 87 deletions
+14
View File
@@ -28,10 +28,12 @@
<groupId>org.koin</groupId>
<artifactId>koin-core</artifactId>
</dependency>
<dependency>
<groupId>io.arrow-kt</groupId>
<artifactId>arrow-core</artifactId>
</dependency>
<dependency>
<groupId>com.natpryce</groupId>
<artifactId>hamkrest</artifactId>
@@ -94,6 +96,18 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>be.simplenotes</groupId>
<artifactId>simplenotes-persistance</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>be.simplenotes</groupId>
<artifactId>simplenotes-search</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
@@ -2,7 +2,7 @@ package be.simplenotes.domain.security
import org.owasp.html.HtmlPolicyBuilder
object HtmlSanitizer {
internal object HtmlSanitizer {
private val htmlPolicy = HtmlPolicyBuilder()
.allowElements("a")
.allowCommonBlockElements()
@@ -8,10 +8,10 @@ import be.simplenotes.types.PersistedNoteMetadata
import be.simplenotes.domain.security.HtmlSanitizer
import be.simplenotes.domain.usecases.markdown.MarkdownConverter
import be.simplenotes.domain.usecases.markdown.MarkdownParsingError
import be.simplenotes.domain.usecases.repositories.NoteRepository
import be.simplenotes.domain.usecases.repositories.UserRepository
import be.simplenotes.domain.usecases.search.NoteSearcher
import be.simplenotes.domain.usecases.search.SearchTerms
import be.simplenotes.persistance.repositories.NoteRepository
import be.simplenotes.persistance.repositories.UserRepository
import be.simplenotes.search.NoteSearcher
import be.simplenotes.search.SearchTerms
import java.util.*
class NoteService(
@@ -1,7 +1,7 @@
package be.simplenotes.domain.usecases.export
import be.simplenotes.types.ExportedNote
import be.simplenotes.domain.usecases.repositories.NoteRepository
import be.simplenotes.persistance.repositories.NoteRepository
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.json.Json
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
@@ -4,9 +4,9 @@ import arrow.core.Either
import arrow.core.extensions.fx
import arrow.core.rightIfNotNull
import be.simplenotes.domain.security.PasswordHash
import be.simplenotes.domain.usecases.repositories.UserRepository
import be.simplenotes.domain.usecases.search.NoteSearcher
import be.simplenotes.persistance.repositories.UserRepository
import be.simplenotes.domain.validation.UserValidations
import be.simplenotes.search.NoteSearcher
internal class DeleteUseCaseImpl(
private val userRepository: UserRepository,
@@ -7,8 +7,8 @@ import arrow.core.rightIfNotNull
import be.simplenotes.domain.security.JwtPayload
import be.simplenotes.domain.security.PasswordHash
import be.simplenotes.domain.security.SimpleJwt
import be.simplenotes.domain.usecases.repositories.UserRepository
import be.simplenotes.domain.validation.UserValidations
import be.simplenotes.persistance.repositories.UserRepository
internal class LoginUseCaseImpl(
private val userRepository: UserRepository,
@@ -5,8 +5,8 @@ import arrow.core.filterOrElse
import arrow.core.leftIfNull
import be.simplenotes.types.PersistedUser
import be.simplenotes.domain.security.PasswordHash
import be.simplenotes.domain.usecases.repositories.UserRepository
import be.simplenotes.domain.validation.UserValidations
import be.simplenotes.persistance.repositories.UserRepository
internal class RegisterUseCaseImpl(
private val userRepository: UserRepository,
@@ -0,0 +1,33 @@
module simplenotes.domain {
requires kotlin.stdlib;
requires kotlin.stdlib.jdk7;
requires simplenotes.config;
requires simplenotes.types;
requires simplenotes.persistance;
exports be.simplenotes.domain to simplenotes.app;
exports be.simplenotes.domain.security to simplenotes.app;
exports be.simplenotes.domain.usecases to simplenotes.app;
exports be.simplenotes.domain.usecases.markdown to simplenotes.app;
exports be.simplenotes.domain.usecases.users.login to simplenotes.app;
exports be.simplenotes.domain.usecases.users.delete to simplenotes.app;
exports be.simplenotes.domain.usecases.users.register to simplenotes.app;
requires arrow.module;
requires flexmark;
requires flexmark.util.data;
requires flexmark.ext.gfm.tasklist;
requires koin.core;
requires konform.jvm;
requires org.yaml.snakeyaml;
requires java.jwt;
requires kotlinx.serialization.core.jvm;
requires org.apache.commons.compress;
requires kotlinx.serialization.json.jvm;
requires owasp.java.html.sanitizer;
requires jbcrypt;
requires simplenotes.search;
}
@@ -1,35 +0,0 @@
package be.simplenotes.domain.usecases.repositories
import be.simplenotes.types.ExportedNote
import be.simplenotes.types.Note
import be.simplenotes.types.PersistedNote
import be.simplenotes.types.PersistedNoteMetadata
import java.util.*
interface NoteRepository {
fun findAll(
userId: Int,
limit: Int = 20,
offset: Int = 0,
tag: String? = null,
deleted: Boolean = false
): List<PersistedNoteMetadata>
fun count(userId: Int, tag: String? = null, deleted: Boolean = false): Int
fun delete(userId: Int, uuid: UUID, permanent: Boolean = false): Boolean
fun restore(userId: Int, uuid: UUID): Boolean
// These methods only access notes where `Notes.deleted = false`
fun getTags(userId: Int): List<String>
fun exists(userId: Int, uuid: UUID): Boolean
fun create(userId: Int, note: Note): PersistedNote
fun find(userId: Int, uuid: UUID): PersistedNote?
fun update(userId: Int, uuid: UUID, note: Note): PersistedNote?
fun export(userId: Int): List<ExportedNote>
fun findAllDetails(userId: Int): List<PersistedNote>
fun makePublic(userId: Int, uuid: UUID): Boolean
fun makePrivate(userId: Int, uuid: UUID): Boolean
fun findPublic(uuid: UUID): PersistedNote?
}
@@ -1,14 +0,0 @@
package be.simplenotes.domain.usecases.repositories
import be.simplenotes.types.PersistedUser
import be.simplenotes.types.User
interface UserRepository {
fun create(user: User): PersistedUser?
fun find(username: String): PersistedUser?
fun find(id: Int): PersistedUser?
fun exists(username: String): Boolean
fun exists(id: Int): Boolean
fun delete(id: Int): Boolean
fun findAll(): List<Int>
}
@@ -1,17 +0,0 @@
package be.simplenotes.domain.usecases.search
import be.simplenotes.types.PersistedNote
import be.simplenotes.types.PersistedNoteMetadata
import java.util.*
data class SearchTerms(val title: String?, val tag: String?, val content: String?, val all: String?)
interface NoteSearcher {
fun indexNote(userId: Int, note: PersistedNote)
fun indexNotes(userId: Int, notes: List<PersistedNote>)
fun deleteIndex(userId: Int, uuid: UUID)
fun updateIndex(userId: Int, note: PersistedNote)
fun search(userId: Int, terms: SearchTerms): List<PersistedNoteMetadata>
fun dropIndex(userId: Int)
fun dropAll()
}
@@ -1,5 +0,0 @@
package be.simplenotes.domain
/**
* Empty file @see [root-package-declaration](https://discuss.kotlinlang.org/t/root-package-declaration-to-reduce-folder-clutter/2247/4)
*/
@@ -3,7 +3,7 @@ package be.simplenotes.domain.usecases.users.login
import be.simplenotes.types.PersistedUser
import be.simplenotes.domain.security.BcryptPasswordHash
import be.simplenotes.domain.security.SimpleJwt
import be.simplenotes.domain.usecases.repositories.UserRepository
import be.simplenotes.persistance.repositories.UserRepository
import be.simplenotes.config.JwtConfig
import be.simplenotes.domain.testutils.isLeftOfType
import be.simplenotes.domain.testutils.isRight
@@ -4,7 +4,7 @@ import be.simplenotes.types.PersistedUser
import be.simplenotes.domain.security.BcryptPasswordHash
import be.simplenotes.domain.testutils.isLeftOfType
import be.simplenotes.domain.testutils.isRight
import be.simplenotes.domain.usecases.repositories.UserRepository
import be.simplenotes.persistance.repositories.UserRepository
import com.natpryce.hamkrest.assertion.assertThat
import com.natpryce.hamkrest.equalTo
import io.mockk.*