Skip to content
Closed
102 changes: 57 additions & 45 deletions go/apps/api/routes/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,23 +419,26 @@ func Register(srv *zen.Server, svc *Services, info zen.InstanceInfo) {
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysRerollKey.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
Vault: svc.Vault,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
Vault: svc.Vault,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

// v2/keys.deleteKey
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysDeleteKey.Handler{
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
},
)

Expand All @@ -448,6 +451,7 @@ func Register(srv *zen.Server, svc *Services, info zen.InstanceInfo) {
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
UsageLimiter: svc.UsageLimiter,
},
)
Expand All @@ -456,11 +460,12 @@ func Register(srv *zen.Server, svc *Services, info zen.InstanceInfo) {
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysGetKey.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
Vault: svc.Vault,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
Vault: svc.Vault,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

Expand All @@ -485,6 +490,7 @@ func Register(srv *zen.Server, svc *Services, info zen.InstanceInfo) {
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
UsageLimiter: svc.UsageLimiter,
},
)
Expand All @@ -493,71 +499,77 @@ func Register(srv *zen.Server, svc *Services, info zen.InstanceInfo) {
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysSetRoles.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

// v2/keys.setPermissions
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysSetPermissions.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

// v2/keys.addPermissions
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysAddPermissions.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

// v2/keys.addRoles
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysAddRoles.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

// v2/keys.removePermissions
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysRemovePermissions.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

// v2/keys.removeRoles
srv.RegisterRoute(
defaultMiddlewares,
&v2KeysRemoveRoles.Handler{
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
Logger: svc.Logger,
DB: svc.Database,
Keys: svc.Keys,
Auditlogs: svc.Auditlogs,
KeyCache: svc.Caches.VerificationKeyByHash,
LiveKeyCache: svc.Caches.LiveKeyByID,
},
)

Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_permissions/200_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ func TestSuccess(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_permissions/400_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ func TestValidationErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_permissions/401_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@ func TestAuthenticationErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_permissions/403_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@ func TestAuthorizationErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_permissions/404_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ func TestNotFoundErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
DB: h.DB,
Keys: h.Keys,
Logger: h.Logger,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
17 changes: 11 additions & 6 deletions go/apps/api/routes/v2_keys_add_permissions/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/unkeyed/unkey/go/apps/api/openapi"
"github.com/unkeyed/unkey/go/internal/services/auditlogs"
"github.com/unkeyed/unkey/go/internal/services/caches"
"github.com/unkeyed/unkey/go/internal/services/keys"
"github.com/unkeyed/unkey/go/pkg/auditlog"
"github.com/unkeyed/unkey/go/pkg/cache"
Expand All @@ -26,11 +27,12 @@ type Request = openapi.V2KeysAddPermissionsRequestBody
type Response = openapi.V2KeysAddPermissionsResponseBody

type Handler struct {
Logger logging.Logger
DB db.Database
Keys keys.KeyService
Auditlogs auditlogs.AuditLogService
KeyCache cache.Cache[string, db.CachedKeyData]
Logger logging.Logger
DB db.Database
Keys keys.KeyService
Auditlogs auditlogs.AuditLogService
KeyCache cache.Cache[string, db.CachedKeyData]
LiveKeyCache cache.Cache[string, db.FindLiveKeyByIDRow]
}

// Method returns the HTTP method this route responds to
Expand All @@ -56,7 +58,9 @@ func (h *Handler) Handle(ctx context.Context, s *zen.Session) error {
return err
}

key, err := db.Query.FindLiveKeyByID(ctx, h.DB.RO(), req.KeyId)
key, _, err := h.LiveKeyCache.SWR(ctx, req.KeyId, func(ctx context.Context) (db.FindLiveKeyByIDRow, error) {
return db.Query.FindLiveKeyByID(ctx, h.DB.RO(), req.KeyId)
}, caches.DefaultFindFirstOp)
Comment on lines +61 to +63
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you have to look at the _ which is the hit parameter.

Hit can be NULL which means a key doesn't exist

if err != nil {
if db.IsNotFound(err) {
return fault.New("key not found",
Expand Down Expand Up @@ -292,6 +296,7 @@ func (h *Handler) Handle(ctx context.Context, s *zen.Session) error {
}

h.KeyCache.Remove(ctx, key.Hash)
h.LiveKeyCache.Remove(ctx, key.ID)

responseData := make(openapi.V2KeysAddPermissionsResponseData, 0)

Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_roles/200_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ func TestSuccess(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_roles/400_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ func TestValidationErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_roles/401_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ func TestAuthenticationErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
11 changes: 6 additions & 5 deletions go/apps/api/routes/v2_keys_add_roles/403_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ func TestAuthorizationErrors(t *testing.T) {
h := testutil.NewHarness(t)

route := &handler.Handler{
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
Logger: h.Logger,
DB: h.DB,
Keys: h.Keys,
Auditlogs: h.Auditlogs,
KeyCache: h.Caches.VerificationKeyByHash,
LiveKeyCache: h.Caches.LiveKeyByID,
}

h.Register(route)
Expand Down
Loading