[Groonga-commit] groonga/grnci at b2427a6 [master] Simplify DB.ObjectInspect.

Back to archive index

Susumu Yata null+****@clear*****
Tue Sep 12 16:18:59 JST 2017


Susumu Yata	2017-09-12 16:18:59 +0900 (Tue, 12 Sep 2017)

  New Revision: b2427a628ae5ced947ae784cb06fb52b3a9c36c0
  https://github.com/groonga/grnci/commit/b2427a628ae5ced947ae784cb06fb52b3a9c36c0

  Message:
    Simplify DB.ObjectInspect.
    
    Ref: #42

  Modified files:
    v2/db.go
    v2/libgrn/db_test.go

  Modified: v2/db.go (+26 -35)
===================================================================
--- v2/db.go    2017-09-12 16:13:00 +0900 (adc2253)
+++ v2/db.go    2017-09-12 16:18:59 +0900 (60a3e0e)
@@ -1124,7 +1124,7 @@ type DBObjectDatabase struct {
 }
 
 // ObjectInspect executes object_inspect.
-func (db *DB) ObjectInspect(name string) (interface{}, Response, error) {
+func (db *DB) ObjectInspect(name string) (interface{}, error) {
 	var params map[string]interface{}
 	if name != "" {
 		params = map[string]interface{}{
@@ -1133,78 +1133,69 @@ func (db *DB) ObjectInspect(name string) (interface{}, Response, error) {
 	}
 	resp, err := db.Invoke("object_inspect", params, nil)
 	if err != nil {
-		return nil, nil, err
+		return nil, err
 	}
 	defer resp.Close()
 	jsonData, err := ioutil.ReadAll(resp)
 	if err != nil {
-		return nil, resp, err
+		return nil, err
 	}
 	switch {
 	case name == "": // Database
 		var result DBObjectDatabase
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			if resp.Err() != nil {
-				return nil, resp, nil
+		if len(jsonData) != 0 {
+			if err := json.Unmarshal(jsonData, &result); err != nil {
+				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+					"error": err.Error(),
+				})
 			}
-			return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
 		}
-		return &result, resp, nil
+		return &result, resp.Err()
 	case strings.Contains(name, "."): // Column
 		var result DBObjectColumn
-		if err := json.Unmarshal(jsonData, &result); err != nil {
-			if resp.Err() != nil {
-				return nil, resp, nil
+		if len(jsonData) != 0 {
+			if err := json.Unmarshal(jsonData, &result); err != nil {
+				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+					"error": err.Error(),
+				})
 			}
-			return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
 		}
-		return &result, resp, nil
+		return &result, resp.Err()
 	default: // Table of type
 		type SizeNRecords struct {
 			Size     *int `json:"size"`
 			NRecords *int `json:"n_records"`
 		}
 		var sizeNRecords SizeNRecords
-		if err := json.Unmarshal(jsonData, &sizeNRecords); err != nil {
-			if resp.Err() != nil {
-				return nil, resp, nil
+		if len(jsonData) != 0 {
+			if err := json.Unmarshal(jsonData, &sizeNRecords); err != nil {
+				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+					"error": err.Error(),
+				})
 			}
-			return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
-				"error": err.Error(),
-			})
 		}
 		switch {
 		case sizeNRecords.Size != nil:
 			var result DBObjectType
 			if err := json.Unmarshal(jsonData, &result); err != nil {
-				if resp.Err() != nil {
-					return nil, resp, nil
-				}
-				return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
 					"error": err.Error(),
 				})
 			}
-			return &result, resp, nil
+			return &result, resp.Err()
 		case sizeNRecords.NRecords != nil:
 			var result DBObjectTable
 			if err := json.Unmarshal(jsonData, &result); err != nil {
-				if resp.Err() != nil {
-					return nil, resp, nil
-				}
-				return nil, resp, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
+				return nil, NewError(ResponseError, "json.Unmarshal failed.", map[string]interface{}{
 					"error": err.Error(),
 				})
 			}
-			return &result, resp, nil
+			return &result, resp.Err()
 		default:
 			if resp.Err() != nil {
-				return nil, resp, nil
+				return nil, resp.Err()
 			}
-			return nil, resp, NewError(ResponseError, "The response format is not invalid.", map[string]interface{}{
+			return nil, NewError(ResponseError, "The response format is invalid.", map[string]interface{}{
 				"command": "object_inspect",
 			})
 		}

  Modified: v2/libgrn/db_test.go (+1 -4)
===================================================================
--- v2/libgrn/db_test.go    2017-09-12 16:13:00 +0900 (db67ad2)
+++ v2/libgrn/db_test.go    2017-09-12 16:18:59 +0900 (d084bf5)
@@ -1050,10 +1050,7 @@ load --table Tbl --columns _key --values '[["Key"]]'`
 	if err := db.Truncate("Tbl"); err != nil {
 		t.Fatalf("db.Truncate failed: %v", err)
 	}
-	obj, resp, err := db.ObjectInspect("Tbl")
-	if err == nil {
-		err = resp.Err()
-	}
+	obj, err := db.ObjectInspect("Tbl")
 	if err != nil {
 		t.Fatalf("db.ObjectInspect failed: %v", err)
 	}
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20170912/a4c47245/attachment-0001.htm 



More information about the Groonga-commit mailing list
Back to archive index