From a0a38607e40437e688aa5c1b25f2c73c8855e3c0 Mon Sep 17 00:00:00 2001 From: brianchennn <46628572+brianchennn@users.noreply.github.com> Date: Thu, 27 Jul 2023 16:17:49 +0800 Subject: [PATCH 1/5] Snssai.Sd values to lower case (#13) --- internal/sbi/producer/data_repository.go | 45 ++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/internal/sbi/producer/data_repository.go b/internal/sbi/producer/data_repository.go index d66ccfd..894fd3e 100644 --- a/internal/sbi/producer/data_repository.go +++ b/internal/sbi/producer/data_repository.go @@ -627,6 +627,8 @@ func ApplicationDataInfluenceDataInfluenceIdPatchProcedure( return nil, http.StatusNotFound } + request.Snssai.Sd = strings.ToLower(request.Snssai.Sd) + patchTrafficInfluData := models.TrafficInfluData{ UpPathChgNotifCorreId: request.UpPathChgNotifCorreId, AppReloInd: request.AppReloInd, @@ -703,6 +705,7 @@ func ApplicationDataInfluenceDataInfluenceIdPutProcedure( collName, influenceId string, request *models.TrafficInfluData) ( *models.TrafficInfluData, *models.ProblemDetails, int, ) { + request.Snssai.Sd = strings.ToLower(request.Snssai.Sd) putData := util.ToBsonM(*request) putData["influenceId"] = influenceId filter := bson.M{"influenceId": influenceId} @@ -1418,6 +1421,7 @@ func HandlePolicyDataUesUeIdSmDataGet(request *httpwrapper.Request) *httpwrapper if err != nil { logger.DataRepoLog.Warnln(err) } + sNssai.Sd = strings.ToLower(sNssai.Sd) dnn := request.Query.Get("dnn") response, problemDetails := PolicyDataUesUeIdSmDataGetProcedure(collName, ueId, sNssai, dnn) @@ -1435,7 +1439,7 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo dnn string, ) (*models.SmPolicyData, *models.ProblemDetails) { filter := bson.M{"ueId": ueId} - + snssai.Sd = strings.ToLower(snssai.Sd) if !reflect.DeepEqual(snssai, models.Snssai{}) { filter["smPolicySnssaiData."+util.SnssaiModelsToHex(snssai)] = bson.M{"$exists": true} } @@ -1455,14 +1459,17 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo logger.DataRepoLog.Warnln(err) } tmpSmPolicySnssaiData := make(map[string]models.SmPolicySnssaiData) - for snssai, snssaiData := range smPolicyDataResp.SmPolicySnssaiData { + for sstSd, snssaiData := range smPolicyDataResp.SmPolicySnssaiData { + sstSd = strings.ToLower(sstSd) + snssaiData.Snssai.Sd = strings.ToLower(snssaiData.Snssai.Sd) + tmpSmPolicyDnnData := make(map[string]models.SmPolicyDnnData) for escapedDnn, dnnData := range snssaiData.SmPolicyDnnData { dnn := util.UnescapeDnn(escapedDnn) tmpSmPolicyDnnData[dnn] = dnnData } snssaiData.SmPolicyDnnData = tmpSmPolicyDnnData - tmpSmPolicySnssaiData[snssai] = snssaiData + tmpSmPolicySnssaiData[sstSd] = snssaiData } smPolicyDataResp.SmPolicySnssaiData = tmpSmPolicySnssaiData filter = bson.M{"ueId": ueId} @@ -1481,6 +1488,7 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo smPolicyDataResp.UmData[element.LimitId] = element } } + return &smPolicyDataResp, nil } @@ -1508,6 +1516,9 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, for k, usageMonData := range UsageMonData { limitId := k filterTmp := bson.M{"ueId": ueId, "limitId": limitId} + for i := range usageMonData.Scopes { + usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(usageMonData.Scopes[i].Snssai.Sd) + } if err := mongoapi.RestfulAPIMergePatch(collName, filterTmp, util.ToBsonM(usageMonData)); err != nil { successAll = false } else { @@ -1520,6 +1531,11 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, if err := json.Unmarshal(util.MapToByte(usageMonDataBsonM), &usageMonData); err != nil { logger.DataRepoLog.Warnln(err) } + + for i, scope := range usageMonData.Scopes { + usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(scope.Snssai.Sd) + } + PreHandlePolicyDataChangeNotification(ueId, limitId, usageMonData) } } @@ -1535,6 +1551,15 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, logger.DataRepoLog.Warnln(err) } + newSmPolicySnssaiData := make(map[string]models.SmPolicySnssaiData) + for sstSd, snssaiData := range smPolicyData.SmPolicySnssaiData { + sstSd = strings.ToLower(sstSd) + snssaiData.Snssai.Sd = strings.ToLower(snssaiData.Snssai.Sd) + newSmPolicySnssaiData[sstSd] = snssaiData + } + + smPolicyData.SmPolicySnssaiData = newSmPolicySnssaiData + collName := "policyData.ues.smData.usageMonData" filter := bson.M{"ueId": ueId} usageMonDataMapArray, err := mongoapi.RestfulAPIGetMany(collName, filter) @@ -1552,6 +1577,7 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, smPolicyData.UmData[element.LimitId] = element } } + PreHandlePolicyDataChangeNotification(ueId, "", smPolicyData) return nil } @@ -1608,6 +1634,9 @@ func HandlePolicyDataUesUeIdSmDataUsageMonIdPut(request *httpwrapper.Request) *h ueId := request.Params["ueId"] usageMonId := request.Params["usageMonId"] usageMonData := request.Body.(models.UsageMonData) + for i, scope := range usageMonData.Scopes { + usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(scope.Snssai.Sd) + } collName := "policyData.ues.smData.usageMonData" response := PolicyDataUesUeIdSmDataUsageMonIdPutProcedure(collName, ueId, usageMonId, usageMonData) @@ -1618,6 +1647,10 @@ func HandlePolicyDataUesUeIdSmDataUsageMonIdPut(request *httpwrapper.Request) *h func PolicyDataUesUeIdSmDataUsageMonIdPutProcedure(collName string, ueId string, usageMonId string, usageMonData models.UsageMonData, ) *bson.M { + for i, scope := range usageMonData.Scopes { + usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(scope.Snssai.Sd) + } + putData := util.ToBsonM(usageMonData) putData["ueId"] = ueId putData["usageMonId"] = usageMonId @@ -2415,6 +2448,7 @@ func QueryProvisionedDataProcedure(ueId string, servingPlmnId string, return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } for _, smData := range tmp { + smData.SingleNssai.Sd = strings.ToLower(smData.SingleNssai.Sd) dnnConfigurations := smData.DnnConfigurations tmpDnnConfigurations := make(map[string]models.DnnConfiguration) for escapedDnn, dnnConf := range dnnConfigurations { @@ -2751,6 +2785,8 @@ func HandleQuerySmData(request *httpwrapper.Request) *httpwrapper.Response { logger.DataRepoLog.Warnln(err) } + singleNssai.Sd = strings.ToLower(singleNssai.Sd) + dnn := request.Query.Get("dnn") response := QuerySmDataProcedure(collName, ueId, servingPlmnId, singleNssai, dnn) @@ -2760,6 +2796,7 @@ func HandleQuerySmData(request *httpwrapper.Request) *httpwrapper.Response { func QuerySmDataProcedure(collName string, ueId string, servingPlmnId string, singleNssai models.Snssai, dnn string, ) *[]map[string]interface{} { + singleNssai.Sd = strings.ToLower(singleNssai.Sd) filter := bson.M{"ueId": ueId, "servingPlmnId": servingPlmnId} if !reflect.DeepEqual(singleNssai, models.Snssai{}) { @@ -2788,6 +2825,7 @@ func QuerySmDataProcedure(collName string, ueId string, servingPlmnId string, logger.DataRepoLog.Debug("SmData Unmarshal error") continue } + tmpSmData.SingleNssai.Sd = strings.ToLower(tmpSmData.SingleNssai.Sd) dnnConfigurations := tmpSmData.DnnConfigurations tmpDnnConfigurations := make(map[string]models.DnnConfiguration) for escapedDnn, dnnConf := range dnnConfigurations { @@ -2825,6 +2863,7 @@ func HandleCreateSmfContextNon3gpp(request *httpwrapper.Request) *httpwrapper.Re func CreateSmfContextNon3gppProcedure(SmfRegistration models.SmfRegistration, collName string, ueId string, pduSessionIdInt int64, ) (bson.M, int) { + SmfRegistration.SingleNssai.Sd = strings.ToLower(SmfRegistration.SingleNssai.Sd) putData := util.ToBsonM(SmfRegistration) putData["ueId"] = ueId putData["pduSessionId"] = int32(pduSessionIdInt) From 1c9591c7ed6a4397636278908907615ac75c508e Mon Sep 17 00:00:00 2001 From: tim-ywliu <68043973+tim-ywliu@users.noreply.github.com> Date: Mon, 7 Aug 2023 01:24:08 +0800 Subject: [PATCH 2/5] Revert "Snssai.Sd values to lower case (#13)" (#15) This reverts commit a0a38607e40437e688aa5c1b25f2c73c8855e3c0. --- internal/sbi/producer/data_repository.go | 45 ++---------------------- 1 file changed, 3 insertions(+), 42 deletions(-) diff --git a/internal/sbi/producer/data_repository.go b/internal/sbi/producer/data_repository.go index 894fd3e..d66ccfd 100644 --- a/internal/sbi/producer/data_repository.go +++ b/internal/sbi/producer/data_repository.go @@ -627,8 +627,6 @@ func ApplicationDataInfluenceDataInfluenceIdPatchProcedure( return nil, http.StatusNotFound } - request.Snssai.Sd = strings.ToLower(request.Snssai.Sd) - patchTrafficInfluData := models.TrafficInfluData{ UpPathChgNotifCorreId: request.UpPathChgNotifCorreId, AppReloInd: request.AppReloInd, @@ -705,7 +703,6 @@ func ApplicationDataInfluenceDataInfluenceIdPutProcedure( collName, influenceId string, request *models.TrafficInfluData) ( *models.TrafficInfluData, *models.ProblemDetails, int, ) { - request.Snssai.Sd = strings.ToLower(request.Snssai.Sd) putData := util.ToBsonM(*request) putData["influenceId"] = influenceId filter := bson.M{"influenceId": influenceId} @@ -1421,7 +1418,6 @@ func HandlePolicyDataUesUeIdSmDataGet(request *httpwrapper.Request) *httpwrapper if err != nil { logger.DataRepoLog.Warnln(err) } - sNssai.Sd = strings.ToLower(sNssai.Sd) dnn := request.Query.Get("dnn") response, problemDetails := PolicyDataUesUeIdSmDataGetProcedure(collName, ueId, sNssai, dnn) @@ -1439,7 +1435,7 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo dnn string, ) (*models.SmPolicyData, *models.ProblemDetails) { filter := bson.M{"ueId": ueId} - snssai.Sd = strings.ToLower(snssai.Sd) + if !reflect.DeepEqual(snssai, models.Snssai{}) { filter["smPolicySnssaiData."+util.SnssaiModelsToHex(snssai)] = bson.M{"$exists": true} } @@ -1459,17 +1455,14 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo logger.DataRepoLog.Warnln(err) } tmpSmPolicySnssaiData := make(map[string]models.SmPolicySnssaiData) - for sstSd, snssaiData := range smPolicyDataResp.SmPolicySnssaiData { - sstSd = strings.ToLower(sstSd) - snssaiData.Snssai.Sd = strings.ToLower(snssaiData.Snssai.Sd) - + for snssai, snssaiData := range smPolicyDataResp.SmPolicySnssaiData { tmpSmPolicyDnnData := make(map[string]models.SmPolicyDnnData) for escapedDnn, dnnData := range snssaiData.SmPolicyDnnData { dnn := util.UnescapeDnn(escapedDnn) tmpSmPolicyDnnData[dnn] = dnnData } snssaiData.SmPolicyDnnData = tmpSmPolicyDnnData - tmpSmPolicySnssaiData[sstSd] = snssaiData + tmpSmPolicySnssaiData[snssai] = snssaiData } smPolicyDataResp.SmPolicySnssaiData = tmpSmPolicySnssaiData filter = bson.M{"ueId": ueId} @@ -1488,7 +1481,6 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo smPolicyDataResp.UmData[element.LimitId] = element } } - return &smPolicyDataResp, nil } @@ -1516,9 +1508,6 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, for k, usageMonData := range UsageMonData { limitId := k filterTmp := bson.M{"ueId": ueId, "limitId": limitId} - for i := range usageMonData.Scopes { - usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(usageMonData.Scopes[i].Snssai.Sd) - } if err := mongoapi.RestfulAPIMergePatch(collName, filterTmp, util.ToBsonM(usageMonData)); err != nil { successAll = false } else { @@ -1531,11 +1520,6 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, if err := json.Unmarshal(util.MapToByte(usageMonDataBsonM), &usageMonData); err != nil { logger.DataRepoLog.Warnln(err) } - - for i, scope := range usageMonData.Scopes { - usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(scope.Snssai.Sd) - } - PreHandlePolicyDataChangeNotification(ueId, limitId, usageMonData) } } @@ -1551,15 +1535,6 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, logger.DataRepoLog.Warnln(err) } - newSmPolicySnssaiData := make(map[string]models.SmPolicySnssaiData) - for sstSd, snssaiData := range smPolicyData.SmPolicySnssaiData { - sstSd = strings.ToLower(sstSd) - snssaiData.Snssai.Sd = strings.ToLower(snssaiData.Snssai.Sd) - newSmPolicySnssaiData[sstSd] = snssaiData - } - - smPolicyData.SmPolicySnssaiData = newSmPolicySnssaiData - collName := "policyData.ues.smData.usageMonData" filter := bson.M{"ueId": ueId} usageMonDataMapArray, err := mongoapi.RestfulAPIGetMany(collName, filter) @@ -1577,7 +1552,6 @@ func PolicyDataUesUeIdSmDataPatchProcedure(collName string, ueId string, smPolicyData.UmData[element.LimitId] = element } } - PreHandlePolicyDataChangeNotification(ueId, "", smPolicyData) return nil } @@ -1634,9 +1608,6 @@ func HandlePolicyDataUesUeIdSmDataUsageMonIdPut(request *httpwrapper.Request) *h ueId := request.Params["ueId"] usageMonId := request.Params["usageMonId"] usageMonData := request.Body.(models.UsageMonData) - for i, scope := range usageMonData.Scopes { - usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(scope.Snssai.Sd) - } collName := "policyData.ues.smData.usageMonData" response := PolicyDataUesUeIdSmDataUsageMonIdPutProcedure(collName, ueId, usageMonId, usageMonData) @@ -1647,10 +1618,6 @@ func HandlePolicyDataUesUeIdSmDataUsageMonIdPut(request *httpwrapper.Request) *h func PolicyDataUesUeIdSmDataUsageMonIdPutProcedure(collName string, ueId string, usageMonId string, usageMonData models.UsageMonData, ) *bson.M { - for i, scope := range usageMonData.Scopes { - usageMonData.Scopes[i].Snssai.Sd = strings.ToLower(scope.Snssai.Sd) - } - putData := util.ToBsonM(usageMonData) putData["ueId"] = ueId putData["usageMonId"] = usageMonId @@ -2448,7 +2415,6 @@ func QueryProvisionedDataProcedure(ueId string, servingPlmnId string, return nil, openapi.ProblemDetailsSystemFailure(err.Error()) } for _, smData := range tmp { - smData.SingleNssai.Sd = strings.ToLower(smData.SingleNssai.Sd) dnnConfigurations := smData.DnnConfigurations tmpDnnConfigurations := make(map[string]models.DnnConfiguration) for escapedDnn, dnnConf := range dnnConfigurations { @@ -2785,8 +2751,6 @@ func HandleQuerySmData(request *httpwrapper.Request) *httpwrapper.Response { logger.DataRepoLog.Warnln(err) } - singleNssai.Sd = strings.ToLower(singleNssai.Sd) - dnn := request.Query.Get("dnn") response := QuerySmDataProcedure(collName, ueId, servingPlmnId, singleNssai, dnn) @@ -2796,7 +2760,6 @@ func HandleQuerySmData(request *httpwrapper.Request) *httpwrapper.Response { func QuerySmDataProcedure(collName string, ueId string, servingPlmnId string, singleNssai models.Snssai, dnn string, ) *[]map[string]interface{} { - singleNssai.Sd = strings.ToLower(singleNssai.Sd) filter := bson.M{"ueId": ueId, "servingPlmnId": servingPlmnId} if !reflect.DeepEqual(singleNssai, models.Snssai{}) { @@ -2825,7 +2788,6 @@ func QuerySmDataProcedure(collName string, ueId string, servingPlmnId string, logger.DataRepoLog.Debug("SmData Unmarshal error") continue } - tmpSmData.SingleNssai.Sd = strings.ToLower(tmpSmData.SingleNssai.Sd) dnnConfigurations := tmpSmData.DnnConfigurations tmpDnnConfigurations := make(map[string]models.DnnConfiguration) for escapedDnn, dnnConf := range dnnConfigurations { @@ -2863,7 +2825,6 @@ func HandleCreateSmfContextNon3gpp(request *httpwrapper.Request) *httpwrapper.Re func CreateSmfContextNon3gppProcedure(SmfRegistration models.SmfRegistration, collName string, ueId string, pduSessionIdInt int64, ) (bson.M, int) { - SmfRegistration.SingleNssai.Sd = strings.ToLower(SmfRegistration.SingleNssai.Sd) putData := util.ToBsonM(SmfRegistration) putData["ueId"] = ueId putData["pduSessionId"] = int32(pduSessionIdInt) From 346560f63ff5203a7564fc4d218b2371b8d1ab72 Mon Sep 17 00:00:00 2001 From: BrianChen <46628572+brianchennn@users.noreply.github.com> Date: Wed, 23 Aug 2023 22:49:51 +0800 Subject: [PATCH 3/5] Fix using lowercase to query uppercase in MongoDB (#16) * Fix using lowercase to query uppercase in MongoDB * fix comment * fix linter error --- go.mod | 2 +- go.sum | 4 +- internal/sbi/producer/data_repository.go | 65 +++++++++++++++++++----- 3 files changed, 56 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 83b5d93..0e6e3d0 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d github.com/evanphx/json-patch v0.5.2 github.com/free5gc/openapi v1.0.6 - github.com/free5gc/util v1.0.5-0.20230511064842-2e120956883b + github.com/free5gc/util v1.0.5-0.20230823103219-e511c4fd20ef github.com/gin-gonic/gin v1.9.0 github.com/google/uuid v1.3.0 github.com/mitchellh/mapstructure v1.4.3 diff --git a/go.sum b/go.sum index 03e1d9f..bb4bdaa 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,8 @@ github.com/evanphx/json-patch v0.5.2 h1:xVCHIVMUu1wtM/VkR9jVZ45N3FhZfYMMYGorLCR8 github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= github.com/free5gc/openapi v1.0.6 h1:ytRjU/YZRI8UhKKyfajXSyGB6s1YDFkJ1weeAGJ8LXw= github.com/free5gc/openapi v1.0.6/go.mod h1:iw/N0E+FlX44EEx24IBi2EdZW8v+bkj3ETWPGnlK9DI= -github.com/free5gc/util v1.0.5-0.20230511064842-2e120956883b h1:XMw3j+4AEXLeL/uyiZ7/qYE1X7Ul05RTwWBhzxCLi+0= -github.com/free5gc/util v1.0.5-0.20230511064842-2e120956883b/go.mod h1:l2Jrml4vojDomW5jdDJhIS60KdbrE9uPYhyAq/7OnF4= +github.com/free5gc/util v1.0.5-0.20230823103219-e511c4fd20ef h1:ne0EMnst7wbLoaY2Uvn/2Kvp/KkXKMQJcaIJQKFe+a4= +github.com/free5gc/util v1.0.5-0.20230823103219-e511c4fd20ef/go.mod h1:l2Jrml4vojDomW5jdDJhIS60KdbrE9uPYhyAq/7OnF4= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.9.0 h1:OjyFBKICoexlu99ctXNR2gg+c5pKrKMuyjgARg9qeY8= diff --git a/internal/sbi/producer/data_repository.go b/internal/sbi/producer/data_repository.go index d66ccfd..06fd3ab 100644 --- a/internal/sbi/producer/data_repository.go +++ b/internal/sbi/producer/data_repository.go @@ -41,6 +41,21 @@ func getDataFromDB(collName string, filter bson.M) (map[string]interface{}, *mod return data, nil } +func getDataFromDBWithArg(collName string, filter bson.M, strength int) ( + map[string]interface{}, *models.ProblemDetails, +) { + data, err := mongoapi.RestfulAPIGetOneWithArg(collName, filter, strength) + if err != nil { + return nil, openapi.ProblemDetailsSystemFailure(err.Error()) + } + if data == nil { + logger.ConsumerLog.Errorln("filter: ", filter) + return nil, util.ProblemDetailsNotFound("DATA_NOT_FOUND") + } + + return data, nil +} + func deleteDataFromDB(collName string, filter bson.M) { if err := mongoapi.RestfulAPIDeleteOne(collName, filter); err != nil { logger.DataRepoLog.Errorf("deleteDataFromDB: %+v", err) @@ -1436,19 +1451,43 @@ func PolicyDataUesUeIdSmDataGetProcedure(collName string, ueId string, snssai mo ) (*models.SmPolicyData, *models.ProblemDetails) { filter := bson.M{"ueId": ueId} - if !reflect.DeepEqual(snssai, models.Snssai{}) { - filter["smPolicySnssaiData."+util.SnssaiModelsToHex(snssai)] = bson.M{"$exists": true} - } - if !reflect.DeepEqual(snssai, models.Snssai{}) && dnn != "" { - dnnKey := util.EscapeDnn(dnn) - filter["smPolicySnssaiData."+util.SnssaiModelsToHex(snssai)+".smPolicyDnnData."+dnnKey] = bson.M{"$exists": true} - } - - smPolicyData, pd := getDataFromDB(collName, filter) + smPolicyData, pd := getDataFromDBWithArg(collName, filter, mongoapi.COLLATION_STRENGTH_IGNORE_CASE) if pd != nil { return nil, pd } + hex_snssai := util.SnssaiModelsToHex(snssai) + found := false + smPolicySnssaiDatas, ok := smPolicyData["smPolicySnssaiData"].(map[string]interface{}) + if !ok { + return nil, util.ProblemDetailsNotFound("DATA_NOT_FOUND") + } + for snssai, v := range smPolicySnssaiDatas { + if !strings.EqualFold(snssai, hex_snssai) { + continue + } + smPolicySnssaiData, ok := v.(map[string]interface{}) + if !ok { + break + } + smPolicyDnnDatas, ok := smPolicySnssaiData["smPolicyDnnData"].(map[string]interface{}) + if !ok { + break + } + for dnn := range smPolicyDnnDatas { + if strings.EqualFold(dnn, util.EscapeDnn(dnn)) { + found = true + break + } + } + if found { + break + } + } + if !found { + return nil, util.ProblemDetailsNotFound("DATA_NOT_FOUND") + } + var smPolicyDataResp models.SmPolicyData err := json.Unmarshal(util.MapToByte(smPolicyData), &smPolicyDataResp) if err != nil { @@ -2402,7 +2441,8 @@ func QueryProvisionedDataProcedure(ueId string, servingPlmnId string, collName = "subscriptionData.provisionedData.smData" filter = bson.M{"ueId": ueId, "servingPlmnId": servingPlmnId} - sessionManagementSubscriptionDatas, err := mongoapi.RestfulAPIGetMany(collName, filter) + sessionManagementSubscriptionDatas, err := mongoapi. + RestfulAPIGetManyWithArg(collName, filter, mongoapi.COLLATION_STRENGTH_IGNORE_CASE) if err != nil { logger.DataRepoLog.Errorf("QueryProvisionedDataProcedure get sessionManagementSubscriptionDatas err: %+v", err) return nil, openapi.ProblemDetailsSystemFailure(err.Error()) @@ -2776,7 +2816,8 @@ func QuerySmDataProcedure(collName string, ueId string, servingPlmnId string, filter["dnnConfigurations."+dnnKey] = bson.M{"$exists": true} } - sessionManagementSubscriptionDatas, err := mongoapi.RestfulAPIGetMany(collName, filter) + sessionManagementSubscriptionDatas, err := mongoapi. + RestfulAPIGetManyWithArg(collName, filter, mongoapi.COLLATION_STRENGTH_IGNORE_CASE) if err != nil { logger.DataRepoLog.Errorf("QuerySmDataProcedure err: %+v", err) return nil @@ -2913,7 +2954,7 @@ func HandleQuerySmfRegList(request *httpwrapper.Request) *httpwrapper.Response { func QuerySmfRegListProcedure(collName string, ueId string) *[]map[string]interface{} { filter := bson.M{"ueId": ueId} - smfRegList, err := mongoapi.RestfulAPIGetMany(collName, filter) + smfRegList, err := mongoapi.RestfulAPIGetManyWithArg(collName, filter, mongoapi.COLLATION_STRENGTH_IGNORE_CASE) if err != nil { logger.DataRepoLog.Errorf("QuerySmfRegListProcedure err: %+v", err) return nil From a779b3e1e9f94f6a5b58137e8b7cf73a688a6326 Mon Sep 17 00:00:00 2001 From: Tim Liu Date: Wed, 23 Aug 2023 15:52:03 +0000 Subject: [PATCH 4/5] update openapi pkg --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0e6e3d0..7deb0be 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.17 require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d github.com/evanphx/json-patch v0.5.2 - github.com/free5gc/openapi v1.0.6 + github.com/free5gc/openapi v1.0.7-0.20230802173229-2b3ded4db293 github.com/free5gc/util v1.0.5-0.20230823103219-e511c4fd20ef github.com/gin-gonic/gin v1.9.0 github.com/google/uuid v1.3.0 diff --git a/go.sum b/go.sum index bb4bdaa..bd1d989 100644 --- a/go.sum +++ b/go.sum @@ -62,8 +62,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v0.5.2 h1:xVCHIVMUu1wtM/VkR9jVZ45N3FhZfYMMYGorLCR8P3k= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/free5gc/openapi v1.0.6 h1:ytRjU/YZRI8UhKKyfajXSyGB6s1YDFkJ1weeAGJ8LXw= -github.com/free5gc/openapi v1.0.6/go.mod h1:iw/N0E+FlX44EEx24IBi2EdZW8v+bkj3ETWPGnlK9DI= +github.com/free5gc/openapi v1.0.7-0.20230802173229-2b3ded4db293 h1:BSIvKCYu7646sE8J9R1L8v2R435otUik3wOFN33csfs= +github.com/free5gc/openapi v1.0.7-0.20230802173229-2b3ded4db293/go.mod h1:iw/N0E+FlX44EEx24IBi2EdZW8v+bkj3ETWPGnlK9DI= github.com/free5gc/util v1.0.5-0.20230823103219-e511c4fd20ef h1:ne0EMnst7wbLoaY2Uvn/2Kvp/KkXKMQJcaIJQKFe+a4= github.com/free5gc/util v1.0.5-0.20230823103219-e511c4fd20ef/go.mod h1:l2Jrml4vojDomW5jdDJhIS60KdbrE9uPYhyAq/7OnF4= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= From f6273552f6ce7e60deb7a89315a6ec297e2bf344 Mon Sep 17 00:00:00 2001 From: Tim Liu Date: Sun, 1 Oct 2023 09:39:09 +0000 Subject: [PATCH 5/5] remove go 1.17 in workflows --- .github/workflows/go.yml | 2 +- .github/workflows/golangci-lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index ac73ad1..9e4fbbd 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go: [ '1.17', '1.18' ] + go: [ '1.18' ] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 4af7bb1..1169dd4 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go: [ '1.17', '1.18' ] + go: [ '1.18' ] steps: - name: Set up Go uses: actions/setup-go@v3