/
CacheService.scala
50 lines (46 loc) · 1.7 KB
/
CacheService.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
42
43
44
45
46
47
48
49
50
/*
* Copyright © 2021 - 2022 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors.
* SPDX-License-Identifier: Apache-2.0
*/
package org.knora.webapi.store.cacheservice.api
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectIdentifierADM
import org.knora.webapi.messages.admin.responder.usersmessages.UserADM
import org.knora.webapi.messages.admin.responder.usersmessages.UserIdentifierADM
import org.knora.webapi.messages.store.cacheservicemessages.CacheServiceStatusResponse
import zio._
import zio.macros.accessible
/**
* Cache Service Interface
*/
@accessible
trait CacheService {
def putUserADM(value: UserADM): Task[Unit]
def getUserADM(identifier: UserIdentifierADM): Task[Option[UserADM]]
def putProjectADM(value: ProjectADM): Task[Unit]
def getProjectADM(identifier: ProjectIdentifierADM): Task[Option[ProjectADM]]
def putStringValue(key: String, value: String): Task[Unit]
def getStringValue(key: String): Task[Option[String]]
def removeValues(keys: Set[String]): Task[Unit]
def flushDB(requestingUser: UserADM): Task[Unit]
def ping(): Task[CacheServiceStatusResponse]
}
/**
* Cache Service companion object using [[Accessible]].
* To use, simply call `Companion(_.someMethod)`, to return a ZIO
* effect that requires the Service in its environment.
*
* Example:
* {{{
* trait CacheService {
* def ping(): Task[CacheServiceStatusResponse]
* }
*
* object CacheService extends Accessible[CacheService]
*
* val example: ZIO[CacheService, Nothing, Unit] =
* for {
* _ <- CacheService(_.ping())
* } yield ()
* }}}
*/