{"repo":"freerware/work","free":true,"listed":false,"github":"https://github.com/freerware/work","clone":"git clone https://github.com/freerware/work.git","description":"A compact library for tracking and committing changes to your entities.","language":"Go","stars":64,"topics":["go","golang","unitofwork","designpatterns","designpattern","design-patterns","design-pattern","unit-of-work","martin-fowler","database"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"work A compact library for tracking and committing atomic changes to your entities. [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][coverage-img]][coverage] [![Release][release-img]][release] [![License][license-img]][license] [![Blog][blog-img]][blog] What is it? work does the heavy lifting of tracking changes that your application makes to entities within a particular operation. This is accomplished by using what we refer to as a \"work unit\", which is essentially an implementation of the [Unit Of Work][uow] pattern popularized by Martin Fowler. With work units, you no longer need to write any code to track, apply, or rollback changes atomically in your application. This lets you focus on just writing the code that handles changes when they happen. Why use it? - easier management of changes to your entities. - automatic rollback of changes when chaos ensues. - centralization of save and rollback functionality. - reduced overhead when applying changes. - decoupling of code triggering changes from code that persists the changes. - production-ready logs and metrics. - works with your existing persistence layer. - automatic and configurable retries. For SQL datastores, also enjoy: - one transaction, one connection per unit. - consolidates persistence operations into three operations, regardless of the amount of entity changes. - shorter transaction times. - transaction is opened only once the unit is ready to be saved. - transaction only remains open a","default_branch":null,"files":null,"tree":[],"storefront":"/r/freerware","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/freerware/work/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}