Skip to content

Commit 3789555

Browse files
committed
New database engine/driver implementation
1 parent f55ba52 commit 3789555

26 files changed

+1414
-972
lines changed

.docker/.env.dist

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ POSTGRES_PORT=5432
2222
POSTGRES_USER=user
2323
POSTGRES_PASSWORD=password
2424

25-
# MySQL / MariaDB credentials.
26-
# Uncomment one of the following lines to default to MySQL or MariaDB when using ENGINE=pdo_mysql,
27-
# or explicitly prefix your phpunit command with MYSQL_HOST=mysql or MYSQL_HOST=mariadb.
28-
# MYSQL_HOST=mysql
29-
# MYSQL_HOST=mariadb
25+
# MySQL credentials.
26+
MYSQL_HOST=mysql
3027
MYSQL_PORT=3306
3128
MYSQL_USER=user
3229
MYSQL_PASSWORD=password
30+
31+
# MariaDB credentials.
32+
MARIADB_HOST=mariadb
33+
MARIADB_PORT=3306
34+
MARIADB_USER=user
35+
MARIADB_PASSWORD=password

.docker/compose.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ services:
2020
- MYSQL_PORT
2121
- MYSQL_USER
2222
- MYSQL_PASSWORD
23+
- MARIADB_HOST
24+
- MARIADB_PORT
25+
- MARIADB_USER
26+
- MARIADB_PASSWORD
2327
- GEOSOP_PATH
2428
working_dir: ${SOURCES_PATH}
2529
cap_drop:

.github/workflows/ci.yml

Lines changed: 87 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,83 @@ jobs:
2828
- name: Run Psalm
2929
run: vendor/bin/psalm --show-info=false --no-progress
3030

31-
phpunit-mysql:
32-
name: PHPUnit MySQL
31+
phpunit-geos:
32+
name: PHPUnit GEOS
33+
runs-on: ubuntu-22.04
34+
35+
strategy:
36+
matrix:
37+
php-version:
38+
- "8.2"
39+
40+
steps:
41+
- name: Checkout
42+
uses: actions/checkout@v4
43+
44+
- name: Setup PHP
45+
uses: shivammathur/setup-php@v2
46+
with:
47+
php-version: ${{ matrix.php-version }}
48+
extensions: geos
49+
coverage: xdebug
50+
51+
- name: Install composer dependencies
52+
uses: ramsey/composer-install@v3
53+
54+
- name: Run PHPUnit with coverage
55+
run: |
56+
mkdir -p build/logs
57+
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
58+
env:
59+
ENGINE: geos
60+
61+
- name: Upload coverage report to Coveralls
62+
run: vendor/bin/php-coveralls --coverage_clover=build/logs/clover.xml -v
63+
env:
64+
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65+
66+
phpunit-geosop:
67+
name: PHPUnit geosop
68+
runs-on: ubuntu-22.04
69+
70+
strategy:
71+
matrix:
72+
php-version:
73+
- "8.2"
74+
75+
steps:
76+
- name: Checkout
77+
uses: actions/checkout@v4
78+
79+
- name: Setup PHP
80+
uses: shivammathur/setup-php@v2
81+
with:
82+
php-version: ${{ matrix.php-version }}
83+
coverage: xdebug
84+
85+
- name: Install composer dependencies
86+
uses: ramsey/composer-install@v3
87+
88+
- name: Install geosop
89+
run: |
90+
sudo apt update
91+
sudo apt install geos-bin
92+
93+
- name: Run PHPUnit with coverage
94+
run: |
95+
mkdir -p build/logs
96+
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
97+
env:
98+
ENGINE: geosop
99+
GEOSOP_PATH: /usr/bin/geosop
100+
101+
- name: Upload coverage report to Coveralls
102+
run: vendor/bin/php-coveralls --coverage_clover=build/logs/clover.xml -v
103+
env:
104+
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
105+
106+
phpunit-mysql-pdo:
107+
name: PHPUnit MySQL / PDO
33108
runs-on: ubuntu-22.04
34109

35110
strategy:
@@ -70,7 +145,7 @@ jobs:
70145
- name: Run PHPUnit
71146
run: vendor/bin/phpunit
72147
env:
73-
ENGINE: pdo_mysql
148+
ENGINE: mysql_pdo
74149
MYSQL_HOST: 127.0.0.1
75150
MYSQL_USER: root
76151
MYSQL_PASSWORD: password
@@ -82,7 +157,7 @@ jobs:
82157
mkdir -p build/logs
83158
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
84159
env:
85-
ENGINE: pdo_mysql
160+
ENGINE: mysql_pdo
86161
MYSQL_HOST: 127.0.0.1
87162
MYSQL_USER: root
88163
MYSQL_PASSWORD: password
@@ -95,8 +170,8 @@ jobs:
95170
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
96171
if: ${{ matrix.php-version == env.COVERAGE_PHP_VERSION }}
97172

98-
phpunit-mariadb:
99-
name: PHPUnit MariaDB
173+
phpunit-mariadb-pdo:
174+
name: PHPUnit MariaDB / PDO
100175
runs-on: ubuntu-22.04
101176

102177
strategy:
@@ -137,7 +212,7 @@ jobs:
137212
mkdir -p build/logs
138213
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
139214
env:
140-
ENGINE: pdo_mysql
215+
ENGINE: mariadb_pdo
141216
MYSQL_HOST: 127.0.0.1
142217
MYSQL_USER: root
143218
MYSQL_PASSWORD: password
@@ -148,8 +223,8 @@ jobs:
148223
env:
149224
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
150225

151-
phpunit-postgres:
152-
name: PHPUnit PostgreSQL
226+
phpunit-postgis-pdo:
227+
name: PHPUnit PostGIS (PDO)
153228
runs-on: ubuntu-22.04
154229

155230
strategy:
@@ -185,7 +260,7 @@ jobs:
185260
mkdir -p build/logs
186261
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
187262
env:
188-
ENGINE: pdo_pgsql
263+
ENGINE: postgis_pdo
189264
POSTGRES_HOST: 127.0.0.1
190265
POSTGRES_USER: postgres
191266
POSTGRES_PASSWORD: postgres
@@ -196,7 +271,7 @@ jobs:
196271
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
197272

198273
phpunit-sqlite:
199-
name: PHPUnit SQLite
274+
name: PHPUnit SpatiaLite (SQLite3)
200275
runs-on: ubuntu-22.04
201276

202277
strategy:
@@ -227,82 +302,7 @@ jobs:
227302
mkdir -p build/logs
228303
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
229304
env:
230-
ENGINE: sqlite3
231-
232-
- name: Upload coverage report to Coveralls
233-
run: vendor/bin/php-coveralls --coverage_clover=build/logs/clover.xml -v
234-
env:
235-
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
236-
237-
phpunit-geos:
238-
name: PHPUnit GEOS
239-
runs-on: ubuntu-22.04
240-
241-
strategy:
242-
matrix:
243-
php-version:
244-
- "8.2"
245-
246-
steps:
247-
- name: Checkout
248-
uses: actions/checkout@v4
249-
250-
- name: Setup PHP
251-
uses: shivammathur/setup-php@v2
252-
with:
253-
php-version: ${{ matrix.php-version }}
254-
extensions: geos
255-
coverage: xdebug
256-
257-
- name: Install composer dependencies
258-
uses: ramsey/composer-install@v3
259-
260-
- name: Run PHPUnit with coverage
261-
run: |
262-
mkdir -p build/logs
263-
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
264-
env:
265-
ENGINE: geos
266-
267-
- name: Upload coverage report to Coveralls
268-
run: vendor/bin/php-coveralls --coverage_clover=build/logs/clover.xml -v
269-
env:
270-
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
271-
272-
phpunit-geosop:
273-
name: PHPUnit geosop
274-
runs-on: ubuntu-22.04
275-
276-
strategy:
277-
matrix:
278-
php-version:
279-
- "8.2"
280-
281-
steps:
282-
- name: Checkout
283-
uses: actions/checkout@v4
284-
285-
- name: Setup PHP
286-
uses: shivammathur/setup-php@v2
287-
with:
288-
php-version: ${{ matrix.php-version }}
289-
coverage: xdebug
290-
291-
- name: Install composer dependencies
292-
uses: ramsey/composer-install@v3
293-
294-
- name: Install geosop
295-
run: |
296-
sudo apt update
297-
sudo apt install geos-bin
298-
299-
- name: Run PHPUnit with coverage
300-
run: |
301-
mkdir -p build/logs
302-
vendor/bin/phpunit --coverage-clover build/logs/clover.xml
303-
env:
304-
ENGINE: geosop
305-
GEOSOP_PATH: /usr/bin/geosop
305+
ENGINE: spatialite_sqlite3
306306

307307
- name: Upload coverage report to Coveralls
308308
run: vendor/bin/php-coveralls --coverage_clover=build/logs/clover.xml -v

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,11 @@ all you need to do is create an additional in-memory SQLite3 database just to po
188188
- Use this bootstrap code in your project:
189189

190190
```php
191-
use Brick\Geo\Engine\Sqlite3Engine;
191+
use Brick\Geo\Engine\SpatialiteEngine;
192192

193193
$sqlite3 = new SQLite3(':memory:');
194194
$sqlite3->loadExtension('mod_spatialite.so');
195-
$geometryEngine = new Sqlite3Engine($sqlite3);
195+
$geometryEngine = new SpatialiteEngine($sqlite3);
196196
```
197197

198198
- Depending on the functions you use, you will probably need to initialize the spatial metadata by running this query:

0 commit comments

Comments
 (0)