private async Task EnsureDistributedLockInfrastructureExistsAsync() { await _db.ExecuteAsync(@" if not exists (select schema_name from information_schema.schemata where schema_name = 'Cofoundry') begin exec sp_executesql N'create schema Cofoundry' end"); await _db.ExecuteAsync(@" if (not exists (select * from information_schema.tables where table_schema = 'Cofoundry' and table_name = 'DistributedLock')) begin create table Cofoundry.DistributedLock ( DistributedLockId char(6) not null, [Name] varchar(100) not null, LockingId uniqueidentifier null, LockDate datetime2(7) null, ExpiryDate datetime2(7) null, constraint PK_DistributedLock primary key (DistributedLockId) ) end"); }
public Task UnlockAsync(Guid lockingId) { var sql = @" update Cofoundry.DistributedLock set LockingId = null, LockDate = null, ExpiryDate = null where LockingId = @LockingId "; return(_db.ExecuteAsync(sql, new SqlParameter("LockingId", lockingId))); }
private Task LogUpdateSuccessAsync(string module, int version, string description) { var sql = @" insert into Cofoundry.ModuleUpdate (Module, [Version], [Description], ExecutionDate) values (@Module, @Version, @Description, @ExecutionDate)" ; return(_db.ExecuteAsync(sql, new SqlParameter("Module", module), new SqlParameter("Version", version), new SqlParameter("Description", description), new SqlParameter("ExecutionDate", DateTime.UtcNow) )); }
public async Task ExecuteAsync(ImportPermissionsCommand command) { var sb = new StringBuilder(); foreach (var permission in _permissionRepository.GetAll()) { if (permission is IEntityPermission) { var entityDefinition = ((IEntityPermission)permission).EntityDefinition; sb.AppendLine(string.Format("if not exists (select * from Cofoundry.[EntityDefinition] where EntityDefinitionCode = '{0}')", entityDefinition.EntityDefinitionCode)); sb.AppendLine("begin"); sb.AppendLine(string.Format("insert into Cofoundry.[EntityDefinition] (EntityDefinitionCode, Name) values ('{0}', '{1}')", entityDefinition.EntityDefinitionCode, entityDefinition.Name)); sb.AppendLine("end"); sb.AppendLine(string.Format("insert into Cofoundry.[Permission] (EntityDefinitionCode, PermissionCode) values ('{0}', '{1}')", entityDefinition.EntityDefinitionCode, permission.PermissionType.Code)); } else { sb.AppendLine(string.Format("insert into Cofoundry.[Permission] (PermissionCode) values ('{0}')", permission.PermissionType.Code)); } } var sql = sb.ToString(); using (var scope = _transactionScopeManager.Create(_db)) { await _db.ExecuteAsync(sql); await scope.CompleteAsync(); } }
public async Task ExecuteAsync(UpdateDbCommand command) { using (var transaction = _transactionScopeManager.Create(_db)) { await RunPreScriptAsync(command); var sqlBatches = SqlHelper.SplitIntoBatches(command.Sql); foreach (var sqlBatch in sqlBatches) { await _db.ExecuteAsync(sqlBatch); } await transaction.CompleteAsync(); } }
/// <summary> /// Unlocks the specified distributed lock, freeing it up /// for other processes to use. /// </summary> /// <param name="distributedLock"> /// The distributed lock entry to unlock. This should be the instance /// you received from a call to the LockAsync method. /// </param> public Task UnlockAsync(DistributedLock distributedLock) { if (distributedLock == null) { throw new ArgumentNullException(nameof(distributedLock)); } var sql = @" update Cofoundry.DistributedLock set LockingId = null, LockDate = null, ExpiryDate = null where LockingId = @LockingId and DistributedLockId = @DistributedLockId "; return(_db.ExecuteAsync(sql, new SqlParameter("LockingId", distributedLock.LockedByLockingId), new SqlParameter("DistributedLockId", distributedLock.DistributedLockId) )); }
public Task SetDatabaseLockedAsync(bool isLocked) { var cmd = "update Cofoundry.AutoUpdateLock set IsLocked = @IsLocked"; return(_db.ExecuteAsync(cmd, new SqlParameter("@IsLocked", isLocked))); }