From 659b8332857ffa9b0c89808f5d9e742c39392d88 Mon Sep 17 00:00:00 2001 From: Tarcisio Gruppi Date: Sun, 12 Jan 2025 12:22:32 -0300 Subject: [PATCH 1/2] feat!: accept any non-empty string as a valid document ID --- document/document.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/document/document.go b/document/document.go index 9b6dff4..f204643 100644 --- a/document/document.go +++ b/document/document.go @@ -5,7 +5,6 @@ import ( "strings" "time" - "github.com/gofrs/uuid/v5" "github.com/ostafen/clover/v2/internal" "github.com/ostafen/clover/v2/util" ) @@ -170,8 +169,7 @@ func (doc *Document) Unmarshal(v interface{}) error { } func isValidObjectId(id string) bool { - _, err := uuid.FromString(id) - return err == nil + return id != "" } func Validate(doc *Document) error { From c8c92bb8b51a4fb9e94b7e1b1c260790bb097cde Mon Sep 17 00:00:00 2001 From: Tarcisio Gruppi Date: Sun, 12 Jan 2025 12:38:02 -0300 Subject: [PATCH 2/2] test: added test for document with custom ID --- db_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/db_test.go b/db_test.go index 308cd8a..6ca3d3f 100644 --- a/db_test.go +++ b/db_test.go @@ -1638,6 +1638,31 @@ func TestCreateCollectionByQuery(t *testing.T) { }) } +func TestCustomID(t *testing.T) { + runCloverTest(t, func(t *testing.T, db *c.DB) { + collection := "test_custom_id" + err := db.CreateCollection(collection) + require.NoError(t, err) + + id := "custom_id" + m := map[string]interface{}{ + "_id": id, + "itWorks?": true, + } + doc := d.NewDocument() + doc.SetAll(m) + + insertedID, err := db.InsertOne(collection, doc) + require.NoError(t, err) + require.Equal(t, id, insertedID) + + foundDoc, err := db.FindById(collection, id) + require.NoError(t, err) + require.NotNil(t, foundDoc) + require.Equal(t, m, foundDoc.AsMap()) + }) +} + /* func TestInMemoryMode(t *testing.T) { db, err := c.Open("clover-db", c.InMemoryMode(true))