package mongo import ( "log" "fmt" "context" "go.mongodb.org/mongo-driver/v2/bson" ) func (c *MongoClient) DiscriminatorCheckAndApplyToData(ctx context.Context, name string, data map[string]any) error { cdef, ok := c.Registry[name] if ok && cdef.Discriminator != nil { log.Printf("Discriminator found for %s; will use it", name) // get from context vAny := ctx.Value(cdef.Discriminator.CtxField) if vAny == nil { return fmt.Errorf("discriminator field required for %s", name) } // update payload v := vAny.(string) data[cdef.Discriminator.Field] = v } return nil } func (c *MongoClient) DiscriminatorCheckAndApplyToFilter(ctx context.Context, name string, filter bson.M) error { cdef, ok := c.Registry[name] if ok && cdef.Discriminator != nil { log.Printf("Discriminator found for %s; will use it", name) // get from context vAny := ctx.Value(cdef.Discriminator.CtxField) if vAny == nil { return fmt.Errorf("discriminator field required for %s", name) } // update payload v := vAny.(string) filter[cdef.Discriminator.Field] = bson.M{"$eq": v} } return nil }