Integrate SCUM real ops workflows
This commit is contained in:
@@ -295,6 +295,66 @@ type GameGiftGrantRepository interface {
|
||||
List(domain.GameGiftGrantFilter) ([]domain.GameGiftGrant, error)
|
||||
Update(domain.GameGiftGrant) error
|
||||
}
|
||||
type SCUMDataObservationRepository interface {
|
||||
Create(domain.SCUMDataObservation) error
|
||||
Get(string) (domain.SCUMDataObservation, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMDataObservation, error)
|
||||
Update(domain.SCUMDataObservation) error
|
||||
}
|
||||
type SCUMPlayerLiveStateRepository interface {
|
||||
Create(domain.SCUMPlayerLiveState) error
|
||||
Get(string) (domain.SCUMPlayerLiveState, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMPlayerLiveState, error)
|
||||
Update(domain.SCUMPlayerLiveState) error
|
||||
}
|
||||
type SCUMSquadRepository interface {
|
||||
Create(domain.SCUMSquad) error
|
||||
Get(string) (domain.SCUMSquad, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMSquad, error)
|
||||
Update(domain.SCUMSquad) error
|
||||
}
|
||||
type SCUMSquadMemberRepository interface {
|
||||
Create(domain.SCUMSquadMember) error
|
||||
Get(string) (domain.SCUMSquadMember, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMSquadMember, error)
|
||||
Update(domain.SCUMSquadMember) error
|
||||
}
|
||||
type SCUMVehicleRepository interface {
|
||||
Create(domain.SCUMVehicle) error
|
||||
Get(string) (domain.SCUMVehicle, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMVehicle, error)
|
||||
Update(domain.SCUMVehicle) error
|
||||
}
|
||||
type SCUMFlagRepository interface {
|
||||
Create(domain.SCUMFlag) error
|
||||
Get(string) (domain.SCUMFlag, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMFlag, error)
|
||||
Update(domain.SCUMFlag) error
|
||||
}
|
||||
type SCUMCurrentPositionRepository interface {
|
||||
Create(domain.SCUMCurrentPosition) error
|
||||
Get(string) (domain.SCUMCurrentPosition, error)
|
||||
List(domain.SCUMProjectionFilter) ([]domain.SCUMCurrentPosition, error)
|
||||
Update(domain.SCUMCurrentPosition) error
|
||||
}
|
||||
type SCUMOperationRequestRepository interface {
|
||||
Create(domain.SCUMOperationRequest) error
|
||||
Get(string) (domain.SCUMOperationRequest, error)
|
||||
List(domain.SCUMOperationRequestFilter) ([]domain.SCUMOperationRequest, error)
|
||||
Update(domain.SCUMOperationRequest) error
|
||||
}
|
||||
type SCUMWorkflowInstanceRepository interface {
|
||||
Create(domain.SCUMWorkflowInstance) error
|
||||
Get(string) (domain.SCUMWorkflowInstance, error)
|
||||
List(domain.SCUMWorkflowInstanceFilter) ([]domain.SCUMWorkflowInstance, error)
|
||||
Update(domain.SCUMWorkflowInstance) error
|
||||
}
|
||||
type SCUMWorkflowStepRepository interface {
|
||||
Create(domain.SCUMWorkflowStep) error
|
||||
Get(string) (domain.SCUMWorkflowStep, error)
|
||||
List(domain.SCUMWorkflowStepFilter) ([]domain.SCUMWorkflowStep, error)
|
||||
Update(domain.SCUMWorkflowStep) error
|
||||
}
|
||||
|
||||
type Store interface {
|
||||
Users() UserRepository
|
||||
@@ -337,6 +397,16 @@ type Store interface {
|
||||
GameGiftCatalogs() GameGiftCatalogRepository
|
||||
GameGiftRevisions() GameGiftRevisionRepository
|
||||
GameGiftGrants() GameGiftGrantRepository
|
||||
SCUMDataObservations() SCUMDataObservationRepository
|
||||
SCUMPlayerLiveStates() SCUMPlayerLiveStateRepository
|
||||
SCUMSquads() SCUMSquadRepository
|
||||
SCUMSquadMembers() SCUMSquadMemberRepository
|
||||
SCUMVehicles() SCUMVehicleRepository
|
||||
SCUMFlags() SCUMFlagRepository
|
||||
SCUMCurrentPositions() SCUMCurrentPositionRepository
|
||||
SCUMOperationRequests() SCUMOperationRequestRepository
|
||||
SCUMWorkflowInstances() SCUMWorkflowInstanceRepository
|
||||
SCUMWorkflowSteps() SCUMWorkflowStepRepository
|
||||
}
|
||||
|
||||
type MemoryStore struct {
|
||||
@@ -380,6 +450,16 @@ type MemoryStore struct {
|
||||
gameGiftCatalogs *memoryRepository[domain.GameGiftCatalog, domain.GameGiftCatalogFilter]
|
||||
gameGiftRevisions *memoryRepository[domain.GameGiftRevision, domain.GameGiftRevisionFilter]
|
||||
gameGiftGrants *memoryRepository[domain.GameGiftGrant, domain.GameGiftGrantFilter]
|
||||
scumDataObservations *memoryRepository[domain.SCUMDataObservation, domain.SCUMProjectionFilter]
|
||||
scumPlayerLiveStates *memoryRepository[domain.SCUMPlayerLiveState, domain.SCUMProjectionFilter]
|
||||
scumSquads *memoryRepository[domain.SCUMSquad, domain.SCUMProjectionFilter]
|
||||
scumSquadMembers *memoryRepository[domain.SCUMSquadMember, domain.SCUMProjectionFilter]
|
||||
scumVehicles *memoryRepository[domain.SCUMVehicle, domain.SCUMProjectionFilter]
|
||||
scumFlags *memoryRepository[domain.SCUMFlag, domain.SCUMProjectionFilter]
|
||||
scumCurrentPositions *memoryRepository[domain.SCUMCurrentPosition, domain.SCUMProjectionFilter]
|
||||
scumOperationRequests *memoryRepository[domain.SCUMOperationRequest, domain.SCUMOperationRequestFilter]
|
||||
scumWorkflowInstances *memoryRepository[domain.SCUMWorkflowInstance, domain.SCUMWorkflowInstanceFilter]
|
||||
scumWorkflowSteps *memoryRepository[domain.SCUMWorkflowStep, domain.SCUMWorkflowStepFilter]
|
||||
}
|
||||
|
||||
func NewMemoryStore() *MemoryStore {
|
||||
@@ -528,6 +608,16 @@ func NewMemoryStore() *MemoryStore {
|
||||
gameGiftCatalogs: newMemoryRepository(func(v domain.GameGiftCatalog) string { return v.ID }, domain.CopyGameGiftCatalog, matchGameGiftCatalog),
|
||||
gameGiftRevisions: newMemoryRepository(func(v domain.GameGiftRevision) string { return v.ID }, domain.CopyGameGiftRevision, matchGameGiftRevision),
|
||||
gameGiftGrants: newMemoryRepository(func(v domain.GameGiftGrant) string { return v.ID }, domain.CopyGameGiftGrant, matchGameGiftGrant),
|
||||
scumDataObservations: newMemoryRepository(func(v domain.SCUMDataObservation) string { return v.ID }, domain.CopySCUMDataObservation, matchSCUMDataObservation),
|
||||
scumPlayerLiveStates: newMemoryRepository(func(v domain.SCUMPlayerLiveState) string { return v.ID }, domain.CopySCUMPlayerLiveState, matchSCUMPlayerLiveState),
|
||||
scumSquads: newMemoryRepository(func(v domain.SCUMSquad) string { return v.ID }, domain.CopySCUMSquad, matchSCUMSquad),
|
||||
scumSquadMembers: newMemoryRepository(func(v domain.SCUMSquadMember) string { return v.ID }, domain.CopySCUMSquadMember, matchSCUMSquadMember),
|
||||
scumVehicles: newMemoryRepository(func(v domain.SCUMVehicle) string { return v.ID }, domain.CopySCUMVehicle, matchSCUMVehicle),
|
||||
scumFlags: newMemoryRepository(func(v domain.SCUMFlag) string { return v.ID }, domain.CopySCUMFlag, matchSCUMFlag),
|
||||
scumCurrentPositions: newMemoryRepository(func(v domain.SCUMCurrentPosition) string { return v.ID }, domain.CopySCUMCurrentPosition, matchSCUMCurrentPosition),
|
||||
scumOperationRequests: newMemoryRepository(func(v domain.SCUMOperationRequest) string { return v.ID }, domain.CopySCUMOperationRequest, matchSCUMOperationRequest),
|
||||
scumWorkflowInstances: newMemoryRepository(func(v domain.SCUMWorkflowInstance) string { return v.ID }, domain.CopySCUMWorkflowInstance, matchSCUMWorkflowInstance),
|
||||
scumWorkflowSteps: newMemoryRepository(func(v domain.SCUMWorkflowStep) string { return v.ID }, domain.CopySCUMWorkflowStep, matchSCUMWorkflowStep),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -607,6 +697,30 @@ func (store *MemoryStore) GameGiftRevisions() GameGiftRevisionRepository {
|
||||
return store.gameGiftRevisions
|
||||
}
|
||||
func (store *MemoryStore) GameGiftGrants() GameGiftGrantRepository { return store.gameGiftGrants }
|
||||
func (store *MemoryStore) SCUMDataObservations() SCUMDataObservationRepository {
|
||||
return store.scumDataObservations
|
||||
}
|
||||
func (store *MemoryStore) SCUMPlayerLiveStates() SCUMPlayerLiveStateRepository {
|
||||
return store.scumPlayerLiveStates
|
||||
}
|
||||
func (store *MemoryStore) SCUMSquads() SCUMSquadRepository { return store.scumSquads }
|
||||
func (store *MemoryStore) SCUMSquadMembers() SCUMSquadMemberRepository {
|
||||
return store.scumSquadMembers
|
||||
}
|
||||
func (store *MemoryStore) SCUMVehicles() SCUMVehicleRepository { return store.scumVehicles }
|
||||
func (store *MemoryStore) SCUMFlags() SCUMFlagRepository { return store.scumFlags }
|
||||
func (store *MemoryStore) SCUMCurrentPositions() SCUMCurrentPositionRepository {
|
||||
return store.scumCurrentPositions
|
||||
}
|
||||
func (store *MemoryStore) SCUMOperationRequests() SCUMOperationRequestRepository {
|
||||
return store.scumOperationRequests
|
||||
}
|
||||
func (store *MemoryStore) SCUMWorkflowInstances() SCUMWorkflowInstanceRepository {
|
||||
return store.scumWorkflowInstances
|
||||
}
|
||||
func (store *MemoryStore) SCUMWorkflowSteps() SCUMWorkflowStepRepository {
|
||||
return store.scumWorkflowSteps
|
||||
}
|
||||
|
||||
type memoryRepository[T any, F any] struct {
|
||||
mu sync.RWMutex
|
||||
@@ -941,3 +1055,100 @@ func matchGameGiftRevision(v domain.GameGiftRevision, f domain.GameGiftRevisionF
|
||||
func matchGameGiftGrant(v domain.GameGiftGrant, f domain.GameGiftGrantFilter) bool {
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) && (f.GamePlayerRecordID == "" || v.GamePlayerRecordID == f.GamePlayerRecordID) && (f.IdempotencyKey == "" || v.IdempotencyKey == f.IdempotencyKey)
|
||||
}
|
||||
|
||||
func matchSCUMDataObservation(v domain.SCUMDataObservation, f domain.SCUMProjectionFilter) bool {
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.SubjectType == "" || v.SubjectType == string(f.SubjectType)) &&
|
||||
(f.GamePlayerRecordID == "" || v.SubjectID == f.GamePlayerRecordID) &&
|
||||
(f.QueryKey == "" || v.QueryKey == f.QueryKey) &&
|
||||
(f.Freshness == "" || domain.SCUMProjectionFreshness(v.Status) == f.Freshness)
|
||||
}
|
||||
|
||||
func matchSCUMPlayerLiveState(v domain.SCUMPlayerLiveState, f domain.SCUMProjectionFilter) bool {
|
||||
search := strings.ToLower(strings.TrimSpace(f.Search))
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.GamePlayerID == "" || v.GamePlayerID == f.GamePlayerID) &&
|
||||
(f.GamePlayerRecordID == "" || v.GamePlayerRecordID == f.GamePlayerRecordID) &&
|
||||
(f.UserProfileID == "" || v.UserProfileID == f.UserProfileID) &&
|
||||
(f.SteamID == "" || v.SteamID == f.SteamID) &&
|
||||
(f.SquadID == "" || v.SquadID == f.SquadID) &&
|
||||
(f.Freshness == "" || v.Freshness.Status == f.Freshness) &&
|
||||
(search == "" || strings.Contains(strings.ToLower(v.DisplayName), search) || strings.Contains(strings.ToLower(v.GamePlayerID), search) || strings.Contains(strings.ToLower(v.UserProfileID), search) || strings.Contains(strings.ToLower(v.SteamID), search))
|
||||
}
|
||||
|
||||
func matchSCUMSquad(v domain.SCUMSquad, f domain.SCUMProjectionFilter) bool {
|
||||
search := strings.ToLower(strings.TrimSpace(f.Search))
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.SquadID == "" || v.SquadID == f.SquadID) &&
|
||||
(f.UserProfileID == "" || v.LeaderProfileID == f.UserProfileID) &&
|
||||
(f.Freshness == "" || v.Freshness.Status == f.Freshness) &&
|
||||
(search == "" || strings.Contains(strings.ToLower(v.Name), search) || strings.Contains(strings.ToLower(v.SquadID), search))
|
||||
}
|
||||
|
||||
func matchSCUMSquadMember(v domain.SCUMSquadMember, f domain.SCUMProjectionFilter) bool {
|
||||
search := strings.ToLower(strings.TrimSpace(f.Search))
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.SquadID == "" || v.SquadID == f.SquadID) &&
|
||||
(f.GamePlayerID == "" || v.GamePlayerID == f.GamePlayerID) &&
|
||||
(f.GamePlayerRecordID == "" || v.GamePlayerRecordID == f.GamePlayerRecordID) &&
|
||||
(f.UserProfileID == "" || v.UserProfileID == f.UserProfileID) &&
|
||||
(f.SteamID == "" || v.SteamID == f.SteamID) &&
|
||||
(f.Freshness == "" || v.Freshness.Status == f.Freshness) &&
|
||||
(search == "" || strings.Contains(strings.ToLower(v.DisplayName), search) || strings.Contains(strings.ToLower(v.GamePlayerID), search) || strings.Contains(strings.ToLower(v.UserProfileID), search))
|
||||
}
|
||||
|
||||
func matchSCUMVehicle(v domain.SCUMVehicle, f domain.SCUMProjectionFilter) bool {
|
||||
search := strings.ToLower(strings.TrimSpace(f.Search))
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.VehicleID == "" || v.VehicleID == f.VehicleID) &&
|
||||
(f.UserProfileID == "" || v.OwnerProfileID == f.UserProfileID) &&
|
||||
(f.GamePlayerID == "" || v.OwnerPlayerID == f.GamePlayerID) &&
|
||||
(f.SquadID == "" || v.SquadID == f.SquadID) &&
|
||||
(f.Freshness == "" || v.Freshness.Status == f.Freshness) &&
|
||||
(search == "" || strings.Contains(strings.ToLower(v.Label), search) || strings.Contains(strings.ToLower(v.ClassName), search) || strings.Contains(strings.ToLower(v.VehicleID), search))
|
||||
}
|
||||
|
||||
func matchSCUMFlag(v domain.SCUMFlag, f domain.SCUMProjectionFilter) bool {
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.FlagID == "" || v.FlagID == f.FlagID) &&
|
||||
(f.UserProfileID == "" || v.OwnerProfileID == f.UserProfileID) &&
|
||||
(f.GamePlayerID == "" || v.OwnerPlayerID == f.GamePlayerID) &&
|
||||
(f.SquadID == "" || v.OwnerSquadID == f.SquadID) &&
|
||||
(f.Freshness == "" || v.Freshness.Status == f.Freshness)
|
||||
}
|
||||
|
||||
func matchSCUMCurrentPosition(v domain.SCUMCurrentPosition, f domain.SCUMProjectionFilter) bool {
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.SubjectType == "" || v.SubjectType == f.SubjectType) &&
|
||||
(f.GamePlayerID == "" || v.GamePlayerID == f.GamePlayerID) &&
|
||||
(f.GamePlayerRecordID == "" || v.GamePlayerRecordID == f.GamePlayerRecordID) &&
|
||||
(f.VehicleID == "" || v.VehicleID == f.VehicleID) &&
|
||||
(f.Freshness == "" || v.Freshness.Status == f.Freshness)
|
||||
}
|
||||
|
||||
func matchSCUMOperationRequest(v domain.SCUMOperationRequest, f domain.SCUMOperationRequestFilter) bool {
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.PluginID == "" || v.PluginID == f.PluginID) &&
|
||||
(f.TemplateKey == "" || v.TemplateKey == f.TemplateKey) &&
|
||||
(f.PlayerID == "" || v.PlayerID == f.PlayerID) &&
|
||||
(f.RequesterID == "" || v.RequesterID == f.RequesterID) &&
|
||||
(f.Status == "" || v.Status == f.Status) &&
|
||||
(f.IdempotencyKey == "" || v.IdempotencyKey == f.IdempotencyKey)
|
||||
}
|
||||
|
||||
func matchSCUMWorkflowInstance(v domain.SCUMWorkflowInstance, f domain.SCUMWorkflowInstanceFilter) bool {
|
||||
return (f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.PluginID == "" || v.PluginID == f.PluginID) &&
|
||||
(f.TemplateKey == "" || v.TemplateKey == f.TemplateKey) &&
|
||||
(f.RequestedBy == "" || v.RequestedBy == f.RequestedBy) &&
|
||||
(f.Status == "" || v.Status == f.Status) &&
|
||||
(f.IdempotencyKey == "" || v.IdempotencyKey == f.IdempotencyKey)
|
||||
}
|
||||
|
||||
func matchSCUMWorkflowStep(v domain.SCUMWorkflowStep, f domain.SCUMWorkflowStepFilter) bool {
|
||||
return (f.WorkflowID == "" || v.WorkflowID == f.WorkflowID) &&
|
||||
(f.ServerInstanceID == "" || v.ServerInstanceID == f.ServerInstanceID) &&
|
||||
(f.StepKey == "" || v.StepKey == f.StepKey) &&
|
||||
(f.Status == "" || v.Status == f.Status) &&
|
||||
(f.MutatesState == nil || v.MutatesState == *f.MutatesState)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user