コード例 #1
0
ファイル: AppProvider.cs プロジェクト: Jaben/squidex
        public async Task <List <IAppEntity> > GetUserAppsAsync(string userId, PermissionSet permissions)
        {
            var apps = await localCache.GetOrCreateAsync($"GetUserApps({userId})", () =>
            {
                return(indexForApps.GetAppsForUserAsync(userId, permissions));
            });

            return(apps);
        }
コード例 #2
0
ファイル: AppProvider.cs プロジェクト: erw13n/squidex
 public Task <(IAppEntity?, ISchemaEntity?)> GetAppWithSchemaAsync(DomainId appId, DomainId id)
 {
     return(localCache.GetOrCreateAsync($"GetAppWithSchemaAsync({appId}, {id})", async() =>
     {
         return await GetAppWithSchemaUncachedAsync(appId, id);
     }));
 }
コード例 #3
0
        public async Task Should_call_async_creator_once_when_context_exists()
        {
            using (sut.StartContext())
            {
                var value1 = await sut.GetOrCreateAsync("Key", () => Task.FromResult(++called));

                await Task.Delay(5);

                var value2 = await sut.GetOrCreateAsync("Key", () => Task.FromResult(++called));

                Assert.Equal(1, called);
                Assert.Equal(1, value1);
                Assert.Equal(1, value2);
            }
        }
コード例 #4
0
ファイル: AppProvider.cs プロジェクト: wensincai/squidex
        public async Task <IAppEntity?> GetAppAsync(DomainId appId, bool canCache = false)
        {
            var app = await localCache.GetOrCreateAsync(AppCacheKey(appId), () =>
            {
                return(indexForApps.GetAppAsync(appId, canCache));
            });

            if (app != null)
            {
                localCache.Add(AppCacheKey(app.Id), app);
            }

            return(app?.IsArchived == true ? null : app);
        }
コード例 #5
0
ファイル: AppProvider.cs プロジェクト: xiaopohou/squidex
        public Task <(IAppEntity, ISchemaEntity)> GetAppWithSchemaAsync(Guid appId, Guid id)
        {
            return(localCache.GetOrCreateAsync($"GetAppWithSchemaAsync({appId}, {id})", async() =>
            {
                var app = await GetAppAsync(appId);

                if (app == null)
                {
                    return (null, null);
                }

                var schema = await GetSchemaAsync(appId, id, false);

                if (schema == null)
                {
                    return (null, null);
                }

                return (app, schema);
            }));
コード例 #6
0
        public Task <(IAppEntity, ISchemaEntity)> GetAppWithSchemaAsync(Guid appId, Guid id)
        {
            return(localCache.GetOrCreateAsync($"GetAppWithSchemaAsync({appId}, {id})", async() =>
            {
                using (Profiler.TraceMethod <AppProvider>())
                {
                    var app = await grainFactory.GetGrain <IAppGrain>(appId).GetStateAsync();

                    if (!IsExisting(app))
                    {
                        return (null, null);
                    }

                    var schema = await grainFactory.GetGrain <ISchemaGrain>(id).GetStateAsync();

                    if (!IsExisting(schema, false))
                    {
                        return (null, null);
                    }

                    return (app.Value, schema.Value);
                }
            }));