- go.mod module name
- All 714 import references across 289 Go files
- VERSION: 0.1.0
- CI DB names: switchboard_core_{ci,dev,test}
- Docker image: gobha/switchboard-core
- Test fixtures: JWT issuer, repo names
- .env.example, docker-compose container name
- Compiles clean (go build exit 0)
41 lines
873 B
Go
41 lines
873 B
Go
package routing
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"switchboard-core/models"
|
|
)
|
|
|
|
// FromModel converts a DB model to a routing Policy for evaluation.
|
|
func FromModel(m *models.RoutingPolicy) Policy {
|
|
p := Policy{
|
|
ID: m.ID,
|
|
Name: m.Name,
|
|
Scope: m.Scope,
|
|
TeamID: m.TeamID,
|
|
Priority: m.Priority,
|
|
Type: PolicyType(m.Type),
|
|
IsActive: m.IsActive,
|
|
CreatedAt: m.CreatedAt,
|
|
UpdatedAt: m.UpdatedAt,
|
|
}
|
|
|
|
// Convert JSONMap → PolicyConfig via JSON round-trip.
|
|
// This is safe because PolicyConfig fields match the JSONB keys.
|
|
if m.Config != nil {
|
|
raw, _ := json.Marshal(m.Config)
|
|
json.Unmarshal(raw, &p.Config)
|
|
}
|
|
|
|
return p
|
|
}
|
|
|
|
// FromModels converts a slice of DB models to routing Policies.
|
|
func FromModels(ms []models.RoutingPolicy) []Policy {
|
|
out := make([]Policy, len(ms))
|
|
for i := range ms {
|
|
out[i] = FromModel(&ms[i])
|
|
}
|
|
return out
|
|
}
|