Remove SCUM sqlite user projections
This commit is contained in:
@@ -184,6 +184,41 @@ type PluginDataRecordRepository interface {
|
||||
Apply([]domain.PluginDataRecord, []string) error
|
||||
}
|
||||
|
||||
type SCUMUserRepository interface {
|
||||
Create(domain.SCUMUser) error
|
||||
Get(string) (domain.SCUMUser, error)
|
||||
List(domain.SCUMUserFilter) ([]domain.SCUMUser, error)
|
||||
Update(domain.SCUMUser) error
|
||||
}
|
||||
|
||||
type SCUMUserTrajectoryRepository interface {
|
||||
Create(domain.SCUMUserTrajectory) error
|
||||
Get(string) (domain.SCUMUserTrajectory, error)
|
||||
List(domain.SCUMUserTrajectoryFilter) ([]domain.SCUMUserTrajectory, error)
|
||||
Update(domain.SCUMUserTrajectory) error
|
||||
}
|
||||
|
||||
type SCUMVehicleRepository interface {
|
||||
Create(domain.SCUMVehicle) error
|
||||
Get(string) (domain.SCUMVehicle, error)
|
||||
List(domain.SCUMVehicleFilter) ([]domain.SCUMVehicle, error)
|
||||
Update(domain.SCUMVehicle) error
|
||||
}
|
||||
|
||||
type SCUMVehicleTrajectoryRepository interface {
|
||||
Create(domain.SCUMVehicleTrajectory) error
|
||||
Get(string) (domain.SCUMVehicleTrajectory, error)
|
||||
List(domain.SCUMVehicleTrajectoryFilter) ([]domain.SCUMVehicleTrajectory, error)
|
||||
Update(domain.SCUMVehicleTrajectory) error
|
||||
}
|
||||
|
||||
type SCUMVehicleLockRepository interface {
|
||||
Create(domain.SCUMVehicleLock) error
|
||||
Get(string) (domain.SCUMVehicleLock, error)
|
||||
List(domain.SCUMVehicleLockFilter) ([]domain.SCUMVehicleLock, error)
|
||||
Update(domain.SCUMVehicleLock) error
|
||||
}
|
||||
|
||||
type Store interface {
|
||||
Users() UserRepository
|
||||
AuthSessions() AuthSessionRepository
|
||||
@@ -208,6 +243,11 @@ type Store interface {
|
||||
GameClientBridgeSnapshots() GameClientBridgeSnapshotRepository
|
||||
GameClientBridgeSnapshotStreams() GameClientBridgeSnapshotStreamRepository
|
||||
PluginDataRecords() PluginDataRecordRepository
|
||||
SCUMUsers() SCUMUserRepository
|
||||
SCUMUserTrajectories() SCUMUserTrajectoryRepository
|
||||
SCUMVehicles() SCUMVehicleRepository
|
||||
SCUMVehicleTrajectories() SCUMVehicleTrajectoryRepository
|
||||
SCUMVehicleLocks() SCUMVehicleLockRepository
|
||||
}
|
||||
|
||||
type MemoryStore struct {
|
||||
@@ -234,6 +274,11 @@ type MemoryStore struct {
|
||||
bridgeSnapshots *memoryGameClientBridgeSnapshotRepository
|
||||
bridgeStreams *memoryRepository[domain.GameClientBridgeSnapshotStream, domain.GameClientBridgeSnapshotStreamFilter]
|
||||
pluginDataRecords *memoryRepository[domain.PluginDataRecord, domain.PluginDataFilter]
|
||||
scumUsers *memoryRepository[domain.SCUMUser, domain.SCUMUserFilter]
|
||||
scumUserTracks *memoryRepository[domain.SCUMUserTrajectory, domain.SCUMUserTrajectoryFilter]
|
||||
scumVehicles *memoryRepository[domain.SCUMVehicle, domain.SCUMVehicleFilter]
|
||||
scumVehicleTracks *memoryRepository[domain.SCUMVehicleTrajectory, domain.SCUMVehicleTrajectoryFilter]
|
||||
scumVehicleLocks *memoryRepository[domain.SCUMVehicleLock, domain.SCUMVehicleLockFilter]
|
||||
}
|
||||
|
||||
func NewMemoryStore() *MemoryStore {
|
||||
@@ -337,6 +382,11 @@ func NewMemoryStore() *MemoryStore {
|
||||
matchGameClientBridgeSnapshotStream,
|
||||
),
|
||||
pluginDataRecords: newMemoryRepository(func(value domain.PluginDataRecord) string { return value.ID }, domain.CopyPluginDataRecord, matchPluginDataRecord),
|
||||
scumUsers: newMemoryRepository(func(value domain.SCUMUser) string { return value.ID }, domain.CopySCUMUser, matchSCUMUser),
|
||||
scumUserTracks: newMemoryRepository(func(value domain.SCUMUserTrajectory) string { return value.ID }, domain.CopySCUMUserTrajectory, matchSCUMUserTrajectory),
|
||||
scumVehicles: newMemoryRepository(func(value domain.SCUMVehicle) string { return value.ID }, domain.CopySCUMVehicle, matchSCUMVehicle),
|
||||
scumVehicleTracks: newMemoryRepository(func(value domain.SCUMVehicleTrajectory) string { return value.ID }, domain.CopySCUMVehicleTrajectory, matchSCUMVehicleTrajectory),
|
||||
scumVehicleLocks: newMemoryRepository(func(value domain.SCUMVehicleLock) string { return value.ID }, domain.CopySCUMVehicleLock, matchSCUMVehicleLock),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,6 +425,15 @@ func (store *MemoryStore) GameClientBridgeSnapshotStreams() GameClientBridgeSnap
|
||||
func (store *MemoryStore) PluginDataRecords() PluginDataRecordRepository {
|
||||
return store.pluginDataRecords
|
||||
}
|
||||
func (store *MemoryStore) SCUMUsers() SCUMUserRepository { return store.scumUsers }
|
||||
func (store *MemoryStore) SCUMUserTrajectories() SCUMUserTrajectoryRepository {
|
||||
return store.scumUserTracks
|
||||
}
|
||||
func (store *MemoryStore) SCUMVehicles() SCUMVehicleRepository { return store.scumVehicles }
|
||||
func (store *MemoryStore) SCUMVehicleTrajectories() SCUMVehicleTrajectoryRepository {
|
||||
return store.scumVehicleTracks
|
||||
}
|
||||
func (store *MemoryStore) SCUMVehicleLocks() SCUMVehicleLockRepository { return store.scumVehicleLocks }
|
||||
|
||||
type memoryRepository[T any, F any] struct {
|
||||
mu sync.RWMutex
|
||||
@@ -693,3 +752,40 @@ func matchGameClientBridgeSnapshotStream(stream domain.GameClientBridgeSnapshotS
|
||||
func matchPluginDataRecord(value domain.PluginDataRecord, filter domain.PluginDataFilter) bool {
|
||||
return (filter.PluginID == "" || value.PluginID == filter.PluginID) && (filter.ServerInstanceID == "" || value.ServerInstanceID == filter.ServerInstanceID) && (filter.Collection == "" || value.Collection == filter.Collection) && (filter.Key == "" || value.Key == filter.Key)
|
||||
}
|
||||
|
||||
func matchSCUMUser(value domain.SCUMUser, filter domain.SCUMUserFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || value.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.SteamID == "" || value.SteamID == filter.SteamID) &&
|
||||
(filter.Online == nil || value.Online == *filter.Online) &&
|
||||
(filter.ChangedAfter.IsZero() || value.UpdatedAt.After(filter.ChangedAfter) || value.LastActivityAt.After(filter.ChangedAfter))
|
||||
}
|
||||
|
||||
func matchSCUMUserTrajectory(value domain.SCUMUserTrajectory, filter domain.SCUMUserTrajectoryFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || value.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.SCUMUserID == "" || value.SCUMUserID == filter.SCUMUserID) &&
|
||||
(filter.SteamID == "" || value.SteamID == filter.SteamID) &&
|
||||
(filter.After.IsZero() || value.ObservedAt.After(filter.After))
|
||||
}
|
||||
|
||||
func matchSCUMVehicle(value domain.SCUMVehicle, filter domain.SCUMVehicleFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || value.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.GameVehicleID == "" || value.GameVehicleID == filter.GameVehicleID) &&
|
||||
(filter.Exists == nil || value.Exists == *filter.Exists) &&
|
||||
(filter.ChangedAfter.IsZero() || value.UpdatedAt.After(filter.ChangedAfter) || value.LastObservedAt.After(filter.ChangedAfter))
|
||||
}
|
||||
|
||||
func matchSCUMVehicleTrajectory(value domain.SCUMVehicleTrajectory, filter domain.SCUMVehicleTrajectoryFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || value.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.SCUMVehicleID == "" || value.SCUMVehicleID == filter.SCUMVehicleID) &&
|
||||
(filter.GameVehicleID == "" || value.GameVehicleID == filter.GameVehicleID) &&
|
||||
(filter.After.IsZero() || value.ObservedAt.After(filter.After))
|
||||
}
|
||||
|
||||
func matchSCUMVehicleLock(value domain.SCUMVehicleLock, filter domain.SCUMVehicleLockFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || value.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.SCUMVehicleID == "" || value.SCUMVehicleID == filter.SCUMVehicleID) &&
|
||||
(filter.GameVehicleID == "" || value.GameVehicleID == filter.GameVehicleID) &&
|
||||
(filter.SCUMUserID == "" || value.SCUMUserID == filter.SCUMUserID) &&
|
||||
(filter.SteamID == "" || value.SteamID == filter.SteamID) &&
|
||||
(filter.After.IsZero() || value.LockedAt.After(filter.After))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user