Role.where()

Learn: Roles

Get a Set of user-defined roles that match a provided predicate.

Signature

Role.where(pred: (Role => Boolean)) => Set<Role>

Description

Gets a Set of user-defined roles, represented as Role documents, that match a provided predicate function.

Role documents are FQL versions of a database’s FSL role schema. See Roles.

If Role.where() is the last expression in a query, the first page of the Set is returned. See Pagination.

Staged schema

If a database has staged schema, this method interacts with the database’s staged schema, not the active schema.

Parameters

Parameter Type Required Description

pred

Predicate function

Yes

Anonymous predicate function that:

The method returns a Set of Role documents for which the predicate returns true.

Return value

Type Description

Set<Role>

Set of Role documents that match the predicate. If there are no matching documents, the Set is empty.

Examples

Role.where(.name.includes("manager"))
{
  data: [
    {
      name: "manager",
      coll: Role,
      ts: Time("2099-10-28T16:01:40.805Z"),
      privileges: [
        {
          resource: "OrderItem",
          actions: {
            create: true,
            read: true,
            write: true,
            delete: true
          }
        },
        {
          resource: "Customer",
          actions: {
            read: true
          }
        },
        {
          resource: "Manager",
          actions: {
            read: "(doc) => Query.identity() == doc && Date.today().dayOfWeek < 6"
          }
        },
        {
          resource: "getOrCreateCart",
          actions: {
            call: true
          }
        },
        {
          resource: "checkout",
          actions: {
            call: <<-END
              (args) => {
                let order = Order.byId(args[0])!
                order?.customer == Query.identity()
              }
            END
          }
        }
      ],
      membership: [
        {
          resource: "Manager"
        },
        {
          resource: "User",
          predicate: "(user) => user.accessLevel == \"manager\""
        }
      ]
    }
  ]
}
\