Beispiel #1
0
        public async Task Store(object id, M model)
        {
            var idType = CascadeTypeUtils.GetCascadeIdType(typeof(M));
            var id2    = CascadeTypeUtils.ConvertTo(idType !, id);

            models[id] = model;
        }
Beispiel #2
0
        public async Task <object?> Get(object id)
        {
            var idType = CascadeTypeUtils.GetCascadeIdType(typeof(M));
            var id2    = CascadeTypeUtils.ConvertTo(idType !, id);

            models.TryGetValue(id2 !, out var result);
            return(result);
        }
Beispiel #3
0
        public async Task <IEnumerable> Query(object criteria, string key)
        {
            JsonElement?crit = criteria as JsonElement?;

            if (crit == null)
            {
                crit = JsonSerializer.SerializeToElement(criteria);
            }
            var enumerable1 = models.ToList().FindAll(idModel => {
                var model    = idModel.Value !;
                var critList = crit !.Value.EnumerateObject().All(p => {
                    var mv = model !.GetType().GetProperty(p.Name) !.GetValue(model);
                    //var v = kv.Value!.GetValue<object>();
                    var v     = GetNaturalValueFrom(p.Value);
                    var equal = CascadeTypeUtils.IsEqual(mv, v);                       //(v == null && mv == null) || (v != null && v.Equals(mv));
                    return(equal);
                });
                return(critList);
            }).ToImmutableArray();
            var enumerable2 = enumerable1.Select(k => k.Value).ToImmutableArray <M>();

            return(enumerable2);
        }