From 47db52f814245e8edef7f0dad9c8960490b555fb Mon Sep 17 00:00:00 2001
From: Christoph Glaubitz <christoph.glaubitz@innovo-cloud.de>
Date: Thu, 18 May 2017 14:29:11 +0200
Subject: [PATCH] Changed Create and Update to just return ID

---
 netbox/generate_basic_tests.go             | 18 ++++++++---------
 netbox/generate_functions.go               | 21 ++++++++++----------
 netbox/tenancy_tenant-groups.go            | 23 +++++++++++-----------
 netbox/tenancy_tenant-groups_basic_test.go | 20 +++++++++----------
 netbox/tenancy_tenants.go                  | 23 +++++++++++-----------
 netbox/tenancy_tenants_basic_test.go       | 20 +++++++++----------
 6 files changed, 61 insertions(+), 64 deletions(-)

diff --git a/netbox/generate_basic_tests.go b/netbox/generate_basic_tests.go
index 35bd6ff..01d83e7 100644
--- a/netbox/generate_basic_tests.go
+++ b/netbox/generate_basic_tests.go
@@ -223,7 +223,7 @@ func TestBasicCreate{{ .TypeName }}(t *testing.T) {
 	var tests = []struct {
 		desc       string
 		data       *{{ .TypeName }}
-		want       *{{ .TypeName }}
+		want       int
 		serverData interface{}
 		status     int
 		errstr     string
@@ -231,7 +231,7 @@ func TestBasicCreate{{ .TypeName }}(t *testing.T) {
 		{
 			desc:       "Create with ID 0",
 			data:       test{{ .TypeName }}Create(1),
-			want:       test{{ .TypeName }}(1),
+			want:       1,
 			status:     0,
 			errstr:     "",
 			serverData: test{{ .TypeName }}(1),
@@ -239,7 +239,7 @@ func TestBasicCreate{{ .TypeName }}(t *testing.T) {
 		{
 			desc:   "Create duplicate",
 			data:   test{{ .TypeName }}Create(1),
-			want:   nil,
+			want:   0,
 			status: http.StatusBadRequest,
 			errstr: "400 - {\"name\":[\"{{ .ServiceName }} with this name already exists.\"]}\n",
 			serverData: &struct {
@@ -275,15 +275,15 @@ func TestBasicUpdate{{ .TypeName }}(t *testing.T) {
 	var tests = []struct {
 		desc       string
 		data       *{{ .TypeName }}
-		want       *{{ .TypeName }}
+		want       int
 		serverData interface{}
 		status     int
 		errstr     string
 	}{
 		{
-			desc:       "Create with ID 1",
+			desc:       "Update with ID 1",
 			data:       test{{ .TypeName }}(1),
-			want:       test{{ .TypeName }}(1),
+			want:       1,
 			serverData: test{{ .TypeName }}(1),
 			status:     0,
 			errstr:     "",
@@ -291,7 +291,7 @@ func TestBasicUpdate{{ .TypeName }}(t *testing.T) {
 		{
 			desc: "Update not found",
 			data: test{{ .TypeName }}(1),
-			want: nil,
+			want: 0,
 			serverData: &struct {
 				Detail string
 			}{
@@ -301,9 +301,9 @@ func TestBasicUpdate{{ .TypeName }}(t *testing.T) {
 			errstr: "404 - Not found.",
 		},
 		{
-			desc: "Create duplicate",
+			desc: "Update to duplicate",
 			data: test{{ .TypeName }}(1),
-			want: nil,
+			want: 0,
 			serverData: &struct {
 				Name []string {{ call .JSONTag "name" }}
 			}{
diff --git a/netbox/generate_functions.go b/netbox/generate_functions.go
index 8461928..de6f33a 100644
--- a/netbox/generate_functions.go
+++ b/netbox/generate_functions.go
@@ -149,31 +149,30 @@ func (s *{{ .ServiceName }}) Extract(page *Page) ([]*{{ .TypeName }}, error) {
 	return groups, nil
 }
 
-// Create creates a new {{ .TypeName }} object in NetBox and returns the new object.
-func (s *{{ .ServiceName }}) Create(data *{{ .TypeName }}) (*{{ .TypeName }}, error) {
+// Create creates a new {{ .TypeName }} object in NetBox and returns the ID of the new object.
+func (s *{{ .ServiceName }}) Create(data *{{ .TypeName }}) (int, error) {
 	req, err := s.c.NewJSONRequest(http.MethodPost, "api/{{ .Endpoint }}/{{ .Service }}/", nil, data)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
 
 	g := new({{ .UpdateTypeName }})
 	err = s.c.Do(req, g)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
-	data.ID = g.ID
-	return data, nil
+	return g.ID, nil
 }
 
-// Update changes an existing {{ .TypeName }} object in NetBox, and returns the new object.
-func (s *{{ .ServiceName }}) Update(data *{{ .TypeName }}) (*{{ .TypeName }}, error) {
+// Update changes an existing {{ .TypeName }} object in NetBox, and returns the ID of the new object.
+func (s *{{ .ServiceName }}) Update(data *{{ .TypeName }}) (int, error) {
 	req, err := s.c.NewJSONRequest(
 		http.MethodPatch,
 		fmt.Sprintf("api/{{ .Endpoint }}/{{ .Service }}/%d/", data.ID),
 		nil,
 		data)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
 
 	// g is just used to verify correct api result.
@@ -183,9 +182,9 @@ func (s *{{ .ServiceName }}) Update(data *{{ .TypeName }}) (*{{ .TypeName }}, er
 	g := new({{ .UpdateTypeName }})
 	err = s.c.Do(req, g)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
-	return data, nil
+	return g.ID, nil
 }
 
 // Delete deletes an existing {{ .TypeName }} object from NetBox.
diff --git a/netbox/tenancy_tenant-groups.go b/netbox/tenancy_tenant-groups.go
index 66feef5..a774fae 100644
--- a/netbox/tenancy_tenant-groups.go
+++ b/netbox/tenancy_tenant-groups.go
@@ -14,7 +14,7 @@
 
 // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 // This file was generated by robots at
-// 2017-05-17 14:19:30.696198918 +0200 CEST
+// 2017-05-18 14:20:17.056969293 +0200 CEST
 
 package netbox
 
@@ -66,31 +66,30 @@ func (s *TenantGroupsService) Extract(page *Page) ([]*TenantGroup, error) {
 	return groups, nil
 }
 
-// Create creates a new TenantGroup object in NetBox and returns the new object.
-func (s *TenantGroupsService) Create(data *TenantGroup) (*TenantGroup, error) {
+// Create creates a new TenantGroup object in NetBox and returns the ID of the new object.
+func (s *TenantGroupsService) Create(data *TenantGroup) (int, error) {
 	req, err := s.c.NewJSONRequest(http.MethodPost, "api/tenancy/tenant-groups/", nil, data)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
 
 	g := new(TenantGroup)
 	err = s.c.Do(req, g)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
-	data.ID = g.ID
-	return data, nil
+	return g.ID, nil
 }
 
-// Update changes an existing TenantGroup object in NetBox, and returns the new object.
-func (s *TenantGroupsService) Update(data *TenantGroup) (*TenantGroup, error) {
+// Update changes an existing TenantGroup object in NetBox, and returns the ID of the new object.
+func (s *TenantGroupsService) Update(data *TenantGroup) (int, error) {
 	req, err := s.c.NewJSONRequest(
 		http.MethodPatch,
 		fmt.Sprintf("api/tenancy/tenant-groups/%d/", data.ID),
 		nil,
 		data)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
 
 	// g is just used to verify correct api result.
@@ -100,9 +99,9 @@ func (s *TenantGroupsService) Update(data *TenantGroup) (*TenantGroup, error) {
 	g := new(TenantGroup)
 	err = s.c.Do(req, g)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
-	return data, nil
+	return g.ID, nil
 }
 
 // Delete deletes an existing TenantGroup object from NetBox.
diff --git a/netbox/tenancy_tenant-groups_basic_test.go b/netbox/tenancy_tenant-groups_basic_test.go
index 9d3ab3c..b96098d 100644
--- a/netbox/tenancy_tenant-groups_basic_test.go
+++ b/netbox/tenancy_tenant-groups_basic_test.go
@@ -14,7 +14,7 @@
 
 // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 // This file was generated by robots at
-// 2017-05-17 14:19:30.943187077 +0200 CEST
+// 2017-05-18 14:20:17.307177904 +0200 CEST
 
 package netbox
 
@@ -142,7 +142,7 @@ func TestBasicCreateTenantGroup(t *testing.T) {
 	var tests = []struct {
 		desc       string
 		data       *TenantGroup
-		want       *TenantGroup
+		want       int
 		serverData interface{}
 		status     int
 		errstr     string
@@ -150,7 +150,7 @@ func TestBasicCreateTenantGroup(t *testing.T) {
 		{
 			desc:       "Create with ID 0",
 			data:       testTenantGroupCreate(1),
-			want:       testTenantGroup(1),
+			want:       1,
 			status:     0,
 			errstr:     "",
 			serverData: testTenantGroup(1),
@@ -158,7 +158,7 @@ func TestBasicCreateTenantGroup(t *testing.T) {
 		{
 			desc:   "Create duplicate",
 			data:   testTenantGroupCreate(1),
-			want:   nil,
+			want:   0,
 			status: http.StatusBadRequest,
 			errstr: "400 - {\"name\":[\"TenantGroupsService with this name already exists.\"]}\n",
 			serverData: &struct {
@@ -194,15 +194,15 @@ func TestBasicUpdateTenantGroup(t *testing.T) {
 	var tests = []struct {
 		desc       string
 		data       *TenantGroup
-		want       *TenantGroup
+		want       int
 		serverData interface{}
 		status     int
 		errstr     string
 	}{
 		{
-			desc:       "Create with ID 1",
+			desc:       "Update with ID 1",
 			data:       testTenantGroup(1),
-			want:       testTenantGroup(1),
+			want:       1,
 			serverData: testTenantGroup(1),
 			status:     0,
 			errstr:     "",
@@ -210,7 +210,7 @@ func TestBasicUpdateTenantGroup(t *testing.T) {
 		{
 			desc: "Update not found",
 			data: testTenantGroup(1),
-			want: nil,
+			want: 0,
 			serverData: &struct {
 				Detail string
 			}{
@@ -220,9 +220,9 @@ func TestBasicUpdateTenantGroup(t *testing.T) {
 			errstr: "404 - Not found.",
 		},
 		{
-			desc: "Create duplicate",
+			desc: "Update to duplicate",
 			data: testTenantGroup(1),
-			want: nil,
+			want: 0,
 			serverData: &struct {
 				Name []string `json:"name"`
 			}{
diff --git a/netbox/tenancy_tenants.go b/netbox/tenancy_tenants.go
index c9cc00c..5b751de 100644
--- a/netbox/tenancy_tenants.go
+++ b/netbox/tenancy_tenants.go
@@ -14,7 +14,7 @@
 
 // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 // This file was generated by robots at
-// 2017-05-17 14:19:31.190654936 +0200 CEST
+// 2017-05-18 14:20:17.557582817 +0200 CEST
 
 package netbox
 
@@ -66,31 +66,30 @@ func (s *TenantsService) Extract(page *Page) ([]*Tenant, error) {
 	return groups, nil
 }
 
-// Create creates a new Tenant object in NetBox and returns the new object.
-func (s *TenantsService) Create(data *Tenant) (*Tenant, error) {
+// Create creates a new Tenant object in NetBox and returns the ID of the new object.
+func (s *TenantsService) Create(data *Tenant) (int, error) {
 	req, err := s.c.NewJSONRequest(http.MethodPost, "api/tenancy/tenants/", nil, data)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
 
 	g := new(updateTenant)
 	err = s.c.Do(req, g)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
-	data.ID = g.ID
-	return data, nil
+	return g.ID, nil
 }
 
-// Update changes an existing Tenant object in NetBox, and returns the new object.
-func (s *TenantsService) Update(data *Tenant) (*Tenant, error) {
+// Update changes an existing Tenant object in NetBox, and returns the ID of the new object.
+func (s *TenantsService) Update(data *Tenant) (int, error) {
 	req, err := s.c.NewJSONRequest(
 		http.MethodPatch,
 		fmt.Sprintf("api/tenancy/tenants/%d/", data.ID),
 		nil,
 		data)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
 
 	// g is just used to verify correct api result.
@@ -100,9 +99,9 @@ func (s *TenantsService) Update(data *Tenant) (*Tenant, error) {
 	g := new(updateTenant)
 	err = s.c.Do(req, g)
 	if err != nil {
-		return nil, err
+		return 0, err
 	}
-	return data, nil
+	return g.ID, nil
 }
 
 // Delete deletes an existing Tenant object from NetBox.
diff --git a/netbox/tenancy_tenants_basic_test.go b/netbox/tenancy_tenants_basic_test.go
index f954536..6586429 100644
--- a/netbox/tenancy_tenants_basic_test.go
+++ b/netbox/tenancy_tenants_basic_test.go
@@ -14,7 +14,7 @@
 
 // GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
 // This file was generated by robots at
-// 2017-05-17 14:19:31.43602063 +0200 CEST
+// 2017-05-18 14:20:17.805444662 +0200 CEST
 
 package netbox
 
@@ -142,7 +142,7 @@ func TestBasicCreateTenant(t *testing.T) {
 	var tests = []struct {
 		desc       string
 		data       *Tenant
-		want       *Tenant
+		want       int
 		serverData interface{}
 		status     int
 		errstr     string
@@ -150,7 +150,7 @@ func TestBasicCreateTenant(t *testing.T) {
 		{
 			desc:       "Create with ID 0",
 			data:       testTenantCreate(1),
-			want:       testTenant(1),
+			want:       1,
 			status:     0,
 			errstr:     "",
 			serverData: testTenant(1),
@@ -158,7 +158,7 @@ func TestBasicCreateTenant(t *testing.T) {
 		{
 			desc:   "Create duplicate",
 			data:   testTenantCreate(1),
-			want:   nil,
+			want:   0,
 			status: http.StatusBadRequest,
 			errstr: "400 - {\"name\":[\"TenantsService with this name already exists.\"]}\n",
 			serverData: &struct {
@@ -194,15 +194,15 @@ func TestBasicUpdateTenant(t *testing.T) {
 	var tests = []struct {
 		desc       string
 		data       *Tenant
-		want       *Tenant
+		want       int
 		serverData interface{}
 		status     int
 		errstr     string
 	}{
 		{
-			desc:       "Create with ID 1",
+			desc:       "Update with ID 1",
 			data:       testTenant(1),
-			want:       testTenant(1),
+			want:       1,
 			serverData: testTenant(1),
 			status:     0,
 			errstr:     "",
@@ -210,7 +210,7 @@ func TestBasicUpdateTenant(t *testing.T) {
 		{
 			desc: "Update not found",
 			data: testTenant(1),
-			want: nil,
+			want: 0,
 			serverData: &struct {
 				Detail string
 			}{
@@ -220,9 +220,9 @@ func TestBasicUpdateTenant(t *testing.T) {
 			errstr: "404 - Not found.",
 		},
 		{
-			desc: "Create duplicate",
+			desc: "Update to duplicate",
 			data: testTenant(1),
-			want: nil,
+			want: 0,
 			serverData: &struct {
 				Name []string `json:"name"`
 			}{
-- 
GitLab