Add UpdateSet, Relaxed in client, Fix tests
This commit is contained in:
@@ -6,6 +6,8 @@ import (
|
||||
"context"
|
||||
|
||||
"go.mongodb.org/mongo-driver/v2/bson"
|
||||
|
||||
"git.gsuntres.com/general/commons"
|
||||
)
|
||||
|
||||
func (c *MongoClient) DiscriminatorCheckAndApplyToData(ctx context.Context, name string, data map[string]any) error {
|
||||
@@ -31,6 +33,24 @@ func (c *MongoClient) DiscriminatorCheckAndApplyToData(ctx context.Context, name
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *MongoClient) DiscriminatorOmitInData(name string, data bson.M) error {
|
||||
cdef, ok := c.Registry[name]
|
||||
if ok && cdef.Discriminator != nil {
|
||||
if data == nil {
|
||||
data = map[string]any{}
|
||||
}
|
||||
|
||||
log.Printf("Making sure discriminator is not in data for %s", name)
|
||||
|
||||
_, ok := data[cdef.Discriminator.Field]
|
||||
if ok {
|
||||
delete(data, cdef.Discriminator.Field)
|
||||
}
|
||||
}
|
||||
|
||||
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 {
|
||||
@@ -48,8 +68,13 @@ func (c *MongoClient) DiscriminatorCheckAndApplyToFilter(ctx context.Context, na
|
||||
|
||||
// update payload
|
||||
v := vAny.(string)
|
||||
filter[cdef.Discriminator.Field] = bson.M{"$eq": v}
|
||||
if commons.StringIsBlank(v) {
|
||||
return fmt.Errorf("discriminator field required for %s", name)
|
||||
}
|
||||
|
||||
filter[cdef.Discriminator.Field] = bson.M{"eq": v}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user