File tree Expand file tree Collapse file tree 4 files changed +28
-3
lines changed Expand file tree Collapse file tree 4 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -85,6 +85,8 @@ export type ResourceRelationsShape = ResourceShape<any>['Relations'];
85
85
export class EnhancedResource < T extends ResourceShape < any > > {
86
86
/** @internal */
87
87
static readonly dbTypes = new WeakMap < ResourceShape < any > , $ . $expr_PathNode > ( ) ;
88
+ /** @internal */
89
+ static readonly dbSkipAccessPolicies = new Set < string > ( ) ;
88
90
89
91
private constructor ( readonly type : T ) { }
90
92
private static readonly refs = new WeakMap <
@@ -255,6 +257,10 @@ export class EnhancedResource<T extends ResourceShape<any>> {
255
257
return type as any ;
256
258
}
257
259
260
+ get generateAccessPolicies ( ) {
261
+ return this . hasDB && ! EnhancedResource . dbSkipAccessPolicies . has ( this . dbFQN ) ;
262
+ }
263
+
258
264
get dbFQN ( ) : ResourceShape < any > extends T ? string : DBName < DBType < T > > {
259
265
return this . db . __element__ . __name__ as any ;
260
266
}
Original file line number Diff line number Diff line change @@ -17,6 +17,11 @@ export class EdgeDBAccessPolicyGenerator {
17
17
18
18
makeSdl ( params : AsEdgeQLParams < any > ) {
19
19
const { resource } = params ;
20
+
21
+ if ( ! resource . generateAccessPolicies ) {
22
+ return undefined ;
23
+ }
24
+
20
25
const actions = {
21
26
select : 'read' ,
22
27
'update read' : 'read' ,
Original file line number Diff line number Diff line change @@ -13,7 +13,10 @@ import {
13
13
import { RegisterResource } from '~/core' ;
14
14
import { e } from '~/core/edgedb' ;
15
15
16
- @RegisterResource ( { db : e . Actor } )
16
+ @RegisterResource ( {
17
+ db : e . Actor ,
18
+ skipAccessPolicies : true ,
19
+ } )
17
20
@InterfaceType ( {
18
21
resolveType : resolveByTypename ( Actor . name ) ,
19
22
} )
Original file line number Diff line number Diff line change @@ -7,10 +7,21 @@ import { __privateDontUseThis } from './resource-map-holder';
7
7
* Be sure to add the type to the type map as well.
8
8
* See {@link import('./map').ResourceMap} for details on that.
9
9
*/
10
- export const RegisterResource = ( { db } : { db ?: $ . $expr_PathNode } = { } ) => {
10
+ export const RegisterResource = ( {
11
+ db,
12
+ skipAccessPolicies,
13
+ } : {
14
+ db ?: $ . $expr_PathNode ;
15
+ skipAccessPolicies ?: boolean ;
16
+ } = { } ) => {
11
17
return < T extends ResourceShape < any > > ( target : T ) => {
12
18
__privateDontUseThis [ target . name ] = target ;
13
- db && EnhancedResource . dbTypes . set ( target , db ) ;
19
+ if ( db ) {
20
+ EnhancedResource . dbTypes . set ( target , db ) ;
21
+ if ( skipAccessPolicies ) {
22
+ EnhancedResource . dbSkipAccessPolicies . add ( db . __element__ . __name__ ) ;
23
+ }
24
+ }
14
25
return target ;
15
26
} ;
16
27
} ;
You can’t perform that action at this time.
0 commit comments