-
Notifications
You must be signed in to change notification settings - Fork 95
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
20 changed files
with
376 additions
and
267 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
...i/src/main/scala/pl/touk/nussknacker/ui/customhttpservice/CustomHttpServiceProvider.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package pl.touk.nussknacker.ui.customhttpservice | ||
|
||
import akka.http.scaladsl.server.Directives.reject | ||
import akka.http.scaladsl.server.Route | ||
import pl.touk.nussknacker.ui.security.api.LoggedUser | ||
|
||
trait CustomHttpServiceProvider { | ||
def provideRouteWithUser(implicit user: LoggedUser): Route | ||
def provideRouteWithoutUser(): Route | ||
} | ||
|
||
object CustomHttpServiceProvider { | ||
|
||
def noop: CustomHttpServiceProvider = new CustomHttpServiceProvider { | ||
override def provideRouteWithUser(implicit user: LoggedUser): Route = reject | ||
override def provideRouteWithoutUser(): Route = reject | ||
} | ||
|
||
} |
16 changes: 16 additions & 0 deletions
16
...ain/scala/pl/touk/nussknacker/ui/customhttpservice/CustomHttpServiceProviderFactory.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package pl.touk.nussknacker.ui.customhttpservice | ||
|
||
import com.typesafe.config.Config | ||
import pl.touk.nussknacker.ui.customhttpservice.services.NussknackerServicesForCustomHttpService | ||
|
||
import scala.concurrent.ExecutionContext | ||
|
||
trait CustomHttpServiceProviderFactory { | ||
|
||
def create( | ||
config: Config, | ||
executionContext: ExecutionContext, | ||
services: NussknackerServicesForCustomHttpService | ||
): CustomHttpServiceProvider | ||
|
||
} |
5 changes: 5 additions & 0 deletions
5
...k/nussknacker/ui/customhttpservice/services/NussknackerServicesForCustomHttpService.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package pl.touk.nussknacker.ui.customhttpservice.services | ||
|
||
final case class NussknackerServicesForCustomHttpService( | ||
scenarioService: ScenarioService, | ||
) |
67 changes: 67 additions & 0 deletions
67
...pi/src/main/scala/pl/touk/nussknacker/ui/customhttpservice/services/ScenarioService.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package pl.touk.nussknacker.ui.customhttpservice.services | ||
|
||
import pl.touk.nussknacker.engine.api.component.ProcessingMode | ||
import pl.touk.nussknacker.engine.api.deployment.{ProcessAction, ProcessState} | ||
import pl.touk.nussknacker.engine.api.process._ | ||
import pl.touk.nussknacker.engine.deployment.EngineSetupName | ||
import pl.touk.nussknacker.ui.customhttpservice.services.ScenarioService._ | ||
import pl.touk.nussknacker.ui.security.api.LoggedUser | ||
|
||
import java.time.Instant | ||
import scala.concurrent.Future | ||
|
||
trait ScenarioService { | ||
|
||
def getLatestProcessesWithDetails(query: ScenarioQuery)( | ||
implicit user: LoggedUser | ||
): Future[List[ScenarioWithDetails]] | ||
|
||
def getLatestVersionForProcesses(query: ScenarioQuery, excludedUserNames: Set[String])( | ||
implicit user: LoggedUser | ||
): Future[Map[ProcessId, ScenarioVersionMetadata]] | ||
|
||
} | ||
|
||
object ScenarioService { | ||
|
||
final case class ScenarioWithDetails( | ||
name: ProcessName, | ||
processVersionId: VersionId, | ||
isLatestVersion: Boolean, | ||
description: Option[String], | ||
isArchived: Boolean, | ||
isFragment: Boolean, | ||
processingType: ProcessingType, | ||
processCategory: String, | ||
processingMode: ProcessingMode, | ||
engineSetupName: EngineSetupName, | ||
modifiedAt: Instant, | ||
modifiedBy: String, | ||
createdAt: Instant, | ||
createdBy: String, | ||
labels: List[String], | ||
// Actions are deprecated | ||
lastDeployedAction: Option[ProcessAction], | ||
lastStateAction: Option[ProcessAction], | ||
lastAction: Option[ProcessAction], | ||
// | ||
modelVersion: Option[Int], | ||
state: Option[ProcessState], | ||
) | ||
|
||
final case class ScenarioQuery( | ||
isFragment: Option[Boolean] = None, | ||
isArchived: Option[Boolean] = None, | ||
isDeployed: Option[Boolean] = None, | ||
categories: Option[Seq[String]] = None, | ||
processingTypes: Option[Seq[String]] = None, | ||
names: Option[Seq[ProcessName]] = None, | ||
) | ||
|
||
final case class ScenarioVersionMetadata( | ||
versionId: VersionId, | ||
createdAt: Instant, | ||
createdByUser: String, | ||
) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
78 changes: 78 additions & 0 deletions
78
.../server/src/main/scala/pl/touk/nussknacker/ui/customhttpservice/ScenarioServiceImpl.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package pl.touk.nussknacker.ui.customhttpservice | ||
|
||
import pl.touk.nussknacker.engine.api.process.ProcessId | ||
import pl.touk.nussknacker.restmodel.scenariodetails.ScenarioWithDetails | ||
import pl.touk.nussknacker.ui.customhttpservice.services.ScenarioService | ||
import pl.touk.nussknacker.ui.process.ProcessService.GetScenarioWithDetailsOptions | ||
import pl.touk.nussknacker.ui.process.repository.FetchingProcessRepository.ScenarioVersionMetadata | ||
import pl.touk.nussknacker.ui.process.{ProcessService, ScenarioQuery} | ||
import pl.touk.nussknacker.ui.security.api.LoggedUser | ||
|
||
import scala.concurrent.{ExecutionContext, Future} | ||
import scala.language.implicitConversions | ||
|
||
class ScenarioServiceImpl( | ||
processService: ProcessService | ||
)(implicit executionContext: ExecutionContext) | ||
extends ScenarioService { | ||
|
||
override def getLatestProcessesWithDetails( | ||
query: ScenarioService.ScenarioQuery | ||
)(implicit user: LoggedUser): Future[List[ScenarioService.ScenarioWithDetails]] = | ||
processService | ||
.getLatestProcessesWithDetails( | ||
toDomain(query), | ||
GetScenarioWithDetailsOptions.withoutAdditionalFields.withFetchState | ||
) | ||
.map(_.map(toApi)) | ||
|
||
override def getLatestVersionForProcesses( | ||
query: ScenarioService.ScenarioQuery, | ||
excludedUserNames: Set[String] | ||
)(implicit user: LoggedUser): Future[Map[ProcessId, ScenarioService.ScenarioVersionMetadata]] = | ||
processService | ||
.getLatestVersionForProcesses(toDomain(query), excludedUserNames) | ||
.map(_.map { case (processId, metadata) => (processId, toApi(metadata)) }) | ||
|
||
private def toDomain(query: ScenarioService.ScenarioQuery): ScenarioQuery = | ||
ScenarioQuery( | ||
isFragment = query.isFragment, | ||
isArchived = query.isArchived, | ||
isDeployed = query.isDeployed, | ||
categories = query.categories, | ||
processingTypes = query.processingTypes, | ||
names = query.names, | ||
) | ||
|
||
private def toApi(metadata: ScenarioVersionMetadata): ScenarioService.ScenarioVersionMetadata = | ||
ScenarioService.ScenarioVersionMetadata( | ||
versionId = metadata.versionId, | ||
createdAt = metadata.createdAt, | ||
createdByUser = metadata.createdByUser, | ||
) | ||
|
||
private implicit def toApi(metadata: ScenarioWithDetails): ScenarioService.ScenarioWithDetails = | ||
ScenarioService.ScenarioWithDetails( | ||
name = metadata.name, | ||
processVersionId = metadata.processVersionId, | ||
isLatestVersion = metadata.isLatestVersion, | ||
description = metadata.description, | ||
isArchived = metadata.isArchived, | ||
isFragment = metadata.isFragment, | ||
processingType = metadata.processingType, | ||
processCategory = metadata.processCategory, | ||
processingMode = metadata.processingMode, | ||
engineSetupName = metadata.engineSetupName, | ||
modifiedAt = metadata.modifiedAt, | ||
modifiedBy = metadata.modifiedBy, | ||
createdAt = metadata.createdAt, | ||
createdBy = metadata.createdBy, | ||
labels = metadata.labels, | ||
lastDeployedAction = metadata.lastDeployedAction, | ||
lastStateAction = metadata.lastStateAction, | ||
lastAction = metadata.lastAction, | ||
modelVersion = metadata.modelVersion, | ||
state = metadata.state, | ||
) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.