{"push_id":815611416,"size":6,"distinct_size":1,"ref":"refs/heads/master","head":"656b14702c5785789d571d4fa86103830f94e00f","before":"0aacae3f7bcb9e686a603be4fa7c84974d89b620","commits":[{"sha":"4e2717c497e63225109d174321f07f6cb7851683","author":{"email":"dc048d3202374dfda116e02a6a6cc70abb83d688@digital.cabinet-office.gov.uk","name":"Daniel Roseman"},"message":"Add factory_girl.","distinct":false,"url":"https://api.github.com/repos/alphagov/publishing-api/commits/4e2717c497e63225109d174321f07f6cb7851683"},{"sha":"16bcc0b01f95d878fd364fbd0f1cdd56d3f8ff53","author":{"email":"dc048d3202374dfda116e02a6a6cc70abb83d688@digital.cabinet-office.gov.uk","name":"Daniel Roseman"},"message":"Add Replaceable mixin.\n\nWhen updating an existing live or draft content item, the entity should be\ncompletely replaced by the new data, including blanking any fields which are\nnot supplied. This change introduces a create_or_replace method, intended to be called within a transaction, that queries for an existing item by content id and\nlocale, locks it, and completely replaces it by merging the supplied data with\nthe column defaults for that class. The version number is also updated.","distinct":false,"url":"https://api.github.com/repos/alphagov/publishing-api/commits/16bcc0b01f95d878fd364fbd0f1cdd56d3f8ff53"},{"sha":"416f95acad403c06cbc36842efcb235b5b74baad","author":{"email":"dc048d3202374dfda116e02a6a6cc70abb83d688@digital.cabinet-office.gov.uk","name":"Daniel Roseman"},"message":"Use create_or_replace in put_content commands.","distinct":false,"url":"https://api.github.com/repos/alphagov/publishing-api/commits/416f95acad403c06cbc36842efcb235b5b74baad"},{"sha":"565b76cc34eff9a13c017160b930b8fa33a98e82","author":{"email":"dc048d3202374dfda116e02a6a6cc70abb83d688@digital.cabinet-office.gov.uk","name":"Daniel Roseman"},"message":"Retry command in case of unique constraint error.\n\nIf a request to publishing API times out, the sender will often retry\nimmediately. This can lead to a case where a second INSERT is made before the\nfirst is committed, leading to a unique constraint violation.\n\nThis change attempts to retry the operation three times, in the expectation\nthat the original request will have completed and the change committed, so that\nthe second request will see the new entity and update it rather than inserting.\n\nWe explicitly roll back the transaction and replay it from the beginning.","distinct":false,"url":"https://api.github.com/repos/alphagov/publishing-api/commits/565b76cc34eff9a13c017160b930b8fa33a98e82"},{"sha":"60684a5837a7ae211c1682a6f57b1165689e4039","author":{"email":"dc048d3202374dfda116e02a6a6cc70abb83d688@digital.cabinet-office.gov.uk","name":"Daniel Roseman"},"message":"Normalize payload keys to strings and refactor.","distinct":false,"url":"https://api.github.com/repos/alphagov/publishing-api/commits/60684a5837a7ae211c1682a6f57b1165689e4039"},{"sha":"656b14702c5785789d571d4fa86103830f94e00f","author":{"email":"58cda7fab72e315083a7ecdf368192a81767adde@gmail.com","name":"Elliot Crosby-McCullough"},"message":"Merge pull request #69 from alphagov/create_or_replace\n\nCreate or replace","distinct":true,"url":"https://api.github.com/repos/alphagov/publishing-api/commits/656b14702c5785789d571d4fa86103830f94e00f"}]}