MCPcopy
hub / github.com/redis/go-redis / parseFTInfo

Function parseFTInfo

search_commands.go:1859–2112  ·  view source on GitHub ↗
(data map[string]interface{})

Source from the content-addressed store, hash-verified

1857}
1858
1859func parseFTInfo(data map[string]interface{}) (FTInfoResult, error) {
1860 var ftInfo FTInfoResult
1861
1862 // Parse Index Errors - handle both RESP2 (array) and RESP3 (map) formats
1863 if indexErrors, ok := data["Index Errors"].([]interface{}); ok {
1864 // RESP2 format: array with key-value pairs
1865 ftInfo.IndexErrors = IndexErrors{
1866 IndexingFailures: internal.ToInteger(indexErrors[1]),
1867 LastIndexingError: internal.ToString(indexErrors[3]),
1868 LastIndexingErrorKey: internal.ToString(indexErrors[5]),
1869 }
1870 } else if indexErrors, ok := data["Index Errors"].(map[interface{}]interface{}); ok {
1871 // RESP3 format: map
1872 ftInfo.IndexErrors = parseIndexErrorsRESP3(indexErrors)
1873 }
1874
1875 if attributes, ok := data["attributes"].([]interface{}); ok {
1876 for _, attr := range attributes {
1877 att := FTAttribute{}
1878 // Handle RESP2 format: attribute is []interface{}
1879 if attrSlice, ok := attr.([]interface{}); ok {
1880 attrLen := len(attrSlice)
1881 for i := 0; i < attrLen; i++ {
1882 if internal.ToLower(internal.ToString(attrSlice[i])) == "attribute" && i+1 < attrLen {
1883 att.Attribute = internal.ToString(attrSlice[i+1])
1884 i++
1885 continue
1886 }
1887 if internal.ToLower(internal.ToString(attrSlice[i])) == "identifier" && i+1 < attrLen {
1888 att.Identifier = internal.ToString(attrSlice[i+1])
1889 i++
1890 continue
1891 }
1892 if internal.ToLower(internal.ToString(attrSlice[i])) == "type" && i+1 < attrLen {
1893 att.Type = internal.ToString(attrSlice[i+1])
1894 i++
1895 continue
1896 }
1897 if internal.ToLower(internal.ToString(attrSlice[i])) == "weight" && i+1 < attrLen {
1898 att.Weight = internal.ToFloat(attrSlice[i+1])
1899 i++
1900 continue
1901 }
1902 if internal.ToLower(internal.ToString(attrSlice[i])) == "nostem" {
1903 att.NoStem = true
1904 continue
1905 }
1906 if internal.ToLower(internal.ToString(attrSlice[i])) == "sortable" {
1907 att.Sortable = true
1908 continue
1909 }
1910 if internal.ToLower(internal.ToString(attrSlice[i])) == "noindex" {
1911 att.NoIndex = true
1912 continue
1913 }
1914 if internal.ToLower(internal.ToString(attrSlice[i])) == "unf" {
1915 att.UNF = true
1916 continue

Callers 5

TestParseFTInfoFunction · 0.85
TestFTInfoRESP3ParsingFunction · 0.85
TestFTInfoRESP3NaNFunction · 0.85
readReplyMethod · 0.85

Calls 14

ToIntegerFunction · 0.92
ToStringFunction · 0.92
ToLowerFunction · 0.92
ToFloatFunction · 0.92
ToStringSliceFunction · 0.92
parseIndexErrorsRESP3Function · 0.85
parseFTAttributeFromMapFunction · 0.85
ftInfoNumStringFunction · 0.85
parseCursorStatsRESP3Function · 0.85
parseDialectStatsRESP3Function · 0.85
getMapStringKeyFunction · 0.85
parseGCStatsRESP3Function · 0.85

Tested by 4

TestParseFTInfoFunction · 0.68
TestFTInfoRESP3ParsingFunction · 0.68
TestFTInfoRESP3NaNFunction · 0.68