public void Put(string id, TaskInstanceRecord obj)
        {
            var sql = @"UPDATE HomeTask.TaskInstances SET 
                            Id = @id,
                            Description = @description,
                            Status = @status,	
                            TaskId = @taskId,
                            UserId = @userId,
                            Due = @due,
                            Price = @price,
	                        IsFunded = @isFunded,
                            FundedOn = @fundedOn,
	                        FundedByUserId = @fundedByUserId,
                            UpdatedStatusAt = @updatedStatusAt,
	                        UpdatedStatusByUserId = @updatedStatusByUserId
                        WHERE Id = @id;

                        IF @@ROWCOUNT = 0
                        BEGIN
                            INSERT INTO HomeTask.TaskInstances (Id, Description, Status, TaskId, UserId, Due, Price, 
                                IsFunded, FundedOn, FundedByUserId, UpdatedStatusAt, UpdatedStatusByUserId)
                            VALUES (@id, @description, @status, @taskId, @userId, @due, @price, 
                                @isFunded, @fundedOn, @fundedByUserId, @updatedStatusAt, @updatedStatusByUserId)
                        END";

            _db.Execute(sql, new
            {
                id                    = obj.Id,
                description           = obj.Description,
                status                = obj.Status.ToString(),
                taskId                = obj.TaskId,
                userId                = obj.UserId,
                due                   = UnixUtcTime.ToDateTime(obj.Due),
                price                 = obj.Price,
                isFunded              = obj.IsFunded,
                fundedOn              = UnixUtcTime.ToDateTime(obj.FundedOn),
                fundedByUserId        = obj.FundedByUserId,
                updatedStatusAt       = UnixUtcTime.ToDateTime(obj.UpdatedStatusAt),
                updatedStatusByUserId = obj.UpdatedStatusByUserId
            });
        }
        public void TaskInstancesTable_PutGet_Works()
        {
            var sampleTask = TaskInstanceRecord.New(SampleTaskId, "Task Description", SampleUserId, Clock.UnixUtcNow, 50);

            _taskInstances.Put(sampleTask.Id, sampleTask);

            Assert.IsTrue(_taskInstances.GetAll().Any(x => x.Id.Matches(sampleTask.Id)));
            var task = _taskInstances.Get(sampleTask.Id).Value;

            Assert.AreEqual(sampleTask.Id, task.Id);
            Assert.AreEqual(sampleTask.IsFunded, task.IsFunded);
            Assert.AreEqual(sampleTask.Price, task.Price);
            Assert.AreEqual(sampleTask.Status, task.Status);
            Assert.AreEqual(sampleTask.TaskId, task.TaskId);
            Assert.AreEqual(sampleTask.UserId, task.UserId);
            Assert.AreEqual(sampleTask.UpdatedStatusAt, task.UpdatedStatusAt);
            Assert.AreEqual(sampleTask.UpdatedStatusByUserId, task.UpdatedStatusByUserId);
            Assert.AreEqual(sampleTask.Due, task.Due);
            Assert.AreEqual(sampleTask.FundedByUserId, task.FundedByUserId);
            Assert.AreEqual(sampleTask.FundedOn, task.FundedOn);

            _taskInstances.Remove(sampleTask.Id);
        }