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

refactor: remove methods that gets project and members by UUID #2346

Merged
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -6,7 +6,6 @@
package org.knora.webapi.store.cache.impl

import dsp.errors.BadRequestException
import dsp.valueobjects.V2UuidValidation
import org.knora.webapi.messages.StringFormatter
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectIdentifierADM._
Expand Down Expand Up @@ -106,17 +105,6 @@ object CacheInMemImplZSpec extends ZIOSpecDefault {
.getOrElseWith(e => throw BadRequestException(e.head.getMessage))
)
} yield assert(retrievedProject)(equalTo(Some(project)))
),
test("successfully store a project and retrieve by UUID")(
for {
_ <- CacheService.putProjectADM(project)
retrievedProject <-
CacheService.getProjectADM(
UuidIdentifier
.fromString(V2UuidValidation.getUuidFromIri(project.id))
.getOrElseWith(e => throw BadRequestException(e.head.getMessage))
)
} yield assert(retrievedProject)(equalTo(Some(project)))
)
)

Expand Down
Expand Up @@ -10,7 +10,6 @@ import zio.test.Assertion._
import zio.test._

import dsp.errors.BadRequestException
import dsp.valueobjects.V2UuidValidation
import org.knora.webapi.messages.StringFormatter
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectADM
import org.knora.webapi.messages.admin.responder.projectsmessages.ProjectIdentifierADM._
Expand Down Expand Up @@ -98,17 +97,6 @@ object CacheRedisImplZSpec extends ZIOSpecDefault {
.getOrElseWith(e => throw BadRequestException(e.head.getMessage))
)
} yield assert(retrievedProject)(equalTo(Some(project)))
),
test("successfully store a project and retrieve by UUID")(
for {
_ <- CacheService.putProjectADM(project)
retrievedProject <-
CacheService.getProjectADM(
UuidIdentifier
.fromString(V2UuidValidation.getUuidFromIri(project.id))
.getOrElseWith(e => throw BadRequestException(e.head.getMessage))
)
} yield assert(retrievedProject)(equalTo(Some(project)))
)
)
}
Expand Up @@ -20,7 +20,6 @@ import dsp.errors.BadRequestException
import dsp.errors.OntologyConstraintException
import dsp.errors.ValidationException
import dsp.valueobjects.Iri.ProjectIri
import dsp.valueobjects.Iri._
import dsp.valueobjects.Project._
import dsp.valueobjects.V2
import org.knora.webapi.IRI
Expand Down Expand Up @@ -511,7 +510,7 @@ case class ProjectADM(
}

/**
* Represents the project's identifier, which can be an IRI, shortcode, shortname or UUID.
* Represents the project's identifier, which can be an IRI, shortcode or shortname.
*/
sealed trait ProjectIdentifierADM { self =>
def asIriIdentifierOption: Option[String] =
Expand All @@ -531,12 +530,6 @@ sealed trait ProjectIdentifierADM { self =>
case ShortnameIdentifier(value) => Some(value.value)
case _ => None
}

def asUuidIdentifierOption: Option[String] =
self match {
case UuidIdentifier(value) => Some(UuidIdentifier.makeProjectIri(value.value))
case _ => None
}
}

object ProjectIdentifierADM {
Expand Down Expand Up @@ -580,33 +573,17 @@ object ProjectIdentifierADM {
}
}

/**
* Represents [[UuidIdentifier]] identifier.
*
* @param value that constructs the identifier in the type of [[Base64Uuid]] value object.
*/
final case class UuidIdentifier(value: Base64Uuid) extends ProjectIdentifierADM
object UuidIdentifier {
def fromString(value: String): Validation[ValidationException, UuidIdentifier] =
Base64Uuid.make(value).map {
UuidIdentifier(_)
}

def makeProjectIri(uuid: String) = s"http://rdfh.ch/projects/${uuid}"
}

/**
* Gets desired Project identifier value.
*
* @param identifier either IRI, Shortname, Shortcode or UUID of the project.
* @param identifier either IRI, Shortname or Shortcode of the project.
* @return identifier's value as [[String]]
*/
def getId(identifier: ProjectIdentifierADM): String =
identifier match {
case IriIdentifier(value) => value.value
case ShortnameIdentifier(value) => value.value
case ShortcodeIdentifier(value) => value.value
case UuidIdentifier(value) => UuidIdentifier.makeProjectIri(value.value)
}
}

Expand Down
Expand Up @@ -52,13 +52,11 @@ class ProjectsRouteADM(routeData: KnoraRouteData)
getKeywords() ~
getProjectKeywords() ~
getProjectByIri() ~
getProjectByUuid() ~
getProjectByShortname() ~
getProjectByShortcode() ~
changeProject() ~
deleteProject() ~
getProjectMembersByIri() ~
getProjectMembersByUuid() ~
getProjectMembersByShortname() ~
getProjectMembersByShortcode() ~
getProjectAdminMembersByIri() ~
Expand Down Expand Up @@ -212,34 +210,6 @@ class ProjectsRouteADM(routeData: KnoraRouteData)
}
}

/**
* Returns a single project identified through the Base64 encoded UUID.
*/
private def getProjectByUuid(): Route =
path(projectsBasePath / "uuid" / Segment) { value =>
get { requestContext =>
val requestMessage: Future[ProjectGetRequestADM] = for {
requestingUser <- getUserADM(
requestContext = requestContext,
routeData.appConfig
)

} yield ProjectGetRequestADM(
identifier = UuidIdentifier
.fromString(value)
.getOrElseWith(e => throw BadRequestException(e.head.getMessage)),
requestingUser = requestingUser
)

RouteUtilADM.runJsonRoute(
requestMessageF = requestMessage,
requestContext = requestContext,
appActor = appActor,
log = log
)
}
}

/**
* Returns a single project identified through the shortname.
*/
Expand Down Expand Up @@ -388,34 +358,6 @@ class ProjectsRouteADM(routeData: KnoraRouteData)
}
}

/**
* Returns all members of a project identified through the Base64 encoded UUID.
*/
private def getProjectMembersByUuid(): Route =
path(projectsBasePath / "uuid" / Segment / "members") { value =>
get { requestContext =>
val requestMessage: Future[ProjectMembersGetRequestADM] = for {
requestingUser <- getUserADM(
requestContext = requestContext,
routeData.appConfig
)

} yield ProjectMembersGetRequestADM(
identifier = UuidIdentifier
.fromString(value)
.getOrElseWith(e => throw BadRequestException(e.head.getMessage)),
requestingUser = requestingUser
)

RouteUtilADM.runJsonRoute(
requestMessageF = requestMessage,
requestContext = requestContext,
appActor = appActor,
log = log
)
}
}

/**
* Returns all members of a project identified through the shortname.
*/
Expand Down
Expand Up @@ -125,7 +125,6 @@ case class CacheServiceInMemImpl(
case IriIdentifier(value) => getProjectByIri(value)
case ShortcodeIdentifier(value) => getProjectByShortcode(value)
case ShortnameIdentifier(value) => getProjectByShortname(value)
case UuidIdentifier(value) => getProjectByUuid(value)
}).tap(_ => ZIO.logDebug(s"Retrieved ProjectADM from Cache: $identifier"))

/**
Expand Down Expand Up @@ -160,15 +159,6 @@ case class CacheServiceInMemImpl(
project <- projects.get(iri).some
} yield project).commit.unsome

/**
* Retrieves the project by the UUID.
*
* @param uuid the project's UUID
* @return an optional [[ProjectADM]].
*/
def getProjectByUuid(uuid: Iri.Base64Uuid) =
projects.get(UuidIdentifier.makeProjectIri(uuid.value)).commit

/**
* Store string or byte array value under key.
*
Expand Down
Expand Up @@ -118,7 +118,6 @@ case class CacheServiceRedisImpl(pool: JedisPool) extends CacheService {
case IriIdentifier(value) => getProjectByIri(value)
case ShortcodeIdentifier(value) => getProjectByShortcode(value)
case ShortnameIdentifier(value) => getProjectByShortname(value)
case UuidIdentifier(value) => getProjectByUuid(value)
}

/**
Expand Down Expand Up @@ -171,22 +170,6 @@ case class CacheServiceRedisImpl(pool: JedisPool) extends CacheService {
}
} yield project)

/**
* Retrieves the project by its UUID.
*
* @param id the project's UUID
* @return an optional [[ProjectADM]].
*/
def getProjectByUuid(uuid: Iri.Base64Uuid): Task[Option[ProjectADM]] =
(for {
bytes <- getBytesValue(UuidIdentifier.makeProjectIri(uuid.value))
project <-
bytes match {
case Some(value) => CacheSerialization.deserialize[ProjectADM](value)
case None => ZIO.succeed(None)
}
} yield project)

/**
* Store string value under key.
*
Expand Down