First release of open core
This commit is contained in:
95
pkg/domain/store.go
Normal file
95
pkg/domain/store.go
Normal file
@@ -0,0 +1,95 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Store embeds all sub interfaces for Core
|
||||
type Store interface {
|
||||
TicketStore
|
||||
IdentityStore
|
||||
IngestStore
|
||||
ConfigStore
|
||||
AnalyticsStore
|
||||
DraftStore
|
||||
}
|
||||
|
||||
// TicketStore: Core CRUD and Workflow
|
||||
type TicketStore interface {
|
||||
GetTickets(ctx context.Context) ([]Ticket, error)
|
||||
GetDashboardTickets(ctx context.Context, tabStatus, filter, assetFilter, userEmail, userRole string, limit, offset int) ([]Ticket, int, map[string]int, error)
|
||||
CreateTicket(ctx context.Context, t *Ticket) error
|
||||
GetTicketByID(ctx context.Context, id int) (Ticket, error)
|
||||
UpdateTicketInline(ctx context.Context, ticketID int, severity, description, remediation, comment, actor, status, assignee string) error
|
||||
}
|
||||
|
||||
// IdentityStore: Users, Sessions, and Dispatching
|
||||
type IdentityStore interface {
|
||||
CreateUser(ctx context.Context, email, fullName, passwordHash, globalRole string) (*User, error)
|
||||
GetUserByEmail(ctx context.Context, email string) (*User, error)
|
||||
GetUserByID(ctx context.Context, id int) (*User, error)
|
||||
GetAllUsers(ctx context.Context) ([]*User, error)
|
||||
GetUserCount(ctx context.Context) (int, error)
|
||||
UpdateUserPassword(ctx context.Context, id int, newPasswordHash string) error
|
||||
UpdateUserRole(ctx context.Context, id int, newRole string) error
|
||||
DeactivateUserAndReassign(ctx context.Context, userID int) error
|
||||
|
||||
CreateSession(ctx context.Context, token string, userID int, expiresAt time.Time) error
|
||||
GetSession(ctx context.Context, token string) (*Session, error)
|
||||
DeleteSession(ctx context.Context, token string) error
|
||||
|
||||
GetWranglers(ctx context.Context) ([]User, error)
|
||||
}
|
||||
|
||||
// IngestStore: Scanners, Adapters, and Sync History
|
||||
type IngestStore interface {
|
||||
IngestTickets(ctx context.Context, tickets []Ticket) error
|
||||
ProcessIngestionBatch(ctx context.Context, source string, assetIdentifier string, incoming []Ticket) error
|
||||
|
||||
GetAdapters(ctx context.Context) ([]Adapter, error)
|
||||
GetAdapterByID(ctx context.Context, id int) (Adapter, error)
|
||||
GetAdapterByName(ctx context.Context, name string) (Adapter, error)
|
||||
SaveAdapter(ctx context.Context, adapter Adapter) error
|
||||
DeleteAdapter(ctx context.Context, id int) error
|
||||
|
||||
LogSync(ctx context.Context, source, status string, records int, errMsg string) error
|
||||
GetRecentSyncLogs(ctx context.Context, limit int) ([]SyncLog, error)
|
||||
}
|
||||
|
||||
// ConfigStore: Global System Settings
|
||||
type ConfigStore interface {
|
||||
GetAppConfig(ctx context.Context) (AppConfig, error)
|
||||
UpdateAppConfig(ctx context.Context, config AppConfig) error
|
||||
GetSLAPolicies(ctx context.Context) ([]SLAPolicy, error)
|
||||
UpdateSLAPolicies(ctx context.Context, slas []SLAPolicy) error
|
||||
UpdateBackupPolicy(ctx context.Context, policy BackupPolicy) error
|
||||
ExportSystemState(ctx context.Context) (ExportState, error)
|
||||
}
|
||||
|
||||
// AnalyticsStore: Audit Logs and KPI Metrics
|
||||
type AnalyticsStore interface {
|
||||
GetSheriffAnalytics(ctx context.Context) (SheriffAnalytics, error)
|
||||
GetAnalyticsSummary(ctx context.Context) (map[string]int, error)
|
||||
GetGlobalActivityFeed(ctx context.Context, limit int) ([]FeedItem, error)
|
||||
GetPaginatedActivityFeed(ctx context.Context, filter string, limit int, offset int) ([]FeedItem, int, error)
|
||||
}
|
||||
|
||||
// DraftStore: The Pentest Desk OSS, word docx
|
||||
type DraftStore interface {
|
||||
SaveDraft(ctx context.Context, draft DraftTicket) error
|
||||
GetDraftsByReport(ctx context.Context, reportID string) ([]DraftTicket, error)
|
||||
DeleteDraft(ctx context.Context, draftID string) error
|
||||
UpdateDraft(ctx context.Context, draftID int, payload Ticket) error
|
||||
PromotePentestDrafts(ctx context.Context, reportID string, analystEmail string, tickets []Ticket) error
|
||||
}
|
||||
|
||||
type Authenticator interface {
|
||||
Middleware(next http.Handler) http.Handler
|
||||
}
|
||||
|
||||
type SLACalculator interface {
|
||||
CalculateDueDate(severity string) *time.Time
|
||||
CalculateTrueSLAHours(ctx context.Context, ticketID int, store Store) (float64, error)
|
||||
}
|
||||
Reference in New Issue
Block a user