/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="entityCacheItems">List of CkEntities for RT generation</param>
        /// <param name="graphTypesCache">The cache</param>
        /// <param name="ckCache"></param>
        public OspMutation(IEnumerable <EntityCacheItem> entityCacheItems, IGraphTypesCache graphTypesCache, ICkCache ckCache)
        {
            _ckCache = ckCache;
            foreach (var cacheItem in entityCacheItems)
            {
                var inputType  = graphTypesCache.GetOrCreateInput(cacheItem.CkId);
                var outputType = graphTypesCache.GetOrCreate(cacheItem.CkId);

                var createArgument = new QueryArgument(new NonNullGraphType(new ListGraphType(inputType)))
                {
                    Name = Statics.EntitiesArg
                };
                var updateArgument = new QueryArgument(new NonNullGraphType(new ListGraphType(new UpdateMutationDtoType <RtEntityDto>(inputType))))
                {
                    Name = Statics.EntitiesArg
                };
                var deleteArgument = new QueryArgument(new NonNullGraphType(new ListGraphType(new DeleteMutationDtoType(inputType))))
                {
                    Name = Statics.EntitiesArg
                };

                this.FieldAsync($"create{outputType.Name}s", $"Creates new entities of type '{outputType.Name}'.", new ListGraphType(outputType),
                                new QueryArguments(createArgument), resolve: ResolveCreate)
                .AddMetadata(Statics.CkId, cacheItem.CkId);

                this.FieldAsync($"update{outputType.Name}s", $"Updates existing entity of type '{outputType.Name}'.", new ListGraphType(outputType),
                                new QueryArguments(updateArgument), resolve: ResolveUpdate)
                .AddMetadata(Statics.CkId, cacheItem.CkId);

                this.FieldAsync($"delete{outputType.Name}s", $"Deletes an entity of type '{outputType.Name}'.", new BooleanGraphType(),
                                new QueryArguments(deleteArgument), resolve: ResolveDelete)
                .AddMetadata(Statics.CkId, cacheItem.CkId);
            }
        }
Exemple #2
0
        private async Task <ITenantContextInternal> CreateTenantContextAsync(IOspSession systemSession,
                                                                             ICkCache ckCache)
        {
            var databaseContext = await CreateDatabaseContextByTenantAsync(systemSession, ckCache.TenantId);

            var tenantRepository = new TenantRepository(ckCache, databaseContext);

            return(new TenantContext(ckCache.TenantId, tenantRepository, ckCache));
        }
Exemple #3
0
        public bool TryGetCkCache(string tenantId, out ICkCache ckCache)
        {
            var key = tenantId.MakeKey();

            if (_ckCaches.TryGetValue(key, out ckCache))
            {
                if (ckCache != null && !ckCache.IsDisposed)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #4
0
 public CkGraphRuleEngine(ICkCache ckCache, ITenantRepositoryInternal tenantRepository)
 {
     _ckCache          = ckCache;
     _tenantRepository = tenantRepository;
 }
Exemple #5
0
 public TenantRepository(ICkCache ckCache, IDatabaseContext databaseContext)
 {
     CkCache          = ckCache;
     _databaseContext = databaseContext;
 }
Exemple #6
0
 public TenantContext(string dataSource, ITenantRepositoryInternal tenantRepository, ICkCache ckCache)
 {
     TenantId           = dataSource;
     InternalRepository = tenantRepository;
     CkCache            = ckCache;
 }