Skip to content

Commit

Permalink
refactor(go): normalize deletes field on write api
Browse files Browse the repository at this point in the history
  • Loading branch information
jpadilla committed Nov 22, 2023
1 parent 619c593 commit 9e288fd
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 18 deletions.
6 changes: 3 additions & 3 deletions config/clients/go/template/api_test.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ func Test{{appShortName}}Api(t *testing.T) {
}
{{=<% %>=}}
requestBody := WriteRequest{
Writes: &WriteRequestTupleKeys{
Writes: &WriteRequestWrites{
TupleKeys: []WriteRequestTupleKey{{
User: "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
Relation: "viewer",
Expand Down Expand Up @@ -661,8 +661,8 @@ func Test{{appShortName}}Api(t *testing.T) {

{{=<% %>=}}
requestBody := WriteRequest{
Deletes: &WriteRequestTupleKeys{
TupleKeys: []WriteRequestTupleKey{{
Deletes: &WriteRequestDeletes{
TupleKeys: []TupleKeyWithoutCondition{{
User: "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
Relation: "viewer",
Object: "document:roadmap",
Expand Down
47 changes: 34 additions & 13 deletions config/clients/go/template/client/client.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ type ClientRequestOptionsWithAuthZModelId struct {


type ClientTupleKey = fgaSdk.TupleKey
type ClientTupleKeyWithoutCondition = fgaSdk.TupleKeyWithoutCondition
type ClientWriteRequestTupleKey = fgaSdk.WriteRequestTupleKey
type ClientCheckRequestTupleKey = fgaSdk.CheckRequestTupleKey
type ClientReadRequestTupleKey = fgaSdk.ReadRequestTupleKey
Expand Down Expand Up @@ -1150,7 +1151,7 @@ type SdkClientWriteRequestInterface interface {

type ClientWriteRequest struct {
Writes []ClientWriteRequestTupleKey
Deletes []ClientWriteRequestTupleKey
Deletes []ClientTupleKeyWithoutCondition
}

type TransactionOptions struct {
Expand All @@ -1175,14 +1176,34 @@ const (
FAILURE ClientWriteStatus = "CLIENT_WRITE_STATUS_FAILURE"
)

type ClientWriteSingleResponse struct {
type ClientWriteRequestWriteResponse struct {
TupleKey ClientWriteRequestTupleKey `json:"tuple_key,omitempty"`
Status ClientWriteStatus `json:"status,omitempty"`
HttpResponse *_nethttp.Response `json:"http_response,omitempty"`
Error error `json:"error,omitempty"`
}

func (o ClientWriteSingleResponse) MarshalJSON() ([]byte, error) {
func (o ClientWriteRequestWriteResponse) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
toSerialize["tuple_key"] = o.TupleKey
toSerialize["status"] = o.Status
if o.HttpResponse != nil {
toSerialize["http_response"] = o.HttpResponse
}
if o.Error != nil {
toSerialize["error"] = o.Error
}
return json.Marshal(toSerialize)
}

type ClientWriteRequestDeleteResponse struct {
TupleKey ClientTupleKeyWithoutCondition `json:"tuple_key,omitempty"`
Status ClientWriteStatus `json:"status,omitempty"`
HttpResponse *_nethttp.Response `json:"http_response,omitempty"`
Error error `json:"error,omitempty"`
}

func (o ClientWriteRequestDeleteResponse) MarshalJSON() ([]byte, error) {
toSerialize := map[string]interface{}{}
toSerialize["tuple_key"] = o.TupleKey
toSerialize["status"] = o.Status
Expand All @@ -1196,8 +1217,8 @@ func (o ClientWriteSingleResponse) MarshalJSON() ([]byte, error) {
}

type ClientWriteResponse struct {
Writes []ClientWriteSingleResponse `json:"writes,omitempty"`
Deletes []ClientWriteSingleResponse `json:"deletes,omitempty"`
Writes []ClientWriteRequestWriteResponse `json:"writes,omitempty"`
Deletes []ClientWriteRequestDeleteResponse `json:"deletes,omitempty"`
}

func (o ClientWriteResponse) MarshalJSON() ([]byte, error) {
Expand Down Expand Up @@ -1262,8 +1283,8 @@ func (client *{{appShortName}}Client) WriteExecute(request SdkClientWriteRequest
}

response := ClientWriteResponse{
Writes: []ClientWriteSingleResponse{},
Deletes: []ClientWriteSingleResponse{},
Writes: []ClientWriteRequestWriteResponse{},
Deletes: []ClientWriteRequestDeleteResponse{},
}

authorizationModelId, err := client.getAuthorizationModelId(request.GetAuthorizationModelIdOverride())
Expand All @@ -1278,14 +1299,14 @@ func (client *{{appShortName}}Client) WriteExecute(request SdkClientWriteRequest
AuthorizationModelId: authorizationModelId,
}
if request.GetBody().Writes != nil && len(request.GetBody().Writes) > 0 {
writes := fgaSdk.WriteRequestTupleKeys{}
writes := fgaSdk.WriteRequestWrites{}
for index := 0; index < len(request.GetBody().Writes); index++ {
writes.TupleKeys = append(writes.TupleKeys, (request.GetBody().Writes)[index])
}
writeRequest.Writes = &writes
}
if request.GetBody().Deletes != nil && len(request.GetBody().Deletes) > 0 {
deletes := fgaSdk.WriteRequestTupleKeys{}
deletes := fgaSdk.WriteRequestDeletes{}
for index := 0; index < len(request.GetBody().Deletes); index++ {
deletes.TupleKeys = append(deletes.TupleKeys, (request.GetBody().Deletes)[index])
}
Expand All @@ -1301,7 +1322,7 @@ func (client *{{appShortName}}Client) WriteExecute(request SdkClientWriteRequest
if request.GetBody() != nil && request.GetBody().Writes != nil {
writeRequestTupleKeys := request.GetBody().Writes
for index := 0; index < len(writeRequestTupleKeys); index++ {
response.Writes = append(response.Writes, ClientWriteSingleResponse{
response.Writes = append(response.Writes, ClientWriteRequestWriteResponse{
TupleKey: writeRequestTupleKeys[index],
HttpResponse: httpResponse,
Status: clientWriteStatus,
Expand All @@ -1313,7 +1334,7 @@ func (client *{{appShortName}}Client) WriteExecute(request SdkClientWriteRequest
if request.GetBody() != nil && request.GetBody().Deletes != nil {
deleteRequestTupleKeys := request.GetBody().Deletes
for index := 0; index < len(deleteRequestTupleKeys); index++ {
response.Deletes = append(response.Deletes, ClientWriteSingleResponse{
response.Deletes = append(response.Deletes, ClientWriteRequestDeleteResponse{
TupleKey: deleteRequestTupleKeys[index],
HttpResponse: httpResponse,
Status: clientWriteStatus,
Expand Down Expand Up @@ -1370,7 +1391,7 @@ func (client *{{appShortName}}Client) WriteExecute(request SdkClientWriteRequest
_ = writeGroup.Wait()

var deleteChunkSize = int(maxPerChunk)
var deleteChunks [][]ClientWriteRequestTupleKey
var deleteChunks [][]ClientTupleKeyWithoutCondition
if request.GetBody() != nil {
for i := 0; i < len(request.GetBody().Deletes); i += deleteChunkSize {
end := int(math.Min(float64(i+writeChunkSize), float64(len(request.GetBody().Deletes))))
Expand Down Expand Up @@ -1502,7 +1523,7 @@ type SdkClientDeleteTuplesRequestInterface interface {
GetOptions() *ClientWriteOptions
}

type ClientDeleteTuplesBody = []ClientWriteRequestTupleKey
type ClientDeleteTuplesBody = []ClientTupleKeyWithoutCondition

func (client *{{appShortName}}Client) DeleteTuples(ctx _context.Context) SdkClientDeleteTuplesRequestInterface {
return &SdkClientDeleteTuplesRequest{
Expand Down
4 changes: 2 additions & 2 deletions config/clients/go/template/client/client_test.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -790,7 +790,7 @@ func Test{{appShortName}}Client(t *testing.T) {
Relation: "viewer",
Object: "document:budget",
} },
Deletes: []ClientWriteRequestTupleKey{ {
Deletes: []ClientTupleKeyWithoutCondition{ {
User: "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
Relation: "viewer",
Object: "document:planning",
Expand Down Expand Up @@ -962,7 +962,7 @@ func Test{{appShortName}}Client(t *testing.T) {
RequestPath: "write",
}

requestBody := []ClientWriteRequestTupleKey{ {
requestBody := []ClientTupleKeyWithoutCondition{ {
User: "user:81684243-9356-4421-8fbf-a4f8d36aa31b",
Relation: "viewer",
Object: "document:roadmap",
Expand Down

0 comments on commit 9e288fd

Please sign in to comment.