chore(repo): reinitialize repository
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package inboxapp
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
dashboardapp "inbox/internal/app/dashboard"
|
||||
humantasksapp "inbox/internal/app/humantasks"
|
||||
lanesapp "inbox/internal/app/lanes"
|
||||
rolesapp "inbox/internal/app/roles"
|
||||
"inbox/internal/app/runtimeconfig"
|
||||
skillsapp "inbox/internal/app/skills"
|
||||
systemfsapp "inbox/internal/app/systemfs"
|
||||
taskexecapp "inbox/internal/app/taskexec"
|
||||
tasksapp "inbox/internal/app/tasks"
|
||||
topicsapp "inbox/internal/app/topics"
|
||||
"inbox/internal/app/workflowrun"
|
||||
workspacelifecycleapp "inbox/internal/app/workspacelifecycle"
|
||||
"inbox/internal/app/workspaceprovision"
|
||||
"inbox/internal/app/workspaceruntime"
|
||||
workspacesapp "inbox/internal/app/workspaces"
|
||||
"inbox/internal/base/timeutil"
|
||||
"inbox/internal/domain/lane"
|
||||
"inbox/internal/domain/workspace"
|
||||
sqlitestore "inbox/internal/store/sqlite"
|
||||
)
|
||||
|
||||
type WorkspaceProvisioner interface {
|
||||
Provision(ctx context.Context, req workspaceprovision.ProvisionRequest) (workspace.Workspace, workspaceruntime.Runtime, error)
|
||||
}
|
||||
|
||||
type WorkspaceRuntimeManager interface {
|
||||
Ensure(ctx context.Context, workspaceID string) (workspace.Workspace, workspaceruntime.Runtime, error)
|
||||
EnsureLane(ctx context.Context, laneID string) (lane.Record, error)
|
||||
StopLane(ctx context.Context, laneID string) (lane.Record, error)
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
WorkspaceProvision WorkspaceProvisioner
|
||||
WorkspaceRuntime WorkspaceRuntimeManager
|
||||
}
|
||||
|
||||
type Services struct {
|
||||
Roles *rolesapp.Service
|
||||
Skills *skillsapp.Service
|
||||
RuntimeConfig *runtimeconfig.Service
|
||||
Workspaces *workspacesapp.Service
|
||||
WorkspaceOps *workspacelifecycleapp.Service
|
||||
Topics *topicsapp.Service
|
||||
Lanes *lanesapp.Service
|
||||
Tasks *tasksapp.Service
|
||||
HumanTasks *humantasksapp.Service
|
||||
WorkflowRun *workflowrun.Service
|
||||
TaskExec *taskexecapp.Service
|
||||
Dashboard *dashboardapp.Service
|
||||
SystemFS *systemfsapp.Service
|
||||
}
|
||||
|
||||
func BuildServices(store *sqlitestore.Store, clock timeutil.Clock, opts Options) Services {
|
||||
roleService := rolesapp.NewService(store, store, clock)
|
||||
skillService := skillsapp.NewService(store)
|
||||
runtimeConfigService := runtimeconfig.NewService(store, store, clock)
|
||||
workspacesService := workspacesapp.NewService(store)
|
||||
workspaceLifecycleService := workspacelifecycleapp.NewService(opts.WorkspaceProvision, opts.WorkspaceRuntime)
|
||||
topicsService := topicsapp.NewService(store, opts.WorkspaceRuntime, clock)
|
||||
lanesService := lanesapp.NewService(store, opts.WorkspaceRuntime, clock)
|
||||
tasksService := tasksapp.NewService(store, clock)
|
||||
humanTasksService := humantasksapp.NewService(store, clock)
|
||||
taskExecOptions := make([]taskexecapp.Option, 0, 1)
|
||||
if releaser, ok := any(opts.WorkspaceRuntime).(taskexecapp.LaneRuntimeReleaser); ok {
|
||||
taskExecOptions = append(taskExecOptions, taskexecapp.WithLaneRuntimeReleaser(releaser))
|
||||
}
|
||||
taskExecService := taskexecapp.NewService(store, runtimeConfigService, clock, taskExecOptions...)
|
||||
|
||||
return Services{
|
||||
Roles: roleService,
|
||||
Skills: skillService,
|
||||
RuntimeConfig: runtimeConfigService,
|
||||
Workspaces: workspacesService,
|
||||
WorkspaceOps: workspaceLifecycleService,
|
||||
Topics: topicsService,
|
||||
Lanes: lanesService,
|
||||
Tasks: tasksService,
|
||||
HumanTasks: humanTasksService,
|
||||
WorkflowRun: workflowrun.NewService(store, runtimeConfigService, clock),
|
||||
TaskExec: taskExecService,
|
||||
Dashboard: dashboardapp.NewService(store),
|
||||
SystemFS: systemfsapp.NewService(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user