Skip to content

Commit

Permalink
more generated helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
ValdemarGr committed Nov 10, 2023
1 parent 52c3999 commit b28af4b
Show file tree
Hide file tree
Showing 10 changed files with 54 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import cats.implicits._
import com.authzed.api.v1.{permission_service => ps}

final case class CheckPermissionRequest(
consistency: Option[Consistency],
consistency: Option[Consistency] = None,
resource: ObjectReference,
permission: Relation,
subject: SubjectReference
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ import com.authzed.api.v1.{permission_service => ps}

final case class DeleteRelationshipsRequest(
filter: RelationshipFilter,
preconditions: List[Precondition],
limit: Option[Limit],
allowPartialDeletions: Option[Boolean]
preconditions: List[Precondition] = Nil,
limit: Option[Limit] = None,
allowPartialDeletions: Option[Boolean] = None
) {
def encode = ps.DeleteRelationshipsRequest.of(
filter.encode.some,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import cats.implicits._
import com.authzed.api.v1.{permission_service => ps}

final case class ExpandPermissionTreeRequest(
consistency: Option[Consistency],
consistency: Option[Consistency] = None,
resource: ObjectReference,
permission: Relation
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ import cats.implicits._
import com.authzed.api.v1.{permission_service => ps}

final case class LookupResourcesRequest(
consistency: Option[Consistency],
consistency: Option[Consistency] = None,
resourceObjectType: Type,
permission: Relation,
subjectReference: SubjectReference,
limit: Option[Limit],
cursor: Option[Cursor]
limit: Option[Limit] = None,
cursor: Option[Cursor] = None
) {
def encode = ps.LookupResourcesRequest.of(
consistency.map(_.encode),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ import cats.implicits._
import com.authzed.api.v1.{permission_service => ps}

final case class LookupSubjectsRequest(
consistency: Option[Consistency],
consistency: Option[Consistency] = None,
objectReference: ObjectReference,
permission: Relation,
subjectObjectType: Type,
subjectRelation: Option[Relation],
limit: Option[Limit],
cursor: Option[Cursor],
wildcardOption: Option[LookupSubjectsRequest.WildcardOption]
subjectRelation: Option[Relation] = None,
limit: Option[Limit] = None,
cursor: Option[Cursor] = None,
wildcardOption: Option[LookupSubjectsRequest.WildcardOption] = None
) {
def encode = ps.LookupSubjectsRequest.of(
consistency.map(_.encode),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,22 @@ import com.authzed.api.v1.{permission_service => ps}

final case class RelationshipFilter(
resourceType: Type,
resourceId: Option[Id],
relation: Option[Relation],
subjectFilter: Option[SubjectFilter]
resourceId: Option[Id] = None,
relation: Option[Relation] = None,
subjectFilter: Option[SubjectFilter] = None
) {
def encode = ps.RelationshipFilter.of(
resourceType.value,
resourceId.foldMap(_.value),
relation.foldMap(_.value),
subjectFilter.map(_.encode)
)

def setResourceType(rt: Type) = copy(resourceType = rt)

def setResourceId(id: Id) = copy(resourceId = Some(id))

def setRelation(rel: Relation) = copy(relation = Some(rel))

def setSubjectFilter(sf: SubjectFilter) = copy(subjectFilter = Some(sf))
}
10 changes: 8 additions & 2 deletions client/src/main/scala/spice4s/client/models/SubjectFilter.scala
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,18 @@ import com.authzed.api.v1.{permission_service => ps}

final case class SubjectFilter(
subjectType: Type,
subjectId: Option[Id],
relationFilter: Option[Relation]
subjectId: Option[Id] = None,
relationFilter: Option[Relation] = None
) {
def encode = ps.SubjectFilter.of(
subjectType.value,
subjectId.foldMap(_.value),
relationFilter.map(f => ps.SubjectFilter.RelationFilter.of(f.value))
)

def setSubjectType(st: Type) = copy(subjectType = st)

def setSubjectId(id: Id) = copy(subjectId = Some(id))

def setRelationFilter(rf: Relation) = copy(relationFilter = Some(rf))
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import com.authzed.api.v1.core

final case class SubjectReference(
obj: ObjectReference,
relation: Option[Relation]
relation: Option[Relation] = None
) {
def encode = core.SubjectReference.of(
obj.encode.some,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import cats._

final case class WriteRelationshipsRequest(
updates: NonEmptyList[RelationshipUpdate],
preconditions: List[Precondition]
preconditions: List[Precondition] = Nil
) {
def encode = ps.WriteRelationshipsRequest.of(
updates.map(_.encode).toList,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,26 @@ trait Spice4sRelation[Res <: Spice4sResource, Rel <: Spice4sRelationType, Sub <:
def subjects: NonEmptyList[Spice4sCompanion[? <: Spice4sResource]] = NonEmptyList.one(subResource)
def apply(res: Res, sub: Sub): RelationshipRequest[Res, Rel, Sub] =
RelationshipRequest(res, relation, sub, subjectRelation)
def lookupSubjects(res: Res): LookupSubjectsRequest =
LookupSubjectsRequest(
None,
res.ref,
relation.relation,
subResource.constants.objectType,
subjectRelation,
None,
None,
None
)
def lookupResources(sub: Sub): LookupResourcesRequest =
LookupResourcesRequest(
None,
resource.constants.objectType,
relation.relation,
SubjectReference(sub.ref, subjectRelation),
None,
None
)
}

trait Spice4sUnionRelation[
Expand Down

0 comments on commit b28af4b

Please sign in to comment.