initial draft of neo4j database driver

This commit is contained in:
2025-11-17 08:19:44 +00:00
parent beed174e83
commit 86481a42e8
22 changed files with 3259 additions and 14 deletions

44
pkg/neo4j/identity.go Normal file
View File

@@ -0,0 +1,44 @@
package neo4j
import (
"fmt"
"next.orly.dev/pkg/crypto/keys"
)
// Relay identity methods
// We use the marker system to store the relay's private key
const relayIdentityMarkerKey = "relay_identity_secret"
// GetRelayIdentitySecret retrieves the relay's identity secret key
func (n *N) GetRelayIdentitySecret() (skb []byte, err error) {
return n.GetMarker(relayIdentityMarkerKey)
}
// SetRelayIdentitySecret sets the relay's identity secret key
func (n *N) SetRelayIdentitySecret(skb []byte) error {
return n.SetMarker(relayIdentityMarkerKey, skb)
}
// GetOrCreateRelayIdentitySecret retrieves or creates the relay identity
func (n *N) GetOrCreateRelayIdentitySecret() (skb []byte, err error) {
skb, err = n.GetRelayIdentitySecret()
if err == nil {
return skb, nil
}
// Generate new identity
skb, err = keys.GenerateSecretKey()
if err != nil {
return nil, fmt.Errorf("failed to generate identity: %w", err)
}
// Store it
if err = n.SetRelayIdentitySecret(skb); err != nil {
return nil, fmt.Errorf("failed to store identity: %w", err)
}
n.Logger.Infof("generated new relay identity")
return skb, nil
}