Simplify peerings table to store AS numbers directly
- Rename asn_peerings table to peerings - Change columns from from_asn_id/to_asn_id to as_a/as_b (integers) - Remove foreign key constraints to asns table - Update RecordPeering to use AS numbers directly - Add validation in RecordPeering to ensure: - Both AS numbers are > 0 - AS numbers are different - as_a is always lower than as_b (normalized) - Update PeeringHandler to no longer need ASN cache - Simplify the code by removing unnecessary ASN lookups
This commit is contained in:
@@ -2,6 +2,7 @@ package routewatch
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
@@ -119,11 +120,16 @@ func (m *mockStore) RecordAnnouncement(_ *database.Announcement) error {
|
||||
}
|
||||
|
||||
// RecordPeering mock implementation
|
||||
func (m *mockStore) RecordPeering(fromASNID, toASNID string, _ time.Time) error {
|
||||
func (m *mockStore) RecordPeering(asA, asB int, _ time.Time) error {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
key := fromASNID + "_" + toASNID
|
||||
// Normalize
|
||||
if asA > asB {
|
||||
asA, asB = asB, asA
|
||||
}
|
||||
|
||||
key := fmt.Sprintf("%d_%d", asA, asB)
|
||||
if !m.Peerings[key] {
|
||||
m.Peerings[key] = true
|
||||
m.PeeringCount++
|
||||
|
||||
Reference in New Issue
Block a user