MCPcopy Create free account
hub / github.com/cloudwan/gohan / registerSchema

Method registerSchema

schema/manager.go:68–101  ·  view source on GitHub ↗

registerSchema registers new schema for schema manager

(schema *Schema)

Source from the content-addressed store, hash-verified

66
67//registerSchema registers new schema for schema manager
68func (manager *Manager) registerSchema(schema *Schema) error {
69 if _, ok := manager.schemas[schema.ID]; ok {
70 log.Warning("Overwriting schema %s", schema.ID)
71 return nil
72 }
73 manager.schemas[schema.ID] = schema
74 manager.schemaOrder = append(manager.schemaOrder, schema.ID)
75 baseURL := "/"
76 if schema.Parent != "" {
77 parentSchema, ok := manager.schema(schema.Parent)
78 if !ok {
79 return fmt.Errorf("Parent schema %s of %s not found", schema.Parent, schema.ID)
80 }
81 schema.SetParentSchema(parentSchema)
82 }
83 if schema.NamespaceID != "" {
84 namespace, ok := manager.namespace(schema.NamespaceID)
85 if !ok {
86 return fmt.Errorf("Namespace schema %s of %s not found", schema.NamespaceID, schema.ID)
87 }
88 schema.SetNamespace(namespace)
89 baseURL = schema.Namespace.GetFullPrefix() + "/"
90 }
91 if schema.Prefix != "" {
92 baseURL = baseURL + strings.TrimPrefix(schema.Prefix, "/") + "/"
93 }
94 schema.URL = baseURL + schema.Plural
95 if schema.Parent != "" {
96 schema.URLWithParents = baseURL + strings.TrimPrefix(schema.GetParentURL(), "/") + "/" + schema.Plural
97 } else {
98 schema.URLWithParents = schema.URL
99 }
100 return nil
101}
102
103//registerNamespace registers a new namespace for schema manager
104func (manager *Manager) registerNamespace(namespace *Namespace) error {

Callers 1

loadSchemaFromFileMethod · 0.95

Calls 8

schemaMethod · 0.95
namespaceMethod · 0.95
SetParentSchemaMethod · 0.80
SetNamespaceMethod · 0.80
GetFullPrefixMethod · 0.80
GetParentURLMethod · 0.80
WarningMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected