public async Task Uninstall(string destinationKey, SqlConnection conn, SqlTransaction trans) { var leftTable = new OutboxTable(OutboxTable.Left(sourceKey, destinationKey)); var rightTable = new OutboxTable(OutboxTable.Right(sourceKey, destinationKey)); var sequence = new OutboxSequence(sourceKey, destinationKey); var linkStateTable = new LinkStateTable(sourceKey); await linkStateTable.Drop(conn, trans).ConfigureAwait(false); await leftTable.Drop(conn, trans).ConfigureAwait(false); await rightTable.Drop(conn, trans).ConfigureAwait(false); await sequence.Drop(conn, trans).ConfigureAwait(false); }
async Task <LinkState> InitializeLinkState(LinkState lockedLinkState, SqlConnection conn, SqlTransaction initTransaction) { if (!lockedLinkState.Initialized) { var initializedState = lockedLinkState.Initialize( OutboxTable.Left(sourceKey, destinationKey), OutboxTable.Right(sourceKey, destinationKey), epochSize); await initializedState.HeadSession.CreateConstraint(conn, initTransaction); await initializedState.TailSession.CreateConstraint(conn, initTransaction); await linkStateTable.Update(destinationKey, initializedState, conn, initTransaction).ConfigureAwait(false); return(initializedState); } return(lockedLinkState); }