mirror of
https://gitee.com/johng/gf.git
synced 2024-11-30 11:18:02 +08:00
70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file,
|
|
// You can obtain one at https://github.com/gogf/gf.
|
|
|
|
package goai
|
|
|
|
import (
|
|
"github.com/gogf/gf/v2/container/gmap"
|
|
)
|
|
|
|
type Schemas struct {
|
|
refs *gmap.ListMap // map[string]SchemaRef
|
|
}
|
|
|
|
func createSchemas() Schemas {
|
|
return Schemas{
|
|
refs: gmap.NewListMap(),
|
|
}
|
|
}
|
|
|
|
func (s *Schemas) init() {
|
|
if s.refs == nil {
|
|
s.refs = gmap.NewListMap()
|
|
}
|
|
}
|
|
|
|
func (s *Schemas) Get(name string) *SchemaRef {
|
|
s.init()
|
|
value := s.refs.Get(name)
|
|
if value != nil {
|
|
ref := value.(SchemaRef)
|
|
return &ref
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *Schemas) Set(name string, ref SchemaRef) {
|
|
s.init()
|
|
s.refs.Set(name, ref)
|
|
}
|
|
|
|
func (s *Schemas) Removes(names []interface{}) {
|
|
s.init()
|
|
s.refs.Removes(names)
|
|
}
|
|
|
|
func (s *Schemas) Map() map[string]SchemaRef {
|
|
s.init()
|
|
m := make(map[string]SchemaRef)
|
|
s.refs.Iterator(func(key, value interface{}) bool {
|
|
m[key.(string)] = value.(SchemaRef)
|
|
return true
|
|
})
|
|
return m
|
|
}
|
|
|
|
func (s *Schemas) Iterator(f func(key string, ref SchemaRef) bool) {
|
|
s.init()
|
|
s.refs.Iterator(func(key, value interface{}) bool {
|
|
return f(key.(string), value.(SchemaRef))
|
|
})
|
|
}
|
|
|
|
func (s Schemas) MarshalJSON() ([]byte, error) {
|
|
s.init()
|
|
return s.refs.MarshalJSON()
|
|
}
|