in banyand/measure/metadata.go [207:259]
func (sr *schemaRepo) OnDelete(metadata schema.Metadata) {
switch metadata.Kind {
case schema.KindGroup:
g := metadata.Spec.(*commonv1.Group)
if g.Catalog != commonv1.Catalog_CATALOG_MEASURE {
return
}
sr.SendMetadataEvent(resourceSchema.MetadataEvent{
Typ: resourceSchema.EventDelete,
Kind: resourceSchema.EventKindGroup,
Metadata: g.GetMetadata(),
})
case schema.KindMeasure:
sr.SendMetadataEvent(resourceSchema.MetadataEvent{
Typ: resourceSchema.EventDelete,
Kind: resourceSchema.EventKindResource,
Metadata: metadata.Spec.(*databasev1.Measure).GetMetadata(),
})
case schema.KindIndexRuleBinding:
if metadata.Spec.(*databasev1.IndexRuleBinding).GetSubject().Catalog == commonv1.Catalog_CATALOG_MEASURE {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
m, err := sr.metadata.MeasureRegistry().GetMeasure(ctx, &commonv1.Metadata{
Name: metadata.Name,
Group: metadata.Group,
})
if err != nil {
sr.l.Error().Err(err).Msg("fail to get subject")
return
}
// we should update instead of delete
sr.SendMetadataEvent(resourceSchema.MetadataEvent{
Typ: resourceSchema.EventAddOrUpdate,
Kind: resourceSchema.EventKindResource,
Metadata: m.GetMetadata(),
})
}
case schema.KindIndexRule:
case schema.KindTopNAggregation:
err := sr.removeTopNMeasure(metadata.Spec.(*databasev1.TopNAggregation).GetSourceMeasure())
if err != nil {
sr.l.Error().Err(err).Msg("fail to remove topN measure")
return
}
// we should update instead of delete
sr.SendMetadataEvent(resourceSchema.MetadataEvent{
Typ: resourceSchema.EventAddOrUpdate,
Kind: resourceSchema.EventKindResource,
Metadata: metadata.Spec.(*databasev1.TopNAggregation).GetSourceMeasure(),
})
default:
}
}