void ISubscriptionStorage.Subscribe(Address address, IEnumerable<MessageType> messageTypes) { using (var session = sessionSource.OpenSession()) using (var transaction = new TransactionScope()) { foreach (var messageType in messageTypes) { var subscription = new Subscription { SubscriberEndpoint = EncodeTo64(address.ToString()), MessageType = messageType.ToString() }; if (session.Get<Subscription>(subscription) == null) session.Save(subscription); } transaction.Complete(); session.Flush(); } }
/// <summary> /// Adds the given subscription to the DB. /// Method checks for existing subcriptions to prevent duplicates /// </summary> /// <param name="client"></param> /// <param name="messageTypes"></param> public void Subscribe(string client, IEnumerable<string> messageTypes) { using (var session = sessionSource.CreateSession()) using(var transaction = new TransactionScope()) { foreach (var messageType in messageTypes) { var subscription = new Subscription { SubscriberEndpoint = client, MessageType = messageType }; if (session.Get<Subscription>(subscription) == null) session.Save(subscription); } transaction.Complete(); session.Flush(); } }