Skip to content

Commit

Permalink
Refactor idempotency key (#74)
Browse files Browse the repository at this point in the history
* Refactor idempotency key

param_ikey -> idempotency_key_for_create
value_ikey -> idempotency_key_for_complete
  • Loading branch information
dfarr committed Oct 2, 2023
1 parent 74a435d commit 16c30a7
Show file tree
Hide file tree
Showing 18 changed files with 646 additions and 560 deletions.
40 changes: 22 additions & 18 deletions internal/app/coroutines/cancelPromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,14 @@ func CancelPromise(t int64, req *types.Request, res func(int64, *types.Response,
Param: p.Param,
Value: promise.Value{
Headers: map[string]string{},
Ikey: nil,
Data: []byte{},
},
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: p.IdempotencyKeyForComplete,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
},
},
}, nil)
Expand All @@ -101,10 +102,11 @@ func CancelPromise(t int64, req *types.Request, res func(int64, *types.Response,
{
Kind: types.StoreUpdatePromise,
UpdatePromise: &types.UpdatePromiseCommand{
Id: req.CancelPromise.Id,
State: promise.Canceled,
Value: req.CancelPromise.Value,
CompletedOn: t,
Id: req.CancelPromise.Id,
State: promise.Canceled,
Value: req.CancelPromise.Value,
IdempotencyKey: req.CancelPromise.IdemptencyKey,
CompletedOn: t,
},
},
{
Expand Down Expand Up @@ -143,14 +145,16 @@ func CancelPromise(t int64, req *types.Request, res func(int64, *types.Response,
CancelPromise: &types.CancelPromiseResponse{
Status: types.ResponseCreated,
Promise: &promise.Promise{
Id: p.Id,
State: promise.Canceled,
Param: p.Param,
Value: req.CancelPromise.Value,
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &t,
Id: p.Id,
State: promise.Canceled,
Param: p.Param,
Value: req.CancelPromise.Value,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: req.CancelPromise.IdemptencyKey,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &t,
},
},
}, nil)
Expand All @@ -163,7 +167,7 @@ func CancelPromise(t int64, req *types.Request, res func(int64, *types.Response,
status := types.ResponseForbidden
strict := req.CancelPromise.Strict && p.State != promise.Canceled

if !strict && p.Value.Ikey.Match(req.CancelPromise.Value.Ikey) {
if !strict && p.IdempotencyKeyForComplete.Match(req.CancelPromise.IdemptencyKey) {
status = types.ResponseOK
}

Expand Down
37 changes: 20 additions & 17 deletions internal/app/coroutines/createPromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,12 @@ func CreatePromise(t int64, req *types.Request, res func(int64, *types.Response,
{
Kind: types.StoreCreatePromise,
CreatePromise: &types.CreatePromiseCommand{
Id: req.CreatePromise.Id,
Param: req.CreatePromise.Param,
Timeout: req.CreatePromise.Timeout,
Tags: req.CreatePromise.Tags,
CreatedOn: t,
Id: req.CreatePromise.Id,
Param: req.CreatePromise.Param,
Timeout: req.CreatePromise.Timeout,
IdempotencyKey: req.CreatePromise.IdemptencyKey,
Tags: req.CreatePromise.Tags,
CreatedOn: t,
},
},
},
Expand All @@ -89,12 +90,13 @@ func CreatePromise(t int64, req *types.Request, res func(int64, *types.Response,
CreatePromise: &types.CreatePromiseResponse{
Status: types.ResponseCreated,
Promise: &promise.Promise{
Id: req.CreatePromise.Id,
State: promise.Pending,
Param: req.CreatePromise.Param,
Timeout: req.CreatePromise.Timeout,
Tags: req.CreatePromise.Tags,
CreatedOn: &t,
Id: req.CreatePromise.Id,
State: promise.Pending,
Param: req.CreatePromise.Param,
Timeout: req.CreatePromise.Timeout,
IdempotencyKeyForCreate: req.CreatePromise.IdemptencyKey,
Tags: req.CreatePromise.Tags,
CreatedOn: &t,
},
},
}, nil)
Expand All @@ -113,7 +115,7 @@ func CreatePromise(t int64, req *types.Request, res func(int64, *types.Response,
status := types.ResponseForbidden
strict := req.CreatePromise.Strict && p.State != promise.Pending

if !strict && p.Param.Ikey.Match(req.CreatePromise.Param.Ikey) {
if !strict && p.IdempotencyKeyForCreate.Match(req.CreatePromise.IdemptencyKey) {
status = types.ResponseOK
}

Expand All @@ -135,13 +137,14 @@ func CreatePromise(t int64, req *types.Request, res func(int64, *types.Response,
Param: p.Param,
Value: promise.Value{
Headers: map[string]string{},
Ikey: nil,
Data: []byte{},
},
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: p.IdempotencyKeyForComplete,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
},
},
}, nil)
Expand Down
11 changes: 6 additions & 5 deletions internal/app/coroutines/readPromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,14 @@ func ReadPromise(t int64, req *types.Request, res func(int64, *types.Response, e
Param: p.Param,
Value: promise.Value{
Headers: map[string]string{},
Ikey: nil,
Data: nil,
},
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: p.IdempotencyKeyForComplete,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
},
},
}, nil)
Expand Down
40 changes: 22 additions & 18 deletions internal/app/coroutines/rejectPromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,14 @@ func RejectPromise(t int64, req *types.Request, res func(int64, *types.Response,
Param: p.Param,
Value: promise.Value{
Headers: map[string]string{},
Ikey: nil,
Data: []byte{},
},
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: p.IdempotencyKeyForComplete,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
},
},
}, nil)
Expand All @@ -101,10 +102,11 @@ func RejectPromise(t int64, req *types.Request, res func(int64, *types.Response,
{
Kind: types.StoreUpdatePromise,
UpdatePromise: &types.UpdatePromiseCommand{
Id: req.RejectPromise.Id,
State: promise.Rejected,
Value: req.RejectPromise.Value,
CompletedOn: t,
Id: req.RejectPromise.Id,
State: promise.Rejected,
Value: req.RejectPromise.Value,
IdempotencyKey: req.RejectPromise.IdemptencyKey,
CompletedOn: t,
},
},
{
Expand Down Expand Up @@ -143,14 +145,16 @@ func RejectPromise(t int64, req *types.Request, res func(int64, *types.Response,
RejectPromise: &types.RejectPromiseResponse{
Status: types.ResponseCreated,
Promise: &promise.Promise{
Id: p.Id,
State: promise.Rejected,
Param: p.Param,
Value: req.RejectPromise.Value,
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &t,
Id: p.Id,
State: promise.Rejected,
Param: p.Param,
Value: req.RejectPromise.Value,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: req.RejectPromise.IdemptencyKey,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &t,
},
},
}, nil)
Expand All @@ -163,7 +167,7 @@ func RejectPromise(t int64, req *types.Request, res func(int64, *types.Response,
status := types.ResponseForbidden
strict := req.RejectPromise.Strict && p.State != promise.Rejected

if !strict && p.Value.Ikey.Match(req.RejectPromise.Value.Ikey) {
if !strict && p.IdempotencyKeyForComplete.Match(req.RejectPromise.IdemptencyKey) {
status = types.ResponseOK
}

Expand Down
38 changes: 21 additions & 17 deletions internal/app/coroutines/resolvePromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,14 @@ func ResolvePromise(t int64, req *types.Request, res func(int64, *types.Response
Param: p.Param,
Value: promise.Value{
Headers: map[string]string{},
Ikey: nil,
Data: []byte{},
},
Timeout: p.Timeout,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: p.IdempotencyKeyForComplete,
Tags: p.Tags,
CreatedOn: p.CreatedOn,
CompletedOn: &p.Timeout,
},
},
}, nil)
Expand All @@ -101,10 +102,11 @@ func ResolvePromise(t int64, req *types.Request, res func(int64, *types.Response
{
Kind: types.StoreUpdatePromise,
UpdatePromise: &types.UpdatePromiseCommand{
Id: req.ResolvePromise.Id,
State: promise.Resolved,
Value: req.ResolvePromise.Value,
CompletedOn: t,
Id: req.ResolvePromise.Id,
State: promise.Resolved,
Value: req.ResolvePromise.Value,
IdempotencyKey: req.ResolvePromise.IdemptencyKey,
CompletedOn: t,
},
},
{
Expand Down Expand Up @@ -143,13 +145,15 @@ func ResolvePromise(t int64, req *types.Request, res func(int64, *types.Response
ResolvePromise: &types.ResolvePromiseResponse{
Status: types.ResponseCreated,
Promise: &promise.Promise{
Id: p.Id,
State: promise.Resolved,
Param: p.Param,
Value: req.ResolvePromise.Value,
Timeout: p.Timeout,
CreatedOn: p.CreatedOn,
CompletedOn: &t,
Id: p.Id,
State: promise.Resolved,
Param: p.Param,
Value: req.ResolvePromise.Value,
Timeout: p.Timeout,
IdempotencyKeyForCreate: p.IdempotencyKeyForCreate,
IdempotencyKeyForComplete: req.ResolvePromise.IdemptencyKey,
CreatedOn: p.CreatedOn,
CompletedOn: &t,
},
},
}, nil)
Expand All @@ -162,7 +166,7 @@ func ResolvePromise(t int64, req *types.Request, res func(int64, *types.Response
status := types.ResponseForbidden
strict := req.ResolvePromise.Strict && p.State != promise.Resolved

if !strict && p.Value.Ikey.Match(req.ResolvePromise.Value.Ikey) {
if !strict && p.IdempotencyKeyForComplete.Match(req.ResolvePromise.IdemptencyKey) {
status = types.ResponseOK
}

Expand Down
1 change: 0 additions & 1 deletion internal/app/coroutines/timeoutPromise.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ func TimeoutPromise(t int64, p *promise.Promise, retry *scheduler.Coroutine, res
State: promise.Timedout,
Value: promise.Value{
Headers: map[string]string{},
Ikey: nil,
Data: []byte{},
},
CompletedOn: p.Timeout,
Expand Down
Loading

0 comments on commit 16c30a7

Please sign in to comment.