All Projects → freerware → work

freerware / work

Licence: Apache-2.0 license
A compact library for tracking and committing changes to your entities.

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to work

refactoringtopatterns
A place to practice Refactoring To Patterns that Kerievsky wrote about in his book
Stars: ✭ 46 (-8%)
Mutual labels:  design-pattern, design-patterns, designpatterns, designpattern
design-patterns-for-humans-cn
Design patterns for humans 中文版 - 对设计模式超简单的解释
Stars: ✭ 2,432 (+4764%)
Mutual labels:  design-pattern, design-patterns, designpattern
When Ts
When: recombinant design pattern for state machines based on gene expression with a temporal model
Stars: ✭ 112 (+124%)
Mutual labels:  design-pattern, design-patterns
Php Patterns
A minimal and conceptual PHP 5.4+ pattern collection that *will* cover design patterns (not only GoF's), anti-patterns, closure patterns, refactoring patterns
Stars: ✭ 147 (+194%)
Mutual labels:  design-pattern, design-patterns
dotnet-design-patterns-samples
The samples of .NET design patterns
Stars: ✭ 25 (-50%)
Mutual labels:  design-pattern, design-patterns
Lld Parking Lot
Repository for low level design solution of parking lot
Stars: ✭ 27 (-46%)
Mutual labels:  design-pattern, design-patterns
Designpatterns
The 23 Gang of Four Design Patterns.
Stars: ✭ 93 (+86%)
Mutual labels:  design-pattern, design-patterns
Unitysingleton
The best way to implement singleton pattern in Unity.
Stars: ✭ 185 (+270%)
Mutual labels:  design-pattern, design-patterns
Designpatternsphp
sample code for several design patterns in PHP 8
Stars: ✭ 20,158 (+40216%)
Mutual labels:  design-pattern, design-patterns
awesome-software-architecture
A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.
Stars: ✭ 1,594 (+3088%)
Mutual labels:  design-pattern, design-patterns
Design Patterns
💼 Design patterns written in different programming languages 📐
Stars: ✭ 244 (+388%)
Mutual labels:  design-pattern, design-patterns
clean architecture typescript example
This repository provides an implementation (or at least an attempt) of Uncle Bob's Clean Architecture with Typescript.
Stars: ✭ 78 (+56%)
Mutual labels:  design-patterns, unit-of-work
Rest Api Design Guide
NBB's REST-ish API Design Guide
Stars: ✭ 643 (+1186%)
Mutual labels:  design-pattern, design-patterns
Entitas Csharp
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
Stars: ✭ 5,393 (+10686%)
Mutual labels:  design-pattern, design-patterns
Designpatterns
Project : Design Patterns Examples in C#
Stars: ✭ 1,337 (+2574%)
Mutual labels:  design-pattern, design-patterns
Daisyui
⭐️ ⭐️ ⭐️ ⭐️ ⭐️  Tailwind Components
Stars: ✭ 382 (+664%)
Mutual labels:  design-pattern, design-patterns
Unity Design Pattern
🍵 All Gang of Four Design Patterns written in Unity C# with many examples. And some Game Programming Patterns written in Unity C#. | 各种设计模式的Unity3D C#版本实现
Stars: ✭ 2,600 (+5100%)
Mutual labels:  design-pattern, design-patterns
Object Oriented Design
面向对象设计的设计原则和设计模式
Stars: ✭ 313 (+526%)
Mutual labels:  design-pattern, design-patterns
Design Patterns
Contains examples of design patterns that implemented in php
Stars: ✭ 375 (+650%)
Mutual labels:  design-pattern, design-patterns
Dpmodel
《设计模式之禅》原书源码学习
Stars: ✭ 220 (+340%)
Mutual labels:  design-pattern, design-patterns

work

A compact library for tracking and committing atomic changes to your entities.

GoDoc Build Status Coverage Status Release License 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 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 as long as it takes for the unit to be saved.
  • proper threading of context.Context with database/sql.

Release information

4.0.0-beta

  • Introduce unit package for aliasing.
    • Reduces API footprint.
    • Often "flows" better.
  • Introduce retries and related configuration.
  • Reconsolidate data mappers abstractions into single DataMapper interface.
  • Introduce MapperContext.
  • Alter Save to be context.Context aware.
  • Refactor work.NewUnit to dynamically choose which type of work unit to create based on provided options.
  • Reconsolidate uniter functionality.

3.2.0

3.0.0

  • Introduce support for Go modules.

2.x.x

  • NO LONGER SUPPORTED.

1.x.x

  • NO LONGER SUPPORTED.

Versions 1.x.x and 2.x.x are no longer supported. Please upgrade to 3.x.x+ to receive the latest and greatest features, such as lifecycle actions and concurrency support!

Dependancy Information

As of v3.0.0, the project utilizes modules. Prior to v3.0.0, the project utilized dep for dependency management.

In order to transition to modules gracefully, we adhered to the best practice recommendations authored by the Golang team.

Contribute

Want to lend us a hand? Check out our guidelines for contributing.

License

We are rocking an Apache 2.0 license for this project.

Code of Conduct

Please check out our code of conduct to get up to speed how we do things.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].