(req *restful.Request, rsp *restful.Response)
| 151 | } |
| 152 | |
| 153 | func (s *UserMetaHandler) UpdateUserMetaNamespace(req *restful.Request, rsp *restful.Response) error { |
| 154 | |
| 155 | var input idm.UpdateUserMetaNamespaceRequest |
| 156 | if err := req.ReadEntity(&input); err != nil { |
| 157 | return err |
| 158 | } |
| 159 | ctx := req.Request.Context() |
| 160 | // Validate input |
| 161 | for _, ns := range input.Namespaces { |
| 162 | if !strings.HasPrefix(ns.Namespace, common.MetaNamespaceUserspacePrefix) { |
| 163 | return errors.WithMessage(errors.InvalidParameters, "user defined meta must start with "+common.MetaNamespaceUserspacePrefix+" prefix") |
| 164 | } |
| 165 | // Use the helper to validate and get definition |
| 166 | definition, e := ns.UnmarshallDefinition() |
| 167 | if e != nil { |
| 168 | return errors.WithMessagef(errors.UnmarshalError, "invalid json definition for namespace: %s, %v", ns.Namespace, e) |
| 169 | } |
| 170 | if input.Operation == idm.UpdateUserMetaNamespaceRequest_PUT { |
| 171 | fieldType := definition.GetType() |
| 172 | if fieldType != "" { |
| 173 | if definition.GetEntityId() == "" { |
| 174 | // Set description |
| 175 | var desc = "" |
| 176 | if ns.Description != "" { |
| 177 | desc = ns.Description |
| 178 | } else { |
| 179 | desc = "Entity for " + fieldType + " namespace" |
| 180 | } |
| 181 | // Its somewhat dangerous to create before namespace has been created but its more efficient than doing it after |
| 182 | entity, err := s.ServiceClient(ctx).CreateEntity(ctx, &idm.CreateEntityRequest{ |
| 183 | Entity: &idm.MetaEntity{ |
| 184 | Label: "ns-entity-" + ns.Namespace, |
| 185 | Description: desc, |
| 186 | }, |
| 187 | }) |
| 188 | if err != nil { |
| 189 | return err |
| 190 | } |
| 191 | |
| 192 | if def, ok := definition.(*idm.MetaNsDef); ok { |
| 193 | def.SetEntityId(entity.Entity.Uuid) |
| 194 | updatedJsDef, err := json.Marshal(def) |
| 195 | if err != nil { |
| 196 | return err |
| 197 | } |
| 198 | ns.JsonDefinition = string(updatedJsDef) |
| 199 | } |
| 200 | if slices.Contains(ns_with_ev, fieldType) { |
| 201 | // Create empty entity values |
| 202 | evs := []*idm.EntityValue{} |
| 203 | evs = s.parseEntityValues(definition) |
| 204 | |
| 205 | _, err := s.ServiceClient(ctx).CreateEntityValues(ctx, &idm.CreateEntityValueRequest{ |
| 206 | EntityValue: evs, |
| 207 | }) |
| 208 | if err != nil { |
| 209 | return err |
| 210 | } |
nothing calls this directly
no test coverage detected