feat(tasks): implement atomic claims and leases

This commit is contained in:
QiuSW
2026-07-26 16:16:36 +08:00
parent 49db5b8305
commit ce875af889
50 changed files with 7589 additions and 207 deletions
+24 -2
View File
@@ -169,10 +169,30 @@ func buildRouter(
if err != nil {
return nil, err
}
lifecycle, err := usecase.NewLifecycleService(
store,
clock,
ids,
cfg.ClaimLease,
cfg.RunningLease,
cfg.ReadinessTTL,
)
if err != nil {
return nil, err
}
passwords, err := password.NewBcrypt(12)
if err != nil {
return nil, err
}
registerDeviceRoutes, err := httpapi.NewDeviceRouteRegistrar(
httpapi.DeviceServices{
Lifecycle: lifecycle,
Assets: assets,
},
)
if err != nil {
return nil, err
}
auth, err := usecase.NewAuthService(
store,
passwords,
@@ -247,8 +267,10 @@ func buildRouter(
authWebHandler.RegisterPublic(routes)
return registerPublicAuth(routes)
},
RegisterAdminRoutes: registerProtectedRoutes,
AdminSessions: auth,
RegisterAdminRoutes: registerProtectedRoutes,
RegisterDeviceRoutes: registerDeviceRoutes,
AdminSessions: auth,
DeviceAccess: auth,
LogEvent: func(event string) {
log.Print(event)
},
+3
View File
@@ -137,6 +137,9 @@ func TestBuildRouterRegistersProtectedLogoutRoute(t *testing.T) {
}
router, err := buildRouter(ctx, config.Config{
AssetDirectory: filepath.Join(t.TempDir(), "assets"),
ClaimLease: 10 * time.Minute,
RunningLease: 90 * time.Second,
ReadinessTTL: 2 * time.Minute,
}, db)
if err != nil {
t.Fatalf("buildRouter() error = %v", err)