139 lines
3.4 KiB
Text
139 lines
3.4 KiB
Text
# Platform Connection Metadata
|
|
# Manages connection metadata and status for platform services
|
|
|
|
# Selective imports (ADR-025 Phase 3 Layer 2).
|
|
use platform/user/config.nu [get-active-workspace]
|
|
|
|
# Get platform connection metadata file path
|
|
def get-connection-metadata-path [] {
|
|
let workspace = (get-active-workspace)
|
|
([
|
|
$workspace
|
|
".platform"
|
|
"connection.yaml"
|
|
] | path join)
|
|
}
|
|
|
|
# Load platform connection metadata
|
|
export def load-connection-metadata [] {
|
|
let path = (get-connection-metadata-path)
|
|
|
|
if not ($path | path exists) {
|
|
return {
|
|
activated_at: ""
|
|
active_connections: {}
|
|
}
|
|
}
|
|
|
|
open $path
|
|
}
|
|
|
|
# Store platform connection metadata
|
|
export def store-connection-metadata [metadata: record] {
|
|
let path = (get-connection-metadata-path)
|
|
let dir = ($path | path dirname)
|
|
|
|
if not ($dir | path exists) {
|
|
mkdir $dir
|
|
}
|
|
|
|
$metadata | to yaml | save -f $path
|
|
}
|
|
|
|
# Get active service connections
|
|
export def get-active-connections [] {
|
|
let metadata = (load-connection-metadata)
|
|
$metadata.active_connections
|
|
}
|
|
|
|
# Add service connection
|
|
export def add-service-connection [
|
|
service_name: string
|
|
endpoint: string
|
|
] {
|
|
mut metadata = (load-connection-metadata)
|
|
let now = (date now | format date "%Y-%m-%dT%H:%M:%SZ")
|
|
|
|
$metadata.active_connections = (
|
|
$metadata.active_connections
|
|
| insert $service_name {
|
|
endpoint: $endpoint
|
|
connected_at: $now
|
|
status: "connected"
|
|
}
|
|
)
|
|
|
|
store-connection-metadata $metadata
|
|
}
|
|
|
|
# Remove service connection
|
|
export def remove-service-connection [service_name: string] {
|
|
mut metadata = (load-connection-metadata)
|
|
|
|
$metadata.active_connections = (
|
|
$metadata.active_connections
|
|
| reject $service_name
|
|
)
|
|
|
|
store-connection-metadata $metadata
|
|
}
|
|
|
|
# Update service connection status
|
|
export def update-service-status [
|
|
service_name: string
|
|
status: string
|
|
] {
|
|
mut metadata = (load-connection-metadata)
|
|
|
|
if ($service_name in $metadata.active_connections) {
|
|
$metadata.active_connections | get $service_name | insert status $status
|
|
store-connection-metadata $metadata
|
|
}
|
|
}
|
|
|
|
# Get service connection status
|
|
export def get-service-status [service_name: string] {
|
|
let connections = (get-active-connections)
|
|
|
|
if ($service_name in $connections) {
|
|
$connections | get $service_name
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
|
|
# Initialize connection metadata for workspace
|
|
export def init-connection-metadata [] {
|
|
let metadata = {
|
|
activated_at: (date now | format date "%Y-%m-%dT%H:%M:%SZ")
|
|
active_connections: {}
|
|
}
|
|
|
|
store-connection-metadata $metadata
|
|
}
|
|
|
|
# Display connection status
|
|
export def show-connection-status [] {
|
|
let metadata = (load-connection-metadata)
|
|
|
|
print ""
|
|
print "Platform Connection Status:"
|
|
print $" Activated: ($metadata.activated_at)"
|
|
print ""
|
|
|
|
let connections = $metadata.active_connections
|
|
|
|
if ($connections | is-empty) {
|
|
print " No active connections"
|
|
} else {
|
|
print " Active Connections:"
|
|
$connections | transpose name info | each {|item|
|
|
print $" • ($item.name)"
|
|
print $" Endpoint: ($item.info.endpoint)"
|
|
print $" Status: ($item.info.status)"
|
|
print $" Connected: ($item.info.connected_at)"
|
|
}
|
|
}
|
|
|
|
print ""
|
|
}
|