import { EntitlementsSpiceDBQuery } from './entitlements-spicedb.query'; import { EntitlementsBatchResult, EntitlementsDynamicQuery, EntitlementsResult, RequestContextType, UserSubjectContext } from '../../types'; import { SpiceDBResponse } from '../../types/spicedb.dto'; import { v1 } from '@authzed/authzed-node'; import { SpiceDBEntities } from '../../types/spicedb-consts'; import { LoggingClient } from '../../logging'; export class FeaturesSpiceDBQuery extends EntitlementsSpiceDBQuery { constructor( protected readonly client: v1.ZedPromiseClientInterface, loggingClient?: LoggingClient, logResults: boolean = false ) { super(client, loggingClient, logResults); } async query({ subjectContext, requestContext }: EntitlementsDynamicQuery): Promise> { const context = subjectContext as UserSubjectContext; return this.executeCommonQuery(SpiceDBEntities.Feature, requestContext.featureKey, context); } async queryMany( subjectContext: UserSubjectContext, featureKeys: string[] ): Promise> { return this.executeManyCommonQuery(SpiceDBEntities.Feature, featureKeys, subjectContext); } }