2023-11-09 00:57:05 +00:00
|
|
|
package domain
|
|
|
|
|
2023-11-10 03:08:36 +00:00
|
|
|
import (
|
|
|
|
"path"
|
|
|
|
)
|
2023-11-09 01:59:18 +00:00
|
|
|
|
2023-11-09 22:34:37 +00:00
|
|
|
type Resources []*Resource
|
2023-11-09 01:59:18 +00:00
|
|
|
|
2023-11-11 17:51:01 +00:00
|
|
|
func (r Resources) GetType(target ResourceType) Resources {
|
2023-11-10 03:08:36 +00:00
|
|
|
out := make(Resources, 0, len(r))
|
|
|
|
|
|
|
|
for i := range r {
|
|
|
|
if r[i].resourceType != target {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
out = append(out, r[i])
|
|
|
|
}
|
|
|
|
|
|
|
|
return out
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r Resources) Get(path string) *Resource {
|
|
|
|
for i := range r {
|
|
|
|
if r[i].key != path {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
return r[i]
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r Resources) Match(pattern string) Resources {
|
|
|
|
out := make(Resources, 0, len(r))
|
|
|
|
|
|
|
|
for i := range r {
|
|
|
|
if matched, err := path.Match(pattern, r[i].key); err != nil || !matched {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
out = append(out, r[i])
|
|
|
|
}
|
|
|
|
|
|
|
|
return out
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r Resources) GetMatch(pattern string) *Resource {
|
|
|
|
for i := range r {
|
|
|
|
if matched, err := path.Match(pattern, r[i].key); err != nil || !matched {
|
2023-11-09 01:59:18 +00:00
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
2023-11-10 03:08:36 +00:00
|
|
|
return r[i]
|
2023-11-09 01:59:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|