Initial project snapshot
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user