From d2ee9cbb0eddf142919215d1f47a84a0e547eecd Mon Sep 17 00:00:00 2001 From: Aman Kharbanda Date: Thu, 28 Mar 2024 21:43:27 +0530 Subject: [PATCH 1/3] added support to insert multiple entries --- README.md | 18 ++++++++++++++++++ db.go | 7 +++++++ db_test.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/README.md b/README.md index 29ca39b..f8c8b17 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,24 @@ func main() { panic(err) } + // insert multiple entries + userList := []testUser{ + { + Username: "dwight", + Password: "123", + }, + { + Username: "michael", + Password: "456", + }, + } + + createdUsers, err := s.db.CreateMany("users", userList) + + if err != nil { + panic(err) + } + // Unmarshal data createdUser := make([]User, 1) err = surrealdb.Unmarshal(data, &createdUser) diff --git a/db.go b/db.go index f73f2da..ec56f0c 100644 --- a/db.go +++ b/db.go @@ -100,6 +100,13 @@ func (db *DB) Create(thing string, data interface{}) (interface{}, error) { return db.send("create", thing, data) } +// Creates multiple records in table +func (db *DB) CreateMany(thing string, records interface{}) (interface{}, error) { + return db.send("query", fmt.Sprintf("INSERT INTO %s ($records)", thing), map[string]interface{}{ + "records": records, + }) +} + // Update a table or record in the database like a PUT request. func (db *DB) Update(what string, data interface{}) (interface{}, error) { return db.send("update", what, data) diff --git a/db_test.go b/db_test.go index 874c567..14ea468 100644 --- a/db_test.go +++ b/db_test.go @@ -447,6 +447,40 @@ func (s *SurrealDBTestSuite) TestCreate() { }) } +func (s *SurrealDBTestSuite) TestCreateMany() { + + userList := []testUser{ + { + Username: "dwight", + Password: "123", + }, + { + Username: "michael", + Password: "456", + }, + } + + createdUsers, err := s.db.CreateMany("users", userList) + + s.Require().NoError(err) + s.NotEmpty(createdUsers) + + var userSlice []marshal.RawQuery[testUser] + err = marshal.UnmarshalRaw(createdUsers, &userSlice) + s.Require().NoError(err) + s.Len(userSlice, 1) + s.Equal(userSlice[0].Status, marshal.StatusOK) + + s.Len(userSlice[0].Result, 2) + + s.NotEmpty(userSlice[0].Result[0].ID, "The ID should have been set by the database for record 1") + s.Equal("dwight", userSlice[0].Result[0].Username) + + s.NotEmpty(userSlice[0].Result[1].ID, "The ID should have been set by the database for record 1") + s.Equal("michael", userSlice[0].Result[1].Username) + +} + func (s *SurrealDBTestSuite) TestSelect() { createdUsers, err := s.db.Create("users", testUser{ Username: "johnnyjohn", From f72c8bbf0d90f184efdae021b4dc00ffede62bff Mon Sep 17 00:00:00 2001 From: Aman Kharbanda Date: Thu, 28 Mar 2024 21:50:43 +0530 Subject: [PATCH 2/3] updated readme file --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f8c8b17..cc6fe52 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,14 @@ func main() { panic(err) } - // insert multiple entries + // Unmarshal data + createdUser := make([]User, 1) + err = surrealdb.Unmarshal(data, &createdUser) + if err != nil { + panic(err) + } + + // Insert multiple entries userList := []testUser{ { Username: "dwight", @@ -85,13 +92,6 @@ func main() { panic(err) } - // Unmarshal data - createdUser := make([]User, 1) - err = surrealdb.Unmarshal(data, &createdUser) - if err != nil { - panic(err) - } - // Get user by ID data, err = db.Select(createdUser[0].ID) if err != nil { From 64bd350bbbfc41c66cd4283a69e4905e7b3f65df Mon Sep 17 00:00:00 2001 From: Aman Kharbanda Date: Thu, 28 Mar 2024 21:54:12 +0530 Subject: [PATCH 3/3] updated struct names in readme --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cc6fe52..27cbc3e 100644 --- a/README.md +++ b/README.md @@ -75,14 +75,14 @@ func main() { } // Insert multiple entries - userList := []testUser{ + userList := []User{ { - Username: "dwight", - Password: "123", + Name: "John", + Surname: "Doe", }, { - Username: "michael", - Password: "456", + Name: "Jane", + Surname: "Doe", }, }