public void insert_same_operation_returns_true()
        {
            var idem = new IdempotencyId(Guid.Empty, "mymodel");

            _db.IsDuplicateOperation(idem);
            _db.IsDuplicateOperation(idem).Should().BeTrue();
        }
        public void different_operation_returns_false()
        {
            var idem = new IdempotencyId(Guid.NewGuid(), "mymodel");

            _db.IsDuplicateOperation(idem);
            _db.IsDuplicateOperation(new IdempotencyId(Guid.NewGuid(), "mymodel")).Should().BeFalse();
            _db.IsDuplicateOperation(new IdempotencyId(idem.OperationId, "mymodel1")).Should().BeFalse();
        }
 public static bool IsDuplicateOperation(this DbConnection db, IdempotencyId data)
 {
     data.MustNotBeNull();
     try
     {
         db.Insert(new IdemStore()
         {
             Hash = data.GetStorableHash()
         });
     }
     catch (DbException ex)
     {
         if (db.IsUniqueViolation(ex))
         {
             return(true);
         }
         throw;
     }
     return(false);
 }
 public static async Task <bool> IsDuplicateOperationAsync(this DbConnection db, IdempotencyId data, CancellationToken cancel)
 {
     data.MustNotBeNull();
     try
     {
         await db.InsertAsync(new IdemStore()
         {
             Hash = data.GetStorableHash()
         }, cancel).ConfigureFalse();
     }
     catch (DbException ex)
     {
         if (db.IsUniqueViolation(ex))
         {
             return(true);
         }
         throw;
     }
     return(false);
 }