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