86 lines
2.9 KiB
Go
86 lines
2.9 KiB
Go
package sessionbroker
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
sessioncontracts "github.com/example/remote-access-platform/backend/pkg/contracts/session"
|
|
)
|
|
|
|
type RemoteSessionRepository interface {
|
|
Create(ctx context.Context, session RemoteSession) error
|
|
GetByID(ctx context.Context, sessionID string) (*RemoteSession, error)
|
|
GetByIDForUpdate(ctx context.Context, sessionID string) (*RemoteSession, error)
|
|
ListByController(ctx context.Context, userID string) ([]RemoteSession, error)
|
|
CountLiveByResource(ctx context.Context, resourceID string) (int, error)
|
|
ListDetachedExpired(ctx context.Context, before time.Time, limit int) ([]RemoteSession, error)
|
|
UpdateState(ctx context.Context, params UpdateRemoteSessionStateParams) error
|
|
}
|
|
|
|
type SessionAttachmentRepository interface {
|
|
Create(ctx context.Context, attachment SessionAttachment) error
|
|
GetByID(ctx context.Context, attachmentID string) (*SessionAttachment, error)
|
|
GetByIDForUpdate(ctx context.Context, attachmentID string) (*SessionAttachment, error)
|
|
ListByRemoteSession(ctx context.Context, remoteSessionID string) ([]SessionAttachment, error)
|
|
ListActiveByRemoteSessionForUpdate(ctx context.Context, remoteSessionID string) ([]SessionAttachment, error)
|
|
UpdateState(ctx context.Context, params UpdateSessionAttachmentStateParams) error
|
|
Supersede(ctx context.Context, params SupersedeAttachmentParams) error
|
|
}
|
|
|
|
type ResourcePolicyRepository interface {
|
|
GetByResourceID(ctx context.Context, resourceID string) (*ResourcePolicy, error)
|
|
Upsert(ctx context.Context, policy ResourcePolicy) error
|
|
}
|
|
|
|
type AuditEventRepository interface {
|
|
Create(ctx context.Context, event AuditEvent) error
|
|
}
|
|
|
|
type Store interface {
|
|
RemoteSessions() RemoteSessionRepository
|
|
SessionAttachments() SessionAttachmentRepository
|
|
ResourcePolicies() ResourcePolicyRepository
|
|
ResourceRuntime() ResourceRuntimeRepository
|
|
AuditEvents() AuditEventRepository
|
|
Access() AccessRepository
|
|
}
|
|
|
|
type Transactor interface {
|
|
WithinTransaction(ctx context.Context, fn func(store Store) error) error
|
|
}
|
|
|
|
type UpdateRemoteSessionStateParams struct {
|
|
RemoteSessionID string
|
|
State sessioncontracts.State
|
|
WorkerID string
|
|
DetachDeadlineAt *time.Time
|
|
LastHeartbeatAt *time.Time
|
|
TakeoverVersion int
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type UpdateSessionAttachmentStateParams struct {
|
|
AttachmentID string
|
|
State AttachmentState
|
|
DetachedAt *time.Time
|
|
LastInputAt *time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type SupersedeAttachmentParams struct {
|
|
PreviousAttachmentID string
|
|
NextAttachmentID string
|
|
DetachedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type AccessRepository interface {
|
|
IsTrustedDevice(ctx context.Context, userID, deviceID string) (bool, error)
|
|
GetPlatformRole(ctx context.Context, userID string) (string, error)
|
|
GetOrganizationRole(ctx context.Context, organizationID, userID string) (string, bool, error)
|
|
}
|
|
|
|
type ResourceRuntimeRepository interface {
|
|
GetByID(ctx context.Context, resourceID string) (*ResourceRuntimeSpec, error)
|
|
}
|