package database import ( "time" ) // Stats contains database statistics type Stats struct { ASNs int Prefixes int IPv4Prefixes int IPv6Prefixes int Peerings int FileSizeBytes int64 LiveRoutes int IPv4PrefixDistribution []PrefixDistribution IPv6PrefixDistribution []PrefixDistribution } // Store defines the interface for database operations type Store interface { // ASN operations GetOrCreateASN(number int, timestamp time.Time) (*ASN, error) // Prefix operations GetOrCreatePrefix(prefix string, timestamp time.Time) (*Prefix, error) // Announcement operations RecordAnnouncement(announcement *Announcement) error // Peering operations RecordPeering(asA, asB int, timestamp time.Time) error // Statistics GetStats() (Stats, error) // Peer operations UpdatePeer(peerIP string, peerASN int, messageType string, timestamp time.Time) error // Live route operations UpsertLiveRoute(route *LiveRoute) error DeleteLiveRoute(prefix string, originASN int, peerIP string) error GetPrefixDistribution() (ipv4 []PrefixDistribution, ipv6 []PrefixDistribution, err error) // Lifecycle Close() error } // Ensure Database implements Store var _ Store = (*Database)(nil)