Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#86 Removed spring from business logic #87

Merged
merged 6 commits into from
Apr 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions botalka/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ jooq {
}
}

val oapiServerPackageName = "$basePackage.api.http.server"
val oapiClientPackageName = "$basePackage.api.http.client"
val oapiServerPackageName = "$basePackage.app.spring.api.http.server"
val oapiClientPackageName = "$basePackage.app.spring.api.http.client"

tasks.named("generateServer", OpenAPIGenerateTask::class) {
packageName = oapiServerPackageName
Expand All @@ -43,7 +43,7 @@ koverReport {
filters {
excludes {
classes(
"$basePackage.BotalkaApplicationKt",
"$basePackage.app.spring.BotalkaApplicationKt",
"$oapiServerPackageName.**",
"$oapiClientPackageName.**",
"$jooqPackageName.**",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ru.vityaman.lms.botalka
package ru.vityaman.lms.botalka.app.spring

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
package ru.vityaman.lms.botalka.api.http.endpoint
package ru.vityaman.lms.botalka.app.spring.api.http.endpoint

import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RestController
import ru.vityaman.lms.botalka.api.http.message.toMessage
import ru.vityaman.lms.botalka.api.http.message.toModel
import ru.vityaman.lms.botalka.api.http.server.HomeworkDraftMessage
import ru.vityaman.lms.botalka.api.http.server.HomeworkMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceEventDraftMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceEventMessage
import ru.vityaman.lms.botalka.api.http.server.apis.HomeworkApi
import ru.vityaman.lms.botalka.domain.model.Homework
import ru.vityaman.lms.botalka.domain.model.Student
import ru.vityaman.lms.botalka.domain.model.User
import ru.vityaman.lms.botalka.domain.model.Workspace
import ru.vityaman.lms.botalka.logic.HomeworkService
import ru.vityaman.lms.botalka.logic.WorkspaceService
import ru.vityaman.lms.botalka.app.spring.api.http.message.toMessage
import ru.vityaman.lms.botalka.app.spring.api.http.message.toModel
import ru.vityaman.lms.botalka.app.spring.api.http.server.HomeworkDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.HomeworkMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceEventDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceEventMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.apis.HomeworkApi
import ru.vityaman.lms.botalka.core.logic.HomeworkService
import ru.vityaman.lms.botalka.core.logic.WorkspaceService
import ru.vityaman.lms.botalka.core.model.Homework
import ru.vityaman.lms.botalka.core.model.Student
import ru.vityaman.lms.botalka.core.model.User
import ru.vityaman.lms.botalka.core.model.Workspace

@RestController
class HomeworkHttpApi(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ru.vityaman.lms.botalka.api.http.endpoint
package ru.vityaman.lms.botalka.app.spring.api.http.endpoint

import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RestController
import ru.vityaman.lms.botalka.api.http.server.apis.MonitoringApi
import ru.vityaman.lms.botalka.app.spring.api.http.server.apis.MonitoringApi

@RestController
class MonitoringHttpApi : MonitoringApi {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package ru.vityaman.lms.botalka.api.http.endpoint
package ru.vityaman.lms.botalka.app.spring.api.http.endpoint

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RestController
import ru.vityaman.lms.botalka.api.http.error.InvalidPromotionRequestStatus
import ru.vityaman.lms.botalka.api.http.message.toMessage
import ru.vityaman.lms.botalka.api.http.message.toModel
import ru.vityaman.lms.botalka.api.http.server.PromotionRequestDraftMessage
import ru.vityaman.lms.botalka.api.http.server.PromotionRequestMessage
import ru.vityaman.lms.botalka.api.http.server.PromotionRequestPatchMessage
import ru.vityaman.lms.botalka.api.http.server.apis.PromotionApi
import ru.vityaman.lms.botalka.domain.model.PromotionRequest
import ru.vityaman.lms.botalka.domain.model.User
import ru.vityaman.lms.botalka.logic.PromotionService
import ru.vityaman.lms.botalka.app.spring.api.http.error.InvalidPromotionRequestStatus
import ru.vityaman.lms.botalka.app.spring.api.http.message.toMessage
import ru.vityaman.lms.botalka.app.spring.api.http.message.toModel
import ru.vityaman.lms.botalka.app.spring.api.http.server.PromotionRequestDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.PromotionRequestMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.PromotionRequestPatchMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.apis.PromotionApi
import ru.vityaman.lms.botalka.core.logic.PromotionService
import ru.vityaman.lms.botalka.core.model.PromotionRequest
import ru.vityaman.lms.botalka.core.model.User

@RestController
class PromotionHttpApi(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package ru.vityaman.lms.botalka.api.http.endpoint
package ru.vityaman.lms.botalka.app.spring.api.http.endpoint

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RestController
import ru.vityaman.lms.botalka.api.http.server.GetRatingGrades200ResponseMessage
import ru.vityaman.lms.botalka.api.http.server.HomeworkGradeMessage
import ru.vityaman.lms.botalka.api.http.server.StudentGradesMessage
import ru.vityaman.lms.botalka.api.http.server.apis.RatingApi
import ru.vityaman.lms.botalka.logic.RatingService
import ru.vityaman.lms.botalka.app.spring.api.http.server.GetRatingGrades200ResponseMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.HomeworkGradeMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.StudentGradesMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.apis.RatingApi
import ru.vityaman.lms.botalka.core.logic.RatingService

typealias RatingGrades = GetRatingGrades200ResponseMessage

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package ru.vityaman.lms.botalka.api.http.endpoint
package ru.vityaman.lms.botalka.app.spring.api.http.endpoint

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RestController
import ru.vityaman.lms.botalka.api.http.message.toMessage
import ru.vityaman.lms.botalka.api.http.message.toModel
import ru.vityaman.lms.botalka.api.http.server.UserDraftMessage
import ru.vityaman.lms.botalka.api.http.server.UserMessage
import ru.vityaman.lms.botalka.api.http.server.apis.UserApi
import ru.vityaman.lms.botalka.domain.exception.orNotFound
import ru.vityaman.lms.botalka.domain.model.User
import ru.vityaman.lms.botalka.logic.UserService
import ru.vityaman.lms.botalka.app.spring.api.http.message.toMessage
import ru.vityaman.lms.botalka.app.spring.api.http.message.toModel
import ru.vityaman.lms.botalka.app.spring.api.http.server.UserDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.UserMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.apis.UserApi
import ru.vityaman.lms.botalka.core.exception.orNotFound
import ru.vityaman.lms.botalka.core.logic.UserService
import ru.vityaman.lms.botalka.core.model.User

@RestController
class UserHttpApi(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package ru.vityaman.lms.botalka.api.http.error
package ru.vityaman.lms.botalka.app.spring.api.http.error

import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import ru.vityaman.lms.botalka.api.http.server.GeneralErrorMessage
import ru.vityaman.lms.botalka.domain.exception.AlreadyAskedPromotionException
import ru.vityaman.lms.botalka.domain.exception.DeadlinePassedException
import ru.vityaman.lms.botalka.domain.exception.DomainException
import ru.vityaman.lms.botalka.domain.exception.InvalidValueException
import ru.vityaman.lms.botalka.domain.exception.NotFoundException
import ru.vityaman.lms.botalka.domain.exception.PromotionRequestResolvedException
import ru.vityaman.lms.botalka.domain.exception.UniqueViolationException
import ru.vityaman.lms.botalka.app.spring.api.http.server.GeneralErrorMessage
import ru.vityaman.lms.botalka.core.exception.AlreadyAskedPromotionException
import ru.vityaman.lms.botalka.core.exception.DeadlinePassedException
import ru.vityaman.lms.botalka.core.exception.DomainException
import ru.vityaman.lms.botalka.core.exception.InvalidValueException
import ru.vityaman.lms.botalka.core.exception.NotFoundException
import ru.vityaman.lms.botalka.core.exception.PromotionRequestResolvedException
import ru.vityaman.lms.botalka.core.exception.UniqueViolationException

val DomainException.httpCode: HttpStatus
get() = when (this) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ru.vityaman.lms.botalka.api.http.error
package ru.vityaman.lms.botalka.app.spring.api.http.error

import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.RestControllerAdvice
import ru.vityaman.lms.botalka.domain.exception.DomainException
import ru.vityaman.lms.botalka.core.exception.DomainException

@RestControllerAdvice
class DomainExceptionMapping {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package ru.vityaman.lms.botalka.api.http.error
package ru.vityaman.lms.botalka.app.spring.api.http.error

import com.fasterxml.jackson.core.JsonParseException
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.RestControllerAdvice
import ru.vityaman.lms.botalka.api.http.server.GeneralErrorMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.GeneralErrorMessage

@RestControllerAdvice
class DriverExceptionMapping {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ru.vityaman.lms.botalka.api.http.error
package ru.vityaman.lms.botalka.app.spring.api.http.error

class InvalidPromotionRequestStatus(message: String) :
Exception("Invalid promotion request status: $message")
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package ru.vityaman.lms.botalka.api.http.message
package ru.vityaman.lms.botalka.app.spring.api.http.message

import ru.vityaman.lms.botalka.api.http.server.HomeworkDraftMessage
import ru.vityaman.lms.botalka.api.http.server.HomeworkMessage
import ru.vityaman.lms.botalka.domain.model.Homework
import ru.vityaman.lms.botalka.app.spring.api.http.server.HomeworkDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.HomeworkMessage
import ru.vityaman.lms.botalka.core.model.Homework

fun Homework.toMessage(): HomeworkMessage =
HomeworkMessage(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package ru.vityaman.lms.botalka.api.http.message
package ru.vityaman.lms.botalka.app.spring.api.http.message

import ru.vityaman.lms.botalka.api.http.server.PromotionRequestMessage
import ru.vityaman.lms.botalka.api.http.server.PromotionRequestStatusMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.PromotionRequestMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.PromotionRequestStatusMessage
import ru.vityaman.lms.botalka.commons.BiMap
import ru.vityaman.lms.botalka.commons.BiMap.Companion.invoke
import ru.vityaman.lms.botalka.domain.model.PromotionRequest
import ru.vityaman.lms.botalka.core.model.PromotionRequest

fun PromotionRequest.toMessage(): PromotionRequestMessage =
PromotionRequestMessage(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package ru.vityaman.lms.botalka.api.http.message
package ru.vityaman.lms.botalka.app.spring.api.http.message

import ru.vityaman.lms.botalka.api.http.server.UserDraftMessage
import ru.vityaman.lms.botalka.api.http.server.UserMessage
import ru.vityaman.lms.botalka.api.http.server.UserRoleMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.UserDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.UserMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.UserRoleMessage
import ru.vityaman.lms.botalka.commons.BiMap
import ru.vityaman.lms.botalka.commons.BiMap.Companion.invoke
import ru.vityaman.lms.botalka.domain.model.User
import ru.vityaman.lms.botalka.core.model.User

fun User.toMessage(): UserMessage =
UserMessage(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package ru.vityaman.lms.botalka.api.http.message
package ru.vityaman.lms.botalka.app.spring.api.http.message

import ru.vityaman.lms.botalka.api.http.server.WorkspaceCommentMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceEventKindMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceEventMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceFeedbackMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceSubmissionMessage
import ru.vityaman.lms.botalka.domain.model.Workspace
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceCommentMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceEventKindMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceEventMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceFeedbackMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceSubmissionMessage
import ru.vityaman.lms.botalka.core.model.Workspace

private val Workspace.Event.kind
get() =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package ru.vityaman.lms.botalka.api.http.message

import ru.vityaman.lms.botalka.api.http.server.WorkspaceCommentDraftMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceEventDraftMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceFeedbackDraftMessage
import ru.vityaman.lms.botalka.api.http.server.WorkspaceSubmissionDraftMessage
import ru.vityaman.lms.botalka.domain.model.Homework
import ru.vityaman.lms.botalka.domain.model.Teacher
import ru.vityaman.lms.botalka.domain.model.User
import ru.vityaman.lms.botalka.domain.model.Workspace
package ru.vityaman.lms.botalka.app.spring.api.http.message

import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceCommentDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceEventDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceFeedbackDraftMessage
import ru.vityaman.lms.botalka.app.spring.api.http.server.WorkspaceSubmissionDraftMessage
import ru.vityaman.lms.botalka.core.model.Homework
import ru.vityaman.lms.botalka.core.model.Teacher
import ru.vityaman.lms.botalka.core.model.User
import ru.vityaman.lms.botalka.core.model.Workspace

fun WorkspaceEventDraftMessage.toModel(producer: User.Id) =
when (this) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ru.vityaman.lms.botalka.app.spring.logic

import org.springframework.stereotype.Service
import ru.vityaman.lms.botalka.core.logic.HomeworkService
import ru.vityaman.lms.botalka.core.logic.basic.BasicHomeworkService
import ru.vityaman.lms.botalka.core.storage.HomeworkStorage

@Service
class SpringHomeworkService(
storage: HomeworkStorage,
) : HomeworkService by BasicHomeworkService(storage)
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.vityaman.lms.botalka.app.spring.logic

import org.springframework.stereotype.Service
import ru.vityaman.lms.botalka.core.logic.PromotionService
import ru.vityaman.lms.botalka.core.logic.UserService
import ru.vityaman.lms.botalka.core.logic.basic.BasicPromotionService
import ru.vityaman.lms.botalka.core.storage.PromotionStorage
import ru.vityaman.lms.botalka.core.tx.TxEnv

@Service
class SpringPromotionService(
storage: PromotionStorage,
userService: UserService,
txEnv: TxEnv,
) : PromotionService by BasicPromotionService(storage, userService, txEnv)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ru.vityaman.lms.botalka.app.spring.logic

import org.springframework.stereotype.Service
import ru.vityaman.lms.botalka.core.logic.RatingService
import ru.vityaman.lms.botalka.core.logic.WorkspaceService
import ru.vityaman.lms.botalka.core.logic.basic.BasicRatingService

@Service
class SpringRatingService(
workspaces: WorkspaceService,
) : RatingService by BasicRatingService(workspaces)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ru.vityaman.lms.botalka.app.spring.logic

import org.springframework.stereotype.Service
import ru.vityaman.lms.botalka.core.logic.UserService
import ru.vityaman.lms.botalka.core.logic.basic.BasicUserService
import ru.vityaman.lms.botalka.core.storage.UserStorage

@Service
class SpringUserService(
storage: UserStorage,
) : UserService by BasicUserService(storage)
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.vityaman.lms.botalka.app.spring.logic

import org.springframework.stereotype.Service
import ru.vityaman.lms.botalka.core.logic.HomeworkService
import ru.vityaman.lms.botalka.core.logic.WorkspaceService
import ru.vityaman.lms.botalka.core.logic.basic.BasicWorkspaceService
import ru.vityaman.lms.botalka.core.storage.WorkspaceStorage
import java.time.Clock

@Service
class SpringWorkspaceService(
storage: WorkspaceStorage,
homeworks: HomeworkService,
clock: Clock,
) : WorkspaceService by BasicWorkspaceService(storage, homeworks, clock)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ru.vityaman.lms.botalka.storage.jooq.config
package ru.vityaman.lms.botalka.app.spring.storage

import io.r2dbc.spi.ConnectionFactory
import org.jooq.DSLContext
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ru.vityaman.lms.botalka.storage.jooq.config
package ru.vityaman.lms.botalka.app.spring.storage

import org.springframework.context.annotation.Configuration
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing
Expand Down
Loading
Loading