66 "errors"
77 "fmt"
88 "log/slog"
9+ "strconv"
910
1011 "golang.org/x/crypto/bcrypt"
1112
@@ -430,10 +431,11 @@ func (d dexAPI) CreateConnector(ctx context.Context, req *api.CreateConnectorReq
430431 }
431432
432433 c := storage.Connector {
433- ID : req .Connector .Id ,
434- Name : req .Connector .Name ,
435- Type : req .Connector .Type ,
436- Config : req .Connector .Config ,
434+ ID : req .Connector .Id ,
435+ Name : req .Connector .Name ,
436+ Type : req .Connector .Type ,
437+ ResourceVersion : "1" ,
438+ Config : req .Connector .Config ,
437439 }
438440 if err := d .s .CreateConnector (ctx , c ); err != nil {
439441 if err == storage .ErrAlreadyExists {
@@ -446,7 +448,7 @@ func (d dexAPI) CreateConnector(ctx context.Context, req *api.CreateConnectorReq
446448 return & api.CreateConnectorResp {}, nil
447449}
448450
449- func (d dexAPI ) UpdateConnector (ctx context.Context , req * api.UpdateConnectorReq ) (* api.UpdateConnectorResp , error ) {
451+ func (d dexAPI ) UpdateConnector (_ context.Context , req * api.UpdateConnectorReq ) (* api.UpdateConnectorResp , error ) {
450452 if ! featureflags .APIConnectorsCRUD .Enabled () {
451453 return nil , fmt .Errorf ("%s feature flag is not enabled" , featureflags .APIConnectorsCRUD .Name )
452454 }
@@ -476,6 +478,10 @@ func (d dexAPI) UpdateConnector(ctx context.Context, req *api.UpdateConnectorReq
476478 old .Config = req .NewConfig
477479 }
478480
481+ if rev , err := strconv .Atoi (defaultTo (old .ResourceVersion , "0" )); err == nil {
482+ old .ResourceVersion = strconv .Itoa (rev + 1 )
483+ }
484+
479485 return old , nil
480486 }
481487
@@ -536,3 +542,11 @@ func (d dexAPI) ListConnectors(ctx context.Context, req *api.ListConnectorReq) (
536542 Connectors : connectors ,
537543 }, nil
538544}
545+
546+ func defaultTo [T comparable ](v , def T ) T {
547+ var zeroT T
548+ if v == zeroT {
549+ return def
550+ }
551+ return v
552+ }
0 commit comments