From a67071c87362c0dc79ccc2fce5448797c54dc738 Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Sat, 25 Jan 2025 12:03:24 +0530 Subject: [PATCH] Unset key value from response : GWM --- main.go | 95 +++++++++++++++++++++++++++++++------------- pb_data/data.db | Bin 192512 -> 192512 bytes pb_data/data.db-shm | Bin 32768 -> 32768 bytes pb_data/data.db-wal | Bin 0 -> 16512 bytes pb_data/logs.db | Bin 770048 -> 770048 bytes pb_data/logs.db-shm | Bin 32768 -> 32768 bytes pb_data/logs.db-wal | Bin 0 -> 41232 bytes 7 files changed, 68 insertions(+), 27 deletions(-) diff --git a/main.go b/main.go index 8699312..a4d55b9 100644 --- a/main.go +++ b/main.go @@ -333,6 +333,29 @@ func TranslateFilters(app *pocketbase.PocketBase, dataset string, filterGroups [ return filterGroups, nil } +// Generic function to filter JSON data dynamically based on key-value pairs +func filterDynamicChartData(chartData []map[string]interface{}, keyToFilter, valueToExclude string) []map[string]interface{} { + var filteredData []map[string]interface{} + + for _, item := range chartData { + obsKey, ok := item["ObsKey"].(map[string]interface{}) + if !ok { + // Skip items without "ObsKey" or malformed data + continue + } + + // Check if the key exists and matches the value to exclude + if obsKey[keyToFilter] == valueToExclude { + continue + } + + // Add item to filtered data + filteredData = append(filteredData, item) + } + + return filteredData +} + var app *pocketbase.PocketBase func main() { @@ -396,8 +419,6 @@ func main() { return c.JSON(http.StatusNotFound, map[string]string{"error": "No records found for the given dataset"}) } - var aggregatedResponse []map[string]interface{} - param := dbx.NewExp("dataset = {:dataset}", dbx.Params{"dataset": dataset}) languageSource, err := app.Dao().FindRecordsByExpr("charts_variables", param) if err != nil { @@ -409,31 +430,8 @@ func main() { languageSourceConverted = append(languageSourceConverted, record.SchemaData()) } - //get all filter based of kpi - var dataSetKpis []struct { - Kpi string `db:"kpi" json:"kpi"` - } - err = app.DB().Select("kpi").From("charts").Where(dbx.HashExp{"dataset": dataset}).GroupBy("kpi").All(&dataSetKpis) - if err != nil { - log.Fatalf("Failed to get kpi groupby data: %v", err) - } - - aggregatedFilterResponse := make(map[string]interface{}) - for _, dataSetKpi := range dataSetKpis { - - kpi := dataSetKpi.Kpi - filterData, err := fetchfilterJSON(kpi) - - // Translate filter data using the desired dataset and language key - fRes, err := TranslateFilters(app, dataset, filterData, "value_en") - if err != nil { - log.Fatalf("Error translating filters: %v", err) - } - - aggregatedFilterResponse[kpi] = fRes - - } - + //get chart and card data + var aggregatedResponse []map[string]interface{} for _, record := range records { // Extract the URL for each record apiURL := record.GetString("url") @@ -460,6 +458,21 @@ func main() { log.Printf("Failed to read JSON for KPI '%s': %v", file_name, err) } + // Retrieve the unset key and value + keyToFilter := record.GetString("unset_key") + valueToExclude := record.GetString("unset_value") + + // Check if both the key and value are empty + if keyToFilter == "" || valueToExclude == "" { + fmt.Println("unset_key or unset_value is empty. Skipping processing.") + } else { + // Log the extracted key and value for debugging purposes + fmt.Printf("Filtering with Key: %s, Value: %s\n", keyToFilter, valueToExclude) + + // Filter the data dynamically and update chartData + chartData = filterDynamicChartData(chartData, keyToFilter, valueToExclude) + } + langKey := "value_en" cRes := utils.ProcessChartData(chartData, languageSourceConverted, langKey) @@ -475,13 +488,41 @@ func main() { "response": cRes, "group_by": record.GetString("group_by"), "chart_heading": record.GetString("chart_heading"), + "unset_value": record.Get("unset_value"), } // Add the result to the aggregated response aggregatedResponse = append(aggregatedResponse, recordResult) } + + // get all filter based on kpi + var dataSetKpis []struct { + Kpi string `db:"kpi" json:"kpi"` + } + err = app.DB().Select("kpi").From("charts").Where(dbx.HashExp{"dataset": dataset}).GroupBy("kpi").All(&dataSetKpis) + if err != nil { + log.Fatalf("Failed to get kpi groupby data: %v", err) + } + + aggregatedFilterResponse := make(map[string]interface{}) + for _, dataSetKpi := range dataSetKpis { + + kpi := dataSetKpi.Kpi + filterData, err := fetchfilterJSON(kpi) + + // Translate filter data using the desired dataset and language key + fRes, err := TranslateFilters(app, dataset, filterData, "value_en") + if err != nil { + log.Fatalf("Error translating filters: %v", err) + } + + aggregatedFilterResponse[kpi] = fRes + + } + temp, err := fetchfilterJSON(dataset) + // Create the response structure response := map[string]interface{}{ "filter_data": temp, diff --git a/pb_data/data.db b/pb_data/data.db index c7bae22376512c63c3482c2525f2bf5c8a921296..37d2a7c1dfcbe99dbc772d97bce47377059d6ca5 100644 GIT binary patch delta 615 zcmZp8z}@hGdxEr}CIbV5J`lrz`$QdMM$N{AtqF|F=1VMM;J?Zr&3BbAnkS3LlBiF8Kt*(uVAbSXJ^P{V94aSGucoemTN)*tAI9#sN@3U?fV&-Ua(ES z&&DJ!ooSw5kd&WZq@<&imzbNXWCb_3a&lvJmqbx!Nm^w}0fzi^Jzl1Y$+L^Nr*Gn5 zlIAm2Ffg++G_*1?(=#wI+kTsaNsXPK>l6bE=LTl(8GP?JH}EXoY$&jRQ@BZ-SwPxW zR+~{=QrEW0l$ViLcKR(zCiUs^@=W}U4Ab@GnT|^_rev1o7bT|_^WI}PCkj$+E-h`_ zSSZan{jL;~DI??bC@CiG>Hcy|T+`j9nSw-{xEO^%>Nuh5IC@4YEuY)0?H4d?Y>MLm~rQw6KWL1&7WnNVxhrlWMycnXJlatH%5a4>gbT|f908&F8~0u C)S{gL delta 503 zcmZp8z}@hGdxEr}8Uq7^J`lrz-9#N@MzzL-tqF|F=1Y8F;J?Zr&3BbAnkS3LlBu#%ChPlZ)Ln?qD`w)ECwrWb6JXBTl#-^9TrJw3XHiHFJ9V*70l zCN*|`UN#06t~1PBXLuj*J>@)%ribe+vC!YFLB%q$F9%xuM%hXZrp#|%r1JBN{KdI+zNaPl#C#Ri z+)hAbQP$F;losU$Q8gvalvF`7#LcR|9ko4#cRKgFjj$fn@K!_0);JOoH^7nSyTP_k ze|0c%iI0iz;lW!;`huvKYSxrxK~;>+Iw37=W-@IQAQvOlaS?lwQ1h@S+>N#c7t!Z1 z$y8n9W|rUIu$BtTPT@mmb!|x!G(pT*wqObLDmdk0`6hjFo2;X@A64_RC~4PFSRFo; zrE68ci9+m0p+$-njN03Df>D^af}k*X2J?gX5|6lF-exjJDwY3YE5#?S1b&EUENWVk z)3U-?WX)8vf~v_wmg=V-sVG~1)Tp&~a#g+_5fnHqu1Y=dah=Y9VB|$%)a;U|)An(5 zz$2>*l4z>3spf>7s7}apyI6M0AFta>s-RFIio=9@)BG%pCf<)Gp13mi)&%j46OOhZ z>ZW9vsxIUd<)wxr+&sxzuG-edosvCRQR(&pjI-I(rw)^To+bTtn@`PS&m{!42TRdU zdOCesFtYk^bx}|cJIzYekUI62?hljYgn2LNLN=S5P=ek`oc;k4&t0zkM z^2)01tlOoPVquB?i-XiD*~^YqvMs(pFc9Q8e&zzJ360f6m(@hYWoSoBLT3xE$p4i@ zkL1(j!{kq|&L<$u1Oz|;1V8`;KmY_l00ck) z1V8`;PO-p+*djl&+cm|;Mz(!pY;0tM=ge$uF+Q>nN+pl=3w*Hu!|y2n<44dhaEfyb zLI(j5009sH0T6gC1fX94`UQ?2_P(h9VeEbZcD88>d>w#Ef&d7B00@8p2!H?x RfB*=900^8mftTDb@GrEWY5D*F literal 0 HcmV?d00001 diff --git a/pb_data/logs.db b/pb_data/logs.db index bfd14c7bb0f6cb0c6e3468bc7740ac53767a727f..d150f6b7a516e17997ac2bfb1aa3970f7281f049 100644 GIT binary patch delta 32724 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 O@H4pl%Cno8;r|1d!!Qp3 delta 9588 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 U26iyb%)kMrSr|AsHu7o!0KgeK6951J delta 89 zcmZo@U}|V!;+1%$%K!t66E{kWTChv7nNGgVi7uf4lYpuIj|Mhw{Oqyuz*I8;*3cj< diff --git a/pb_data/logs.db-wal b/pb_data/logs.db-wal index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1728b09146dd2288f950880658a436bf5aba8e6b 100644 GIT binary patch literal 41232 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 G;Qs-bDz6m) literal 0 HcmV?d00001