Remove legacy client-manager platform path
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"browser.local/platform/domain"
|
||||
)
|
||||
|
||||
func TestClientManagerLifecycleRepositoriesPersistAndFilter(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "metadata.json")
|
||||
store, err := NewFileStore(path)
|
||||
if err != nil {
|
||||
t.Fatalf("create file store: %v", err)
|
||||
}
|
||||
stamp := time.Date(2026, 7, 18, 3, 0, 0, 0, time.UTC)
|
||||
installation := domain.ClientManagerInstallation{ID: "cm-install-1", ServerInstanceID: "server-1", PluginID: "game.scum", ProfileKey: "scum-client-manager", RunEndpointID: "run-1", TargetOS: "linux", TargetArch: "amd64", Status: domain.ClientManagerLifecycleOnline, Phase: "healthy", ActiveVersion: "1.0.0", ActiveArtifactID: "artifact-1", KeyGeneration: 2, DeploymentGeneration: 3, Health: domain.ClientManagerHealthHealthy, LastSeenAt: stamp, CreatedAt: stamp, UpdatedAt: stamp}
|
||||
if err := store.ClientManagerInstallations().Create(installation); err != nil {
|
||||
t.Fatalf("persist installation: %v", err)
|
||||
}
|
||||
session := domain.ClientManagerSession{ID: "cm-session-1", InstallationID: installation.ID, ServerInstanceID: installation.ServerInstanceID, ProfileKey: installation.ProfileKey, RunEndpointID: installation.RunEndpointID, ArtifactID: installation.ActiveArtifactID, KeyGeneration: 2, DeploymentGeneration: 3, TokenHash: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", Capabilities: []string{"component.register", "component.heartbeat"}, Status: domain.ClientManagerSessionActive, LastSeenAt: stamp, ExpiresAt: stamp.Add(15 * time.Minute), CreatedAt: stamp, UpdatedAt: stamp}
|
||||
if err := store.ClientManagerSessions().Create(session); err != nil {
|
||||
t.Fatalf("persist session: %v", err)
|
||||
}
|
||||
nonce := domain.ClientManagerRegistrationNonce{ID: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", InstallationID: installation.ID, CreatedAt: stamp, ExpiresAt: stamp.Add(5 * time.Minute)}
|
||||
if err := store.ClientManagerNonces().Create(nonce); err != nil {
|
||||
t.Fatalf("persist nonce: %v", err)
|
||||
}
|
||||
|
||||
restarted, err := NewFileStore(path)
|
||||
if err != nil {
|
||||
t.Fatalf("reload file store: %v", err)
|
||||
}
|
||||
installations, err := restarted.ClientManagerInstallations().List(domain.ClientManagerInstallationFilter{ServerInstanceID: "server-1", ProfileKey: "scum-client-manager", Status: domain.ClientManagerLifecycleOnline})
|
||||
if err != nil || len(installations) != 1 || installations[0].DeploymentGeneration != 3 {
|
||||
t.Fatalf("unexpected persisted installations: items=%+v err=%v", installations, err)
|
||||
}
|
||||
sessions, err := restarted.ClientManagerSessions().List(domain.ClientManagerSessionFilter{InstallationID: installation.ID, Status: domain.ClientManagerSessionActive})
|
||||
if err != nil || len(sessions) != 1 {
|
||||
t.Fatalf("unexpected persisted sessions: items=%+v err=%v", sessions, err)
|
||||
}
|
||||
sessions[0].Capabilities[0] = "mutated"
|
||||
stored, _ := restarted.ClientManagerSessions().Get(session.ID)
|
||||
if stored.Capabilities[0] != "component.register" {
|
||||
t.Fatalf("repository returned shared capability storage: %+v", stored)
|
||||
}
|
||||
expired, err := restarted.ClientManagerNonces().List(domain.ClientManagerNonceFilter{ExpiresBefore: stamp.Add(6 * time.Minute)})
|
||||
if err != nil || len(expired) != 1 {
|
||||
t.Fatalf("unexpected nonce expiry filter: items=%+v err=%v", expired, err)
|
||||
}
|
||||
if err := restarted.ClientManagerNonces().Delete(nonce.ID); err != nil {
|
||||
t.Fatalf("delete expired nonce: %v", err)
|
||||
}
|
||||
if _, err := restarted.ClientManagerNonces().Get(nonce.ID); err != ErrNotFound {
|
||||
t.Fatalf("expected deleted nonce, got %v", err)
|
||||
}
|
||||
}
|
||||
+46
-81
@@ -13,34 +13,29 @@ import (
|
||||
)
|
||||
|
||||
type StoreSnapshot struct {
|
||||
Users []domain.User `json:"users"`
|
||||
AuthSessions []domain.AuthSessionRecord `json:"authSessions"`
|
||||
RunControlSessions []domain.RunControlSession `json:"runControlSessions"`
|
||||
AIProviders []domain.AIProvider `json:"aiProviders"`
|
||||
GamePlugins []domain.GamePlugin `json:"gamePlugins"`
|
||||
ServerInstances []domain.ServerInstance `json:"serverInstances"`
|
||||
RunEndpoints []domain.RunEndpoint `json:"runEndpoints"`
|
||||
Jobs []domain.Job `json:"jobs"`
|
||||
Artifacts []domain.Artifact `json:"artifacts"`
|
||||
RuntimeBindings []domain.RuntimeBinding `json:"runtimeBindings"`
|
||||
EncryptedComponentKeys []domain.EncryptedComponentKey `json:"encryptedComponentKeys"`
|
||||
RunDistributions []domain.RunDistribution `json:"runDistributions"`
|
||||
ClientManagerDistributions []domain.ClientManagerDistribution `json:"clientManagerDistributions"`
|
||||
ClientManagerInstallations []domain.ClientManagerInstallation `json:"clientManagerInstallations"`
|
||||
ClientManagerSessions []domain.ClientManagerSession `json:"clientManagerSessions"`
|
||||
ClientManagerNonces []domain.ClientManagerRegistrationNonce `json:"clientManagerNonces"`
|
||||
DependencyStatuses []domain.DependencyStatus `json:"dependencyStatuses"`
|
||||
ClientManagerBuildJobs []domain.ClientManagerBuildJob `json:"clientManagerBuildJobs"`
|
||||
RunUpdateJobs []domain.RunUpdateJob `json:"runUpdateJobs"`
|
||||
LogStreams []domain.LogStream `json:"logStreams"`
|
||||
MetricSamples []domain.MetricSample `json:"metricSamples"`
|
||||
Backups []domain.BackupRecord `json:"backups"`
|
||||
PluginLifecycles []domain.PluginLifecycleInstallation `json:"pluginLifecycles"`
|
||||
AIConfigDiffs []domain.AIConfigDiffPreview `json:"aiConfigDiffs"`
|
||||
GameClientBridgeCommands []domain.GameClientBridgeCommand `json:"gameClientBridgeCommands"`
|
||||
GameClientBridgeSnapshots []domain.GameClientBridgeSnapshot `json:"gameClientBridgeSnapshots"`
|
||||
GameClientBridgeStreams []domain.GameClientBridgeSnapshotStream `json:"gameClientBridgeStreams"`
|
||||
PluginDataRecords []domain.PluginDataRecord `json:"pluginDataRecords"`
|
||||
Users []domain.User `json:"users"`
|
||||
AuthSessions []domain.AuthSessionRecord `json:"authSessions"`
|
||||
RunControlSessions []domain.RunControlSession `json:"runControlSessions"`
|
||||
AIProviders []domain.AIProvider `json:"aiProviders"`
|
||||
GamePlugins []domain.GamePlugin `json:"gamePlugins"`
|
||||
ServerInstances []domain.ServerInstance `json:"serverInstances"`
|
||||
RunEndpoints []domain.RunEndpoint `json:"runEndpoints"`
|
||||
Jobs []domain.Job `json:"jobs"`
|
||||
Artifacts []domain.Artifact `json:"artifacts"`
|
||||
RuntimeBindings []domain.RuntimeBinding `json:"runtimeBindings"`
|
||||
EncryptedComponentKeys []domain.EncryptedComponentKey `json:"encryptedComponentKeys"`
|
||||
RunDistributions []domain.RunDistribution `json:"runDistributions"`
|
||||
DependencyStatuses []domain.DependencyStatus `json:"dependencyStatuses"`
|
||||
RunUpdateJobs []domain.RunUpdateJob `json:"runUpdateJobs"`
|
||||
LogStreams []domain.LogStream `json:"logStreams"`
|
||||
MetricSamples []domain.MetricSample `json:"metricSamples"`
|
||||
Backups []domain.BackupRecord `json:"backups"`
|
||||
PluginLifecycles []domain.PluginLifecycleInstallation `json:"pluginLifecycles"`
|
||||
AIConfigDiffs []domain.AIConfigDiffPreview `json:"aiConfigDiffs"`
|
||||
GameClientBridgeCommands []domain.GameClientBridgeCommand `json:"gameClientBridgeCommands"`
|
||||
GameClientBridgeSnapshots []domain.GameClientBridgeSnapshot `json:"gameClientBridgeSnapshots"`
|
||||
GameClientBridgeStreams []domain.GameClientBridgeSnapshotStream `json:"gameClientBridgeStreams"`
|
||||
PluginDataRecords []domain.PluginDataRecord `json:"pluginDataRecords"`
|
||||
}
|
||||
|
||||
type FileStore struct {
|
||||
@@ -119,30 +114,10 @@ func (store *FileStore) RunDistributions() RunDistributionRepository {
|
||||
return &persistentRepository[domain.RunDistribution, domain.RunDistributionFilter]{repository: store.MemoryStore.runDists, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) ClientManagerDistributions() ClientManagerDistributionRepository {
|
||||
return &persistentRepository[domain.ClientManagerDistribution, domain.ClientManagerDistributionFilter]{repository: store.MemoryStore.clientDists, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) ClientManagerInstallations() ClientManagerInstallationRepository {
|
||||
return &persistentRepository[domain.ClientManagerInstallation, domain.ClientManagerInstallationFilter]{repository: store.MemoryStore.clientInstalls, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) ClientManagerSessions() ClientManagerSessionRepository {
|
||||
return &persistentRepository[domain.ClientManagerSession, domain.ClientManagerSessionFilter]{repository: store.MemoryStore.clientSessions, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) ClientManagerNonces() ClientManagerNonceRepository {
|
||||
return &persistentRepository[domain.ClientManagerRegistrationNonce, domain.ClientManagerNonceFilter]{repository: store.MemoryStore.clientNonces, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) DependencyStatuses() DependencyStatusRepository {
|
||||
return &persistentRepository[domain.DependencyStatus, domain.DependencyStatusFilter]{repository: store.MemoryStore.dependencies, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) ClientManagerBuildJobs() ClientManagerBuildJobRepository {
|
||||
return &persistentRepository[domain.ClientManagerBuildJob, domain.ClientManagerBuildJobFilter]{repository: store.MemoryStore.buildJobs, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *FileStore) RunUpdateJobs() RunUpdateJobRepository {
|
||||
return &persistentRepository[domain.RunUpdateJob, domain.RunUpdateJobFilter]{repository: store.MemoryStore.updateJobs, persist: store.persist}
|
||||
}
|
||||
@@ -227,34 +202,29 @@ func (store *FileStore) persist() error {
|
||||
|
||||
func (store *FileStore) snapshot() StoreSnapshot {
|
||||
return StoreSnapshot{
|
||||
Users: snapshotRepository(store.MemoryStore.users),
|
||||
AuthSessions: snapshotRepository(store.MemoryStore.authSessions),
|
||||
RunControlSessions: snapshotRepository(store.MemoryStore.runSessions),
|
||||
AIProviders: snapshotRepository(store.MemoryStore.aiProviders),
|
||||
GamePlugins: snapshotRepository(store.MemoryStore.gamePlugins),
|
||||
ServerInstances: snapshotRepository(store.MemoryStore.serverInstances),
|
||||
RunEndpoints: snapshotRepository(store.MemoryStore.runEndpoints),
|
||||
Jobs: snapshotRepository(store.MemoryStore.jobs.memoryRepository),
|
||||
Artifacts: snapshotRepository(store.MemoryStore.artifacts),
|
||||
RuntimeBindings: snapshotRepository(store.MemoryStore.runtimeBindings),
|
||||
EncryptedComponentKeys: snapshotRepository(store.MemoryStore.componentKeys),
|
||||
RunDistributions: snapshotRepository(store.MemoryStore.runDists),
|
||||
ClientManagerDistributions: snapshotRepository(store.MemoryStore.clientDists),
|
||||
ClientManagerInstallations: snapshotRepository(store.MemoryStore.clientInstalls),
|
||||
ClientManagerSessions: snapshotRepository(store.MemoryStore.clientSessions),
|
||||
ClientManagerNonces: snapshotRepository(store.MemoryStore.clientNonces),
|
||||
DependencyStatuses: snapshotRepository(store.MemoryStore.dependencies),
|
||||
ClientManagerBuildJobs: snapshotRepository(store.MemoryStore.buildJobs),
|
||||
RunUpdateJobs: snapshotRepository(store.MemoryStore.updateJobs),
|
||||
LogStreams: snapshotRepository(store.MemoryStore.logStreams),
|
||||
MetricSamples: snapshotRepository(store.MemoryStore.metricSamples),
|
||||
Backups: snapshotRepository(store.MemoryStore.backups),
|
||||
PluginLifecycles: snapshotRepository(store.MemoryStore.pluginLifecycle),
|
||||
AIConfigDiffs: snapshotRepository(store.MemoryStore.aiConfigDiffs),
|
||||
GameClientBridgeCommands: snapshotRepository(store.MemoryStore.bridgeCommands.memoryRepository),
|
||||
GameClientBridgeSnapshots: snapshotRepository(store.MemoryStore.bridgeSnapshots.memoryRepository),
|
||||
GameClientBridgeStreams: snapshotRepository(store.MemoryStore.bridgeStreams),
|
||||
PluginDataRecords: snapshotRepository(store.MemoryStore.pluginDataRecords),
|
||||
Users: snapshotRepository(store.MemoryStore.users),
|
||||
AuthSessions: snapshotRepository(store.MemoryStore.authSessions),
|
||||
RunControlSessions: snapshotRepository(store.MemoryStore.runSessions),
|
||||
AIProviders: snapshotRepository(store.MemoryStore.aiProviders),
|
||||
GamePlugins: snapshotRepository(store.MemoryStore.gamePlugins),
|
||||
ServerInstances: snapshotRepository(store.MemoryStore.serverInstances),
|
||||
RunEndpoints: snapshotRepository(store.MemoryStore.runEndpoints),
|
||||
Jobs: snapshotRepository(store.MemoryStore.jobs.memoryRepository),
|
||||
Artifacts: snapshotRepository(store.MemoryStore.artifacts),
|
||||
RuntimeBindings: snapshotRepository(store.MemoryStore.runtimeBindings),
|
||||
EncryptedComponentKeys: snapshotRepository(store.MemoryStore.componentKeys),
|
||||
RunDistributions: snapshotRepository(store.MemoryStore.runDists),
|
||||
DependencyStatuses: snapshotRepository(store.MemoryStore.dependencies),
|
||||
RunUpdateJobs: snapshotRepository(store.MemoryStore.updateJobs),
|
||||
LogStreams: snapshotRepository(store.MemoryStore.logStreams),
|
||||
MetricSamples: snapshotRepository(store.MemoryStore.metricSamples),
|
||||
Backups: snapshotRepository(store.MemoryStore.backups),
|
||||
PluginLifecycles: snapshotRepository(store.MemoryStore.pluginLifecycle),
|
||||
AIConfigDiffs: snapshotRepository(store.MemoryStore.aiConfigDiffs),
|
||||
GameClientBridgeCommands: snapshotRepository(store.MemoryStore.bridgeCommands.memoryRepository),
|
||||
GameClientBridgeSnapshots: snapshotRepository(store.MemoryStore.bridgeSnapshots.memoryRepository),
|
||||
GameClientBridgeStreams: snapshotRepository(store.MemoryStore.bridgeStreams),
|
||||
PluginDataRecords: snapshotRepository(store.MemoryStore.pluginDataRecords),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -271,12 +241,7 @@ func (store *FileStore) loadSnapshot(snapshot StoreSnapshot) {
|
||||
loadRepository(store.MemoryStore.runtimeBindings, snapshot.RuntimeBindings)
|
||||
loadRepository(store.MemoryStore.componentKeys, snapshot.EncryptedComponentKeys)
|
||||
loadRepository(store.MemoryStore.runDists, snapshot.RunDistributions)
|
||||
loadRepository(store.MemoryStore.clientDists, snapshot.ClientManagerDistributions)
|
||||
loadRepository(store.MemoryStore.clientInstalls, snapshot.ClientManagerInstallations)
|
||||
loadRepository(store.MemoryStore.clientSessions, snapshot.ClientManagerSessions)
|
||||
loadRepository(store.MemoryStore.clientNonces, snapshot.ClientManagerNonces)
|
||||
loadRepository(store.MemoryStore.dependencies, snapshot.DependencyStatuses)
|
||||
loadRepository(store.MemoryStore.buildJobs, snapshot.ClientManagerBuildJobs)
|
||||
loadRepository(store.MemoryStore.updateJobs, snapshot.RunUpdateJobs)
|
||||
loadRepository(store.MemoryStore.logStreams, snapshot.LogStreams)
|
||||
loadRepository(store.MemoryStore.metricSamples, snapshot.MetricSamples)
|
||||
|
||||
@@ -101,30 +101,10 @@ func (store *MySQLStore) RunDistributions() RunDistributionRepository {
|
||||
return &persistentRepository[domain.RunDistribution, domain.RunDistributionFilter]{repository: store.MemoryStore.runDists, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) ClientManagerDistributions() ClientManagerDistributionRepository {
|
||||
return &persistentRepository[domain.ClientManagerDistribution, domain.ClientManagerDistributionFilter]{repository: store.MemoryStore.clientDists, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) ClientManagerInstallations() ClientManagerInstallationRepository {
|
||||
return &persistentRepository[domain.ClientManagerInstallation, domain.ClientManagerInstallationFilter]{repository: store.MemoryStore.clientInstalls, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) ClientManagerSessions() ClientManagerSessionRepository {
|
||||
return &persistentRepository[domain.ClientManagerSession, domain.ClientManagerSessionFilter]{repository: store.MemoryStore.clientSessions, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) ClientManagerNonces() ClientManagerNonceRepository {
|
||||
return &persistentRepository[domain.ClientManagerRegistrationNonce, domain.ClientManagerNonceFilter]{repository: store.MemoryStore.clientNonces, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) DependencyStatuses() DependencyStatusRepository {
|
||||
return &persistentRepository[domain.DependencyStatus, domain.DependencyStatusFilter]{repository: store.MemoryStore.dependencies, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) ClientManagerBuildJobs() ClientManagerBuildJobRepository {
|
||||
return &persistentRepository[domain.ClientManagerBuildJob, domain.ClientManagerBuildJobFilter]{repository: store.MemoryStore.buildJobs, persist: store.persist}
|
||||
}
|
||||
|
||||
func (store *MySQLStore) RunUpdateJobs() RunUpdateJobRepository {
|
||||
return &persistentRepository[domain.RunUpdateJob, domain.RunUpdateJobFilter]{repository: store.MemoryStore.updateJobs, persist: store.persist}
|
||||
}
|
||||
@@ -226,34 +206,29 @@ ON DUPLICATE KEY UPDATE snapshot_json = ?, updated_at = CURRENT_TIMESTAMP`, mysq
|
||||
|
||||
func (store *MySQLStore) snapshot() StoreSnapshot {
|
||||
return StoreSnapshot{
|
||||
Users: snapshotRepository(store.MemoryStore.users),
|
||||
AuthSessions: snapshotRepository(store.MemoryStore.authSessions),
|
||||
RunControlSessions: snapshotRepository(store.MemoryStore.runSessions),
|
||||
AIProviders: snapshotRepository(store.MemoryStore.aiProviders),
|
||||
GamePlugins: snapshotRepository(store.MemoryStore.gamePlugins),
|
||||
ServerInstances: snapshotRepository(store.MemoryStore.serverInstances),
|
||||
RunEndpoints: snapshotRepository(store.MemoryStore.runEndpoints),
|
||||
Jobs: snapshotRepository(store.MemoryStore.jobs.memoryRepository),
|
||||
Artifacts: snapshotRepository(store.MemoryStore.artifacts),
|
||||
RuntimeBindings: snapshotRepository(store.MemoryStore.runtimeBindings),
|
||||
EncryptedComponentKeys: snapshotRepository(store.MemoryStore.componentKeys),
|
||||
RunDistributions: snapshotRepository(store.MemoryStore.runDists),
|
||||
ClientManagerDistributions: snapshotRepository(store.MemoryStore.clientDists),
|
||||
ClientManagerInstallations: snapshotRepository(store.MemoryStore.clientInstalls),
|
||||
ClientManagerSessions: snapshotRepository(store.MemoryStore.clientSessions),
|
||||
ClientManagerNonces: snapshotRepository(store.MemoryStore.clientNonces),
|
||||
DependencyStatuses: snapshotRepository(store.MemoryStore.dependencies),
|
||||
ClientManagerBuildJobs: snapshotRepository(store.MemoryStore.buildJobs),
|
||||
RunUpdateJobs: snapshotRepository(store.MemoryStore.updateJobs),
|
||||
LogStreams: snapshotRepository(store.MemoryStore.logStreams),
|
||||
MetricSamples: snapshotRepository(store.MemoryStore.metricSamples),
|
||||
Backups: snapshotRepository(store.MemoryStore.backups),
|
||||
PluginLifecycles: snapshotRepository(store.MemoryStore.pluginLifecycle),
|
||||
AIConfigDiffs: snapshotRepository(store.MemoryStore.aiConfigDiffs),
|
||||
GameClientBridgeCommands: snapshotRepository(store.MemoryStore.bridgeCommands.memoryRepository),
|
||||
GameClientBridgeSnapshots: snapshotRepository(store.MemoryStore.bridgeSnapshots.memoryRepository),
|
||||
GameClientBridgeStreams: snapshotRepository(store.MemoryStore.bridgeStreams),
|
||||
PluginDataRecords: snapshotRepository(store.MemoryStore.pluginDataRecords),
|
||||
Users: snapshotRepository(store.MemoryStore.users),
|
||||
AuthSessions: snapshotRepository(store.MemoryStore.authSessions),
|
||||
RunControlSessions: snapshotRepository(store.MemoryStore.runSessions),
|
||||
AIProviders: snapshotRepository(store.MemoryStore.aiProviders),
|
||||
GamePlugins: snapshotRepository(store.MemoryStore.gamePlugins),
|
||||
ServerInstances: snapshotRepository(store.MemoryStore.serverInstances),
|
||||
RunEndpoints: snapshotRepository(store.MemoryStore.runEndpoints),
|
||||
Jobs: snapshotRepository(store.MemoryStore.jobs.memoryRepository),
|
||||
Artifacts: snapshotRepository(store.MemoryStore.artifacts),
|
||||
RuntimeBindings: snapshotRepository(store.MemoryStore.runtimeBindings),
|
||||
EncryptedComponentKeys: snapshotRepository(store.MemoryStore.componentKeys),
|
||||
RunDistributions: snapshotRepository(store.MemoryStore.runDists),
|
||||
DependencyStatuses: snapshotRepository(store.MemoryStore.dependencies),
|
||||
RunUpdateJobs: snapshotRepository(store.MemoryStore.updateJobs),
|
||||
LogStreams: snapshotRepository(store.MemoryStore.logStreams),
|
||||
MetricSamples: snapshotRepository(store.MemoryStore.metricSamples),
|
||||
Backups: snapshotRepository(store.MemoryStore.backups),
|
||||
PluginLifecycles: snapshotRepository(store.MemoryStore.pluginLifecycle),
|
||||
AIConfigDiffs: snapshotRepository(store.MemoryStore.aiConfigDiffs),
|
||||
GameClientBridgeCommands: snapshotRepository(store.MemoryStore.bridgeCommands.memoryRepository),
|
||||
GameClientBridgeSnapshots: snapshotRepository(store.MemoryStore.bridgeSnapshots.memoryRepository),
|
||||
GameClientBridgeStreams: snapshotRepository(store.MemoryStore.bridgeStreams),
|
||||
PluginDataRecords: snapshotRepository(store.MemoryStore.pluginDataRecords),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,12 +245,7 @@ func (store *MySQLStore) loadSnapshot(snapshot StoreSnapshot) {
|
||||
loadRepository(store.MemoryStore.runtimeBindings, snapshot.RuntimeBindings)
|
||||
loadRepository(store.MemoryStore.componentKeys, snapshot.EncryptedComponentKeys)
|
||||
loadRepository(store.MemoryStore.runDists, snapshot.RunDistributions)
|
||||
loadRepository(store.MemoryStore.clientDists, snapshot.ClientManagerDistributions)
|
||||
loadRepository(store.MemoryStore.clientInstalls, snapshot.ClientManagerInstallations)
|
||||
loadRepository(store.MemoryStore.clientSessions, snapshot.ClientManagerSessions)
|
||||
loadRepository(store.MemoryStore.clientNonces, snapshot.ClientManagerNonces)
|
||||
loadRepository(store.MemoryStore.dependencies, snapshot.DependencyStatuses)
|
||||
loadRepository(store.MemoryStore.buildJobs, snapshot.ClientManagerBuildJobs)
|
||||
loadRepository(store.MemoryStore.updateJobs, snapshot.RunUpdateJobs)
|
||||
loadRepository(store.MemoryStore.logStreams, snapshot.LogStreams)
|
||||
loadRepository(store.MemoryStore.metricSamples, snapshot.MetricSamples)
|
||||
|
||||
+5
-124
@@ -99,35 +99,6 @@ type RunDistributionRepository interface {
|
||||
Update(domain.RunDistribution) error
|
||||
}
|
||||
|
||||
type ClientManagerDistributionRepository interface {
|
||||
Create(domain.ClientManagerDistribution) error
|
||||
Get(id string) (domain.ClientManagerDistribution, error)
|
||||
List(domain.ClientManagerDistributionFilter) ([]domain.ClientManagerDistribution, error)
|
||||
Update(domain.ClientManagerDistribution) error
|
||||
}
|
||||
|
||||
type ClientManagerInstallationRepository interface {
|
||||
Create(domain.ClientManagerInstallation) error
|
||||
Get(id string) (domain.ClientManagerInstallation, error)
|
||||
List(domain.ClientManagerInstallationFilter) ([]domain.ClientManagerInstallation, error)
|
||||
Update(domain.ClientManagerInstallation) error
|
||||
}
|
||||
|
||||
type ClientManagerSessionRepository interface {
|
||||
Create(domain.ClientManagerSession) error
|
||||
Get(id string) (domain.ClientManagerSession, error)
|
||||
List(domain.ClientManagerSessionFilter) ([]domain.ClientManagerSession, error)
|
||||
Update(domain.ClientManagerSession) error
|
||||
}
|
||||
|
||||
type ClientManagerNonceRepository interface {
|
||||
Create(domain.ClientManagerRegistrationNonce) error
|
||||
Get(id string) (domain.ClientManagerRegistrationNonce, error)
|
||||
List(domain.ClientManagerNonceFilter) ([]domain.ClientManagerRegistrationNonce, error)
|
||||
Update(domain.ClientManagerRegistrationNonce) error
|
||||
Delete(id string) error
|
||||
}
|
||||
|
||||
type DependencyStatusRepository interface {
|
||||
Create(domain.DependencyStatus) error
|
||||
Get(id string) (domain.DependencyStatus, error)
|
||||
@@ -135,13 +106,6 @@ type DependencyStatusRepository interface {
|
||||
Update(domain.DependencyStatus) error
|
||||
}
|
||||
|
||||
type ClientManagerBuildJobRepository interface {
|
||||
Create(domain.ClientManagerBuildJob) error
|
||||
Get(id string) (domain.ClientManagerBuildJob, error)
|
||||
List(domain.ClientManagerBuildJobFilter) ([]domain.ClientManagerBuildJob, error)
|
||||
Update(domain.ClientManagerBuildJob) error
|
||||
}
|
||||
|
||||
type RunUpdateJobRepository interface {
|
||||
Create(domain.RunUpdateJob) error
|
||||
Get(id string) (domain.RunUpdateJob, error)
|
||||
@@ -233,12 +197,7 @@ type Store interface {
|
||||
RuntimeBindings() RuntimeBindingRepository
|
||||
EncryptedComponentKeys() EncryptedComponentKeyRepository
|
||||
RunDistributions() RunDistributionRepository
|
||||
ClientManagerDistributions() ClientManagerDistributionRepository
|
||||
ClientManagerInstallations() ClientManagerInstallationRepository
|
||||
ClientManagerSessions() ClientManagerSessionRepository
|
||||
ClientManagerNonces() ClientManagerNonceRepository
|
||||
DependencyStatuses() DependencyStatusRepository
|
||||
ClientManagerBuildJobs() ClientManagerBuildJobRepository
|
||||
RunUpdateJobs() RunUpdateJobRepository
|
||||
LogStreams() LogStreamRepository
|
||||
MetricSamples() MetricSampleRepository
|
||||
@@ -264,12 +223,7 @@ type MemoryStore struct {
|
||||
runtimeBindings *memoryRepository[domain.RuntimeBinding, domain.RuntimeBindingFilter]
|
||||
componentKeys *memoryRepository[domain.EncryptedComponentKey, domain.EncryptedComponentKeyFilter]
|
||||
runDists *memoryRepository[domain.RunDistribution, domain.RunDistributionFilter]
|
||||
clientDists *memoryRepository[domain.ClientManagerDistribution, domain.ClientManagerDistributionFilter]
|
||||
clientInstalls *memoryRepository[domain.ClientManagerInstallation, domain.ClientManagerInstallationFilter]
|
||||
clientSessions *memoryRepository[domain.ClientManagerSession, domain.ClientManagerSessionFilter]
|
||||
clientNonces *memoryRepository[domain.ClientManagerRegistrationNonce, domain.ClientManagerNonceFilter]
|
||||
dependencies *memoryRepository[domain.DependencyStatus, domain.DependencyStatusFilter]
|
||||
buildJobs *memoryRepository[domain.ClientManagerBuildJob, domain.ClientManagerBuildJobFilter]
|
||||
updateJobs *memoryRepository[domain.RunUpdateJob, domain.RunUpdateJobFilter]
|
||||
logStreams *memoryRepository[domain.LogStream, domain.LogStreamFilter]
|
||||
metricSamples *memoryRepository[domain.MetricSample, domain.MetricSampleFilter]
|
||||
@@ -340,36 +294,11 @@ func NewMemoryStore() *MemoryStore {
|
||||
domain.CopyRunDistribution,
|
||||
matchRunDistribution,
|
||||
),
|
||||
clientDists: newMemoryRepository(
|
||||
func(distribution domain.ClientManagerDistribution) string { return distribution.ID },
|
||||
domain.CopyClientManagerDistribution,
|
||||
matchClientManagerDistribution,
|
||||
),
|
||||
clientInstalls: newMemoryRepository(
|
||||
func(installation domain.ClientManagerInstallation) string { return installation.ID },
|
||||
domain.CopyClientManagerInstallation,
|
||||
matchClientManagerInstallation,
|
||||
),
|
||||
clientSessions: newMemoryRepository(
|
||||
func(session domain.ClientManagerSession) string { return session.ID },
|
||||
domain.CopyClientManagerSession,
|
||||
matchClientManagerSession,
|
||||
),
|
||||
clientNonces: newMemoryRepository(
|
||||
func(nonce domain.ClientManagerRegistrationNonce) string { return nonce.ID },
|
||||
domain.CopyClientManagerRegistrationNonce,
|
||||
matchClientManagerNonce,
|
||||
),
|
||||
dependencies: newMemoryRepository(
|
||||
func(status domain.DependencyStatus) string { return status.ID },
|
||||
domain.CopyDependencyStatus,
|
||||
matchDependencyStatus,
|
||||
),
|
||||
buildJobs: newMemoryRepository(
|
||||
func(job domain.ClientManagerBuildJob) string { return job.ID },
|
||||
domain.CopyClientManagerBuildJob,
|
||||
matchClientManagerBuildJob,
|
||||
),
|
||||
updateJobs: newMemoryRepository(
|
||||
func(job domain.RunUpdateJob) string { return job.ID },
|
||||
domain.CopyRunUpdateJob,
|
||||
@@ -424,27 +353,12 @@ func (store *MemoryStore) RuntimeBindings() RuntimeBindingRepository { ret
|
||||
func (store *MemoryStore) EncryptedComponentKeys() EncryptedComponentKeyRepository {
|
||||
return store.componentKeys
|
||||
}
|
||||
func (store *MemoryStore) RunDistributions() RunDistributionRepository { return store.runDists }
|
||||
func (store *MemoryStore) ClientManagerDistributions() ClientManagerDistributionRepository {
|
||||
return store.clientDists
|
||||
}
|
||||
func (store *MemoryStore) ClientManagerInstallations() ClientManagerInstallationRepository {
|
||||
return store.clientInstalls
|
||||
}
|
||||
func (store *MemoryStore) ClientManagerSessions() ClientManagerSessionRepository {
|
||||
return store.clientSessions
|
||||
}
|
||||
func (store *MemoryStore) ClientManagerNonces() ClientManagerNonceRepository {
|
||||
return store.clientNonces
|
||||
}
|
||||
func (store *MemoryStore) RunDistributions() RunDistributionRepository { return store.runDists }
|
||||
func (store *MemoryStore) DependencyStatuses() DependencyStatusRepository { return store.dependencies }
|
||||
func (store *MemoryStore) ClientManagerBuildJobs() ClientManagerBuildJobRepository {
|
||||
return store.buildJobs
|
||||
}
|
||||
func (store *MemoryStore) RunUpdateJobs() RunUpdateJobRepository { return store.updateJobs }
|
||||
func (store *MemoryStore) LogStreams() LogStreamRepository { return store.logStreams }
|
||||
func (store *MemoryStore) MetricSamples() MetricSampleRepository { return store.metricSamples }
|
||||
func (store *MemoryStore) Backups() BackupRepository { return store.backups }
|
||||
func (store *MemoryStore) RunUpdateJobs() RunUpdateJobRepository { return store.updateJobs }
|
||||
func (store *MemoryStore) LogStreams() LogStreamRepository { return store.logStreams }
|
||||
func (store *MemoryStore) MetricSamples() MetricSampleRepository { return store.metricSamples }
|
||||
func (store *MemoryStore) Backups() BackupRepository { return store.backups }
|
||||
func (store *MemoryStore) PluginLifecycles() PluginLifecycleRepository {
|
||||
return store.pluginLifecycle
|
||||
}
|
||||
@@ -659,45 +573,12 @@ func matchRunDistribution(distribution domain.RunDistribution, filter domain.Run
|
||||
(filter.Status == "" || distribution.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchClientManagerDistribution(distribution domain.ClientManagerDistribution, filter domain.ClientManagerDistributionFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || distribution.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || distribution.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.TargetOS == "" || distribution.TargetOS == filter.TargetOS) &&
|
||||
(filter.TargetArch == "" || distribution.TargetArch == filter.TargetArch) &&
|
||||
(filter.Status == "" || distribution.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchClientManagerInstallation(installation domain.ClientManagerInstallation, filter domain.ClientManagerInstallationFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || installation.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || installation.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.RunEndpointID == "" || installation.RunEndpointID == filter.RunEndpointID) &&
|
||||
(filter.Status == "" || installation.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchClientManagerSession(session domain.ClientManagerSession, filter domain.ClientManagerSessionFilter) bool {
|
||||
return (filter.InstallationID == "" || session.InstallationID == filter.InstallationID) &&
|
||||
(filter.ServerInstanceID == "" || session.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || session.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.Status == "" || session.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchClientManagerNonce(nonce domain.ClientManagerRegistrationNonce, filter domain.ClientManagerNonceFilter) bool {
|
||||
return (filter.InstallationID == "" || nonce.InstallationID == filter.InstallationID) &&
|
||||
(filter.ExpiresBefore.IsZero() || nonce.ExpiresAt.Before(filter.ExpiresBefore) || nonce.ExpiresAt.Equal(filter.ExpiresBefore))
|
||||
}
|
||||
|
||||
func matchDependencyStatus(status domain.DependencyStatus, filter domain.DependencyStatusFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || status.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProbeKey == "" || status.ProbeKey == filter.ProbeKey) &&
|
||||
(filter.State == "" || status.State == filter.State)
|
||||
}
|
||||
|
||||
func matchClientManagerBuildJob(job domain.ClientManagerBuildJob, filter domain.ClientManagerBuildJobFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || job.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || job.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.Status == "" || job.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchRunUpdateJob(job domain.RunUpdateJob, filter domain.RunUpdateJobFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || job.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.Status == "" || job.Status == filter.Status)
|
||||
|
||||
Reference in New Issue
Block a user