gomcp/internal/domain/synapse/synapse.go

50 lines
1.5 KiB
Go

// Package synapse defines domain entities for semantic fact connections.
package synapse
import (
"context"
"time"
)
// Status represents the state of a synapse link.
type Status string
const (
StatusPending Status = "PENDING"
StatusVerified Status = "VERIFIED"
StatusRejected Status = "REJECTED"
)
// Synapse represents a semantic connection between two facts.
type Synapse struct {
ID int64 `json:"id"`
FactIDA string `json:"fact_id_a"`
FactIDB string `json:"fact_id_b"`
Confidence float64 `json:"confidence"`
Status Status `json:"status"`
CreatedAt time.Time `json:"created_at"`
}
// SynapseStore defines the interface for synapse persistence.
type SynapseStore interface {
// Create inserts a new synapse.
Create(ctx context.Context, factIDA, factIDB string, confidence float64) (int64, error)
// ListPending returns all PENDING synapses.
ListPending(ctx context.Context, limit int) ([]*Synapse, error)
// Accept transitions a synapse to VERIFIED.
Accept(ctx context.Context, id int64) error
// Reject transitions a synapse to REJECTED.
Reject(ctx context.Context, id int64) error
// ListVerified returns all VERIFIED synapses.
ListVerified(ctx context.Context) ([]*Synapse, error)
// Count returns total synapse counts by status.
Count(ctx context.Context) (pending, verified, rejected int, err error)
// Exists checks if a synapse already exists between two facts (any direction).
Exists(ctx context.Context, factIDA, factIDB string) (bool, error)
}