MCPcopy Create free account
hub / github.com/rilldata/rill / deleteResource

Method deleteResource

runtime/parser/parser.go:933–1002  ·  view source on GitHub ↗

deleteResource removes a resource from p.Resources as well as all internal indexes.

(r *Resource)

Source from the content-addressed store, hash-verified

931
932// deleteResource removes a resource from p.Resources as well as all internal indexes.
933func (p *Parser) deleteResource(r *Resource) {
934 // Remove from p.Resources
935 delete(p.Resources, r.Name.Normalized())
936
937 // Remove from p.insertedResources
938 foundInInserted := false
939 idx := slices.Index(p.insertedResources, r)
940 if idx >= 0 {
941 p.insertedResources = slices.Delete(p.insertedResources, idx, idx+1)
942 foundInInserted = true
943 }
944
945 // Remove from p.updatedResources
946 if !foundInInserted {
947 idx = slices.Index(p.updatedResources, r)
948 if idx >= 0 {
949 p.updatedResources = slices.Delete(p.updatedResources, idx, idx+1)
950 }
951 }
952
953 // Remove from p.resourcesForPath
954 for _, path := range r.Paths {
955 rs := p.resourcesForPath[path]
956 idx := slices.Index(rs, r)
957 if idx < 0 {
958 panic(fmt.Errorf("resource %q not found in resourcesForPath", r.Name))
959 }
960 if len(rs) == 1 {
961 delete(p.resourcesForPath, path)
962 } else {
963 p.resourcesForPath[path] = slices.Delete(rs, idx, idx+1)
964 }
965 }
966
967 // Remove pointers indexed in resourcesForAmbiguousRef
968 for _, ref := range r.rawRefs {
969 if !ambiguousRef(ref) {
970 continue
971 }
972 n := ref.Normalized()
973 rs := p.resourcesForAmbiguousRef[n]
974 idx := slices.Index(rs, r)
975 if idx < 0 {
976 panic(fmt.Errorf("resource %q not found in resourcesForAmbiguousRef for ref %q", r.Name, ref.Name))
977 }
978 if len(rs) == 1 {
979 delete(p.resourcesForAmbiguousRef, n)
980 } else {
981 p.resourcesForAmbiguousRef[n] = slices.Delete(rs, idx, idx+1)
982 }
983 }
984
985 // Remove from p.resourceNamesForDataPaths
986 for path, resources := range p.resourceNamesForDataPaths {
987 idx := slices.Index(resources, r.Name.Normalized())
988 if idx < 0 {
989 continue
990 }

Callers 2

reparseExceptRillYAMLMethod · 0.95

Calls 4

ambiguousRefFunction · 0.85
NormalizedMethod · 0.80
DeleteMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected