private async Task CreateEntity(string entityName, IDictionary <string, string> properties) { var mutex = Semaphores.GetEntitySemaphore(entityName); await mutex.WaitAsync(); try { if (await _setClient.SetContains(Constants.AllEntityNamesSetKeyName, entityName)) { throw new EntityAlreadyExistsException(entityName); } foreach (var property in properties) { await _hashClient.SetHashField(Helpers.GetEntityPropertyTypesKey(entityName), property.Key, property.Value); } await _setClient.AddToSet(Constants.AllEntityNamesSetKeyName, entityName); await _stringClient.StoreValue(Helpers.GetEntityCountKey(entityName), 0.ToString()); } finally { mutex.Release(); } }
private async Task AddEntityToStore <TEntity>(string entityName, string identifier, TEntity entity) { await CheckEntityExistance(entityName); await _setClient.AddToSet(Helpers.GetEntityIdentifierCollectionKey(entityName), identifier); await _stringClient.StoreValue(Helpers.GetEntityStoreKey(entityName, identifier), entity); await _stringClient.IncrementValue(Helpers.GetEntityCountKey(entityName)); }
private async Task UpdateEntityStore(string entityName, string key, IDictionary <string, string> updatedEntityProps) { var updatedEntity = await _insertionEngine.EncodeEntity(entityName, key, updatedEntityProps); await _stringClient.StoreValue(Helpers.GetEntityStoreKey(entityName, key), updatedEntity); }