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 Commit(IEnumerable <Event> events)
        {
            var sql = $@"INSERT INTO {_tableName} (EntityType, EntityId, Name, Version, JsonPayload, OccurredAt)
                values(@entityType, @entityId, @name, @version, @jsonPayload, @occurredAt)";

            var items = events.Select(x => new InsertEvent
            {
                EntityId    = x.EntityId,
                EntityType  = x.EntityType,
                Name        = x.Name,
                Version     = x.Version,
                JsonPayload = x.JsonPayload,
                OccurredAt  = UnixUtcTime.ToDateTime(x.OccurredAt)
            });

            _db.UsingConnection(x =>
            {
                var t = x.BeginTransaction();
                x.Execute(sql, items, t);
                t.Commit();
            });
        }