PHPackages                             aeatech/transaction-manager-common-transactions - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. aeatech/transaction-manager-common-transactions

ActiveLibrary[Database &amp; ORM](/categories/database)

aeatech/transaction-manager-common-transactions
===============================================

Contains reusable, dialect-independent SQL transaction implementations, identifier quoting abstraction, and shared builders used across MySQL, PostgreSQL, and future AEATech Transaction Manager adapters

1.0.0(5mo ago)0242MITPHPPHP &gt;=8.2CI passing

Since Jan 11Pushed 5mo agoCompare

[ Source](https://github.com/AEATech/transaction-manager-common-transactions)[ Packagist](https://packagist.org/packages/aeatech/transaction-manager-common-transactions)[ RSS](/packages/aeatech-transaction-manager-common-transactions/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (6)Versions (2)Used By (2)

AEATech Transaction Manager --- Common SQL Transactions
=======================================================

[](#aeatech-transaction-manager-----common-sql-transactions)

[![Code Coverage](.build/coverage_badge.svg)](.build/coverage_badge.svg)

This package contains **dialect-agnostic SQL transaction implementations** shared across different database adapters of the AEATech Transaction Manager ecosystem.

It provides a unified, reusable foundation for SQL write-operations that work with **any relational database** as long as a database-specific identifier quoter is supplied.

Typical adapters are built on top of this package:

- `aeatech/transaction-manager-mysql`
- `aeatech/transaction-manager-postgresql`

This package **does not** contain any dialect-specific SQL features (e.g., `INSERT IGNORE`, `ON DUPLICATE KEY`, `ON CONFLICT`).
Those features belong to adapter-specific packages.

---

✨ Features
----------

[](#-features)

- Common SQL transaction types:
    - `InsertTransaction`
    - `UpdateTransaction`
    - `DeleteTransaction`
    - `UpdateWhenThenTransaction` (multi-row conditional updates)
    - `SqlTransaction` (raw SQL)
- Fully decoupled from any SQL dialect
- Requires an implementation of `IdentifierQuoterInterface`
    - MySQL → backtick quoter\\
    - PostgreSQL → double-quote quoter\\
- Compatible with **Transaction Manager Core** retry policy, backoff strategy, and transactional engine
- Cleanly testable in isolation

---

📦 Installation
--------------

[](#-installation)

```
composer require aeatech/transaction-manager-common-transactions
```

---

🧩 Architecture Overview
-----------------------

[](#-architecture-overview)

Each transaction class builds SQL using:

- an injected **identifier quoter**, and\\
- a dedicated **builder** (e.g., `InsertValuesBuilder`, `UpdateWhenThenDefinitionsBuilder`)

All SQL dialect specifics are delegated to adapter packages.

```
transaction-manager-core
       ↑
       │
transaction-manager-common-transactions
       ↑
       ├──────── transaction-manager-mysql
       └──────── transaction-manager-postgresql

```

---

🔧 Usage Example
---------------

[](#-usage-example)

```
use AEATech\TransactionManager\Transaction\InsertTransaction;
use AEATech\TransactionManager\MySQL\IdentifierQuoter;
use AEATech\TransactionManager\Transaction\Internal\InsertValuesBuilder;

$transaction = new InsertTransaction(
    insertValuesBuilder: new InsertValuesBuilder(),
    quoter: new IdentifierQuoter(),
    tableName: 'users',
    rows: [
        ['name' => 'Alex', 'age' => 30],
        ['name' => 'Bob',  'age' => 25],
    ],
    columnTypes: ['name' => \PDO::PARAM_STR, 'age' => \PDO::PARAM_INT],
);
```

---

🧪 Running Tests in Docker
-------------------------

[](#-running-tests-in-docker)

### Start containers

[](#start-containers)

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml up -d --build
```

### Stop and remove containers

[](#stop-and-remove-containers)

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml down -v
```

---

📥 Install dependencies (example: PHP 8.2)
-----------------------------------------

[](#-install-dependencies-example-php-82)

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.2 composer install
```

---

▶️ Run tests for a specific PHP version
---------------------------------------

[](#️-run-tests-for-a-specific-php-version)

PHP 8.2:

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.2 vendor/bin/phpunit
```

PHP 8.3:

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.3 vendor/bin/phpunit
```

PHP 8.4:

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.4 vendor/bin/phpunit
```

---

🔄 Run all configured PHP variants
---------------------------------

[](#-run-all-configured-php-variants)

```
for v in 8.2 8.3 8.4 ; do \
  echo "Testing PHP $v..."; \
  docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec -T php-cli-$v vendor/bin/phpunit || break; \
done
```

---

Run phpstan
-----------

[](#run-phpstan)

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.4 vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=1G
```

---

🧵 Attach interactive shells
---------------------------

[](#-attach-interactive-shells)

PHP 8.2:

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.2 /bin/bash
```

PHP 8.3:

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.3 /bin/bash
```

PHP 8.4:

```
docker-compose -p aeatech-transaction-manager-common-transactions -f docker/docker-compose.yml exec php-cli-8.4 /bin/bash
```

---

License
-------

[](#license)

This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance70

Regular maintenance activity

Popularity6

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

174d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/249475575?v=4)[aeatech2025](/maintainers/aeatech2025)[@aeatech2025](https://github.com/aeatech2025)

---

Top Contributors

[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")[![Shahelm](https://avatars.githubusercontent.com/u/5507279?v=4)](https://github.com/Shahelm "Shahelm (1 commits)")

---

Tags

databasemysqlpostgresqltransactionaeatechtransaction-manager

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/aeatech-transaction-manager-common-transactions/health.svg)

```
[![Health](https://phpackages.com/badges/aeatech-transaction-manager-common-transactions/health.svg)](https://phpackages.com/packages/aeatech-transaction-manager-common-transactions)
```

###  Alternatives

[davmixcool/php-dbcloud

Easily backup PostgreSql or MySql database to the cloud

111.5k](/packages/davmixcool-php-dbcloud)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
