1- import { getFilteredAllowedLangs , SupportedLanguage , DefaultAuthorizationModelId } from './SupportedLanguage' ;
2- import { defaultOperationsViewer } from './DefaultTabbedViewer' ;
31import assertNever from 'assert-never/index' ;
42import { RelationshipCondition } from '@components/Docs/RelationshipTuples' ;
3+ import { getFilteredAllowedLangs , SupportedLanguage , DefaultAuthorizationModelId } from './SupportedLanguage' ;
4+ import { defaultOperationsViewer } from './DefaultTabbedViewer' ;
55
66interface RelationshipTuple {
77 user : string ;
@@ -25,11 +25,9 @@ interface WriteRequestViewerOpts {
2525 isDelete ?: boolean ;
2626 skipSetup ?: boolean ;
2727 allowedLanguages ?: SupportedLanguage [ ] ;
28- writeOptions ?: {
29- on_duplicate ?: 'error' | 'ignore' ;
30- } ;
31- deleteOptions ?: {
32- on_missing ?: 'error' | 'ignore' ;
28+ conflictOptions ?: {
29+ onDuplicateWrites ?: 'error' | 'ignore' ;
30+ onMissingDeletes ?: 'error' | 'ignore' ;
3331 } ;
3432}
3533
8886 return cleanTuple ;
8987 } ) ,
9088 } ;
91- if ( opts . writeOptions ?. on_duplicate ) {
92- requestBody . writes . on_duplicate = opts . writeOptions . on_duplicate ;
89+ if ( opts . conflictOptions ?. onDuplicateWrites ) {
90+ requestBody . writes . on_duplicate = opts . conflictOptions . onDuplicateWrites ;
9391 }
9492 }
9593
10199 return cleanTuple ;
102100 } ) ,
103101 } ;
104- if ( opts . deleteOptions ?. on_missing ) {
105- requestBody . deletes . on_missing = opts . deleteOptions . on_missing ;
102+ if ( opts . conflictOptions ?. onMissingDeletes ) {
103+ requestBody . deletes . on_missing = opts . conflictOptions . onMissingDeletes ;
106104 }
107105 }
108106
@@ -209,9 +207,19 @@ await fgaClient.write({
209207 } `;
210208
211209 return `
212- options := ClientWriteOptions{
213- AuthorizationModelId: PtrString("${ modelId } "),
214- }
210+ options := ClientWriteOptions{${ modelId ? `\n AuthorizationModelId: openfga.PtrString("${ modelId } "),` : '' } ${
211+ opts . conflictOptions
212+ ? `\n Conflict: ClientWriteConflictOptions{${
213+ opts . conflictOptions . onDuplicateWrites
214+ ? `\n OnDuplicateWrites: CLIENT_WRITE_REQUEST_ON_DUPLICATE_WRITES_${ opts . conflictOptions . onDuplicateWrites . toUpperCase ( ) } ,`
215+ : ''
216+ } ${
217+ opts . conflictOptions . onMissingDeletes
218+ ? `\n OnMissingDeletes: CLIENT_WRITE_REQUEST_ON_MISSING_DELETES_${ opts . conflictOptions . onMissingDeletes . toUpperCase ( ) } ,`
219+ : ''
220+ } \n},`
221+ : ''
222+ } \n}
215223
216224body := ClientWriteRequest{${ opts . relationshipTuples ? writes : '' } ${ opts . deleteRelationshipTuples ? deletes : '' }
217225}
@@ -274,8 +282,23 @@ ${deleteTuples}
274282 }` ;
275283 const separator = `${ opts . deleteRelationshipTuples && opts . relationshipTuples ? ',\n ' : '' } ` ;
276284 return `
277- var options = new ClientWriteOptions {
278- AuthorizationModelId = "${ modelId } ",
285+ var options = new ClientWriteOptions {${ modelId ? `\n AuthorizationModelId = ${ modelId } ,` : '' } ${
286+ opts . conflictOptions
287+ ? `
288+ Conflict = new ConflictOptions {${
289+ opts . conflictOptions . onDuplicateWrites
290+ ? `
291+ OnDuplicateWrites = OnDuplicateWrites.${ opts . conflictOptions . onDuplicateWrites . charAt ( 0 ) . toUpperCase ( ) + opts . conflictOptions . onDuplicateWrites . slice ( 1 ) } ,`
292+ : ''
293+ } ${
294+ opts . conflictOptions . onMissingDeletes
295+ ? `
296+ OnMissingDeletes = OnMissingDeletes.${ opts . conflictOptions . onMissingDeletes . charAt ( 0 ) . toUpperCase ( ) + opts . conflictOptions . onMissingDeletes . slice ( 1 ) } `
297+ : ''
298+ }
299+ }`
300+ : ''
301+ }
279302};
280303var body = new ClientWriteRequest() {
281304 ${ opts . relationshipTuples ? writes : '' } ${ separator } ${ opts . deleteRelationshipTuples ? deletes : '' } ,
@@ -327,9 +350,23 @@ ${_description ? ` # ${_description}\n ` :
327350 const deletes = ` deletes=[${ deleteTuples }
328351 ],` ;
329352
330- return `options = {
331- "authorization_model_id": "${ modelId } "
332- }
353+ return `options = {${ modelId ? `\n "authorization_model_id": "${ modelId } "` : '' } ${
354+ opts . conflictOptions
355+ ? `,
356+ "conflict": ConflictOptions(${
357+ opts . conflictOptions . onDuplicateWrites
358+ ? `
359+ on_duplicate_writes=ClientWriteRequestOnDuplicateWrites.${ opts . conflictOptions . onDuplicateWrites . toUpperCase ( ) } ,`
360+ : ''
361+ } ${
362+ opts . conflictOptions . onMissingDeletes
363+ ? `
364+ on_missing_deletes=ClientWriteRequestOnMissingDeletes.${ opts . conflictOptions . onMissingDeletes . toUpperCase ( ) } `
365+ : ''
366+ }
367+ )`
368+ : ''
369+ } \n}
333370body = ClientWriteRequest(
334371 ${ opts . relationshipTuples ? writes : '' } ${ opts . deleteRelationshipTuples ? deletes : '' }
335372)
@@ -423,8 +460,22 @@ ${opts.deleteRelationshipTuples ? deletes : ''}`;
423460 .deletes(List.of(${ deleteTuples }
424461 ))` ;
425462
426- return `var options = new ClientWriteOptions()
427- .authorizationModelId("${ modelId } ");
463+ return `var options = new ClientWriteOptions()${
464+ modelId
465+ ? `
466+ .authorizationModelId("${ modelId } ")`
467+ : ''
468+ } ${
469+ opts . conflictOptions ?. onDuplicateWrites
470+ ? `
471+ .onDuplicate(WriteRequestWrites.OnDuplicateEnum.${ opts . conflictOptions . onDuplicateWrites . toUpperCase ( ) } )`
472+ : ''
473+ } ${
474+ opts . conflictOptions ?. onMissingDeletes
475+ ? `
476+ .onMissing(WriteRequestDeletes.OnMissingEnum.${ opts . conflictOptions . onMissingDeletes . toUpperCase ( ) } )`
477+ : ''
478+ } ;
428479
429480var body = new ClientWriteRequest()${ opts . relationshipTuples ? writes : ' ' } ${
430481 opts . deleteRelationshipTuples ? deletes : ''
0 commit comments