[HttpGet("{subPath}/" + MetaSfx + "/{fieldId}")] //IEnumerable<AxEnum> public object Get(String subPath, String fieldId, [FromQuery] IntervalParameters parameters) { var errMsg = @"Resource [" + subPath + "] not found..."; bool IfLastIs(string s, string t) => (s.Substring(s.Length - t.Length) == t); bool notNull(object x) => (x != null); RequestType RequestRoute(HttpRequest req, string fld) => IfLastIs(req.Path.ToUriComponent(), "/" + MetaSfx) ? RequestType.MetadataTable : (fld != null ? RequestType.MetadataField : (req.Query.Count > 0 ? RequestType.DataFiltered : RequestType.Data) ); try { switch (RequestRoute(this.Request, fieldId)) { case RequestType.MetadataTable: return (Resp <object> .Of(contextHelper.GetMetadata(context, subPath)) .MapIf(x => x as IMetadataBase <object, string>, notNull, e => errorBuilder.ServerError(errMsg)) .Map(x => mdHelper.GetMetadataByQuery(this.Request.Query, x)) .Value); case RequestType.MetadataField: return (Resp <object> .Of(contextHelper.GetMetadataField(context, subPath, fieldId)) .MapIf(x => x as IMetadataBase <object, string>, notNull, e => errorBuilder.ServerError(errMsg)) .Map(x => mdHelper.GetMetadataByQuery(this.Request.Query, x)) .Value); case RequestType.DataFiltered: return (Resp <HttpRequest> .Of(this.Request) .Map(x => new object[] { contextHelper.ToKeyValuePairFromRequest(x) }) .MapIf(x => contextHelper.InvokeReaderMethod(context, subPath, "Get", x), notNull, e => errorBuilder.ServerError(errMsg)) .Value); case RequestType.Data: return (Resp <string> .Of(subPath) .MapIf(x => contextHelper.InvokeReaderMethod(context, x, "GetAll"), notNull, e => errorBuilder.ServerError(errMsg)) .Value); default: return(errorBuilder.ServerError(errMsg)); } } catch (Exception e) { return(errorBuilder.ServerError(e.Message)); } }
[HttpGet("enum/{enumName}/{id}")] //IEnumerable<AxEnum> public object Get(String enumName, long?id) { var errBse = @"Enumerable resource [" + enumName + "]"; var errMsg = errBse + " not found..."; bool IfLastIs(string s, string t) => (s.Substring(s.Length - t.Length) == t); bool notNull(object x) => (x != null); RequestEnumType RequestRoute(HttpRequest req, long?idv) => IfLastIs(req.Path.ToUriComponent(), "/" + MetaSfx) ? RequestEnumType.Metadata : (idv != null ? RequestEnumType.Value : RequestEnumType.Data); // TODO context.GetEnumByName(x) не устойчив к ошибкам не обрабатывает левые енумы.....уводит в эксепшн try { switch (RequestRoute(this.Request, id)) { case RequestEnumType.Data: return(Resp <string> .Of(enumName) .MapIf(x => context.GetEnumByName(x), notNull, e => errorBuilder.ServerError(errMsg)) .MapIf(x => x.Access.Reader.GetAll(), notNull, e => errorBuilder.ServerError(errBse + " not contain data...")) .Value); case RequestEnumType.Metadata: return(Resp <string> .Of(enumName) .MapIf(x => context.GetEnumByName(x), notNull, e => errorBuilder.ServerError(errMsg)) .MapIf(x => x.Metadatas.Metadata.GetAll(), notNull, e => errorBuilder.ServerError(errBse + " not contain data...")) .Value); case RequestEnumType.Value: return(Resp <string> .Of(enumName) .MapIf(x => context.GetEnumByName(x), notNull, e => errorBuilder.ServerError(errMsg)) .MapIf(x => x.Access.Reader.Find(id), notNull, e => errorBuilder.ServerError(errBse + " not found data with key:[" + id + "]...")) .Value); default: return(errorBuilder.ServerError(errMsg)); } } catch (Exception e) { return(errorBuilder.ServerError(e.Message)); } }
public object Get(String subPath, long id) { var errMsg = @"Resource [" + subPath + "] not found..."; var errMsg2 = "Key [" + id + "] of [" + subPath + "] not found"; bool notNull(object x) => (x != null); try { return(Resp <string> .Of(subPath) .If(x => contextHelper.ExistIDal(context, x), e => errorBuilder.ServerError(errMsg)) .MapIf(x => contextHelper.InvokeReaderMethod(context, x, "Find", new object[] { id }), notNull, e => errorBuilder.ServerError(errMsg2)) .Value); } catch (Exception e) { return(errorBuilder.ServerError(e.Message)); } }