/
RestProjectsService.scala
41 lines (36 loc) · 1.7 KB
/
RestProjectsService.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package org.knora.webapi.responders.admin
import zio.Task
import zio.URLayer
import zio.ZLayer
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectGetRequestADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectGetResponseADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectIdentifierADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectsGetRequestADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectsGetResponseADM
import org.knora.webapi.responders.ActorToZioBridge
final case class RestProjectsService(bridge: ActorToZioBridge) {
/**
* Returns all projects as a [[ProjectsGetResponseADM]].
*
* @return
* '''success''': information about the projects as a [[ProjectsGetResponseADM]]
*
* '''failure''': [[dsp.errors.NotFoundException]] when no project was found
*/
def getProjectsADMRequest(): Task[ProjectsGetResponseADM] =
bridge.askAppActor(ProjectsGetRequestADM())
/**
* Finds the project by its [[ProjectIdentifierADM]] and returns the information as a [[ProjectGetResponseADM]].
*
* @param identifier a [[ProjectIdentifierADM]] instance
* @return
* '''success''': information about the project as a [[ProjectGetResponseADM]]
*
* '''failure''': [[dsp.errors.NotFoundException]] when no project for the given IRI can be found
*/
def getSingleProjectADMRequest(identifier: ProjectIdentifierADM): Task[ProjectGetResponseADM] =
bridge.askAppActor(ProjectGetRequestADM(identifier))
}
object RestProjectsService {
val layer: URLayer[ActorToZioBridge, RestProjectsService] = ZLayer.fromFunction(RestProjectsService.apply _)
}