diff --git a/.gitattributes b/.gitattributes index f0d4a0a15..f43146701 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,3 +5,5 @@ core.eol=lf *.ico binary *.qm binary *.icns binary +*.dll binary +*.pdb binary diff --git a/.github/resources/my.ini b/.github/resources/my.ini new file mode 100644 index 000000000..9a80f33ff --- /dev/null +++ b/.github/resources/my.ini @@ -0,0 +1,17 @@ +[mysqld] +# The default authentication plugin to be used when connecting to the server +default_authentication_plugin=mysql_native_password + +# General logging +log-output=FILE + +general-log=0 +general-log-file="merydeye-tinyorm-ga.log" + +# Slow queries logging +slow-query-log=1 +slow-query-log-file="merydeye-tinyorm-ga-slow.log" +long-query-time=10 + +# Error Logging +log-error="merydeye-tinyorm-ga.err" diff --git a/.github/resources/qt5env.sh b/.github/resources/qt5env.sh new file mode 100644 index 000000000..70f4411c6 --- /dev/null +++ b/.github/resources/qt5env.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +QT_BASE_DIR=/opt/qt515 + +export QTDIR=$QT_BASE_DIR +export PATH=$QT_BASE_DIR/bin${PATH:+:}$PATH + +if [[ $(uname -m) == "x86_64" ]]; then + export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH +else + export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/i386-linux-gnu:$QT_BASE_DIR/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH +fi + +export PKG_CONFIG_PATH=$QT_BASE_DIR/lib/pkgconfig${PKG_CONFIG_PATH:+:}$PKG_CONFIG_PATH diff --git a/.github/resources/vcpkg-custom-triplets/x64-linux-dynamic.cmake b/.github/resources/vcpkg-custom-triplets/x64-linux-dynamic.cmake new file mode 100644 index 000000000..bb570cff0 --- /dev/null +++ b/.github/resources/vcpkg-custom-triplets/x64-linux-dynamic.cmake @@ -0,0 +1,6 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +set(VCPKG_CMAKE_SYSTEM_NAME Linux) + diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml new file mode 100644 index 000000000..209555479 --- /dev/null +++ b/.github/workflows/linux.yml @@ -0,0 +1,213 @@ +name: Linux + +on: + pull_request: + push: + branches: + - main + - gh-actions + +jobs: + + build: + name: cmake build / ctest + + runs-on: ubuntu-20.04 + + strategy: + matrix: + compiler: + - key: clang13 + apt: [ clang-13, lld, g++-11 ] + command: clang++-13 + + - key: gcc11 + apt: [ g++-11 ] + command: g++-11 + + steps: + - uses: actions/checkout@v2 + + - name: PostgreSQL start service + run: | + sudo systemctl start postgresql.service + + - name: PostgreSQL check service status + run: | + sudo systemctl status postgresql.service + pg_isready + + - name: PostgreSQL create TinyORM user + run: >- + sudo -u postgres + psql --command="CREATE USER $DB_PGSQL_USERNAME PASSWORD '$DB_PGSQL_PASSWORD'" + env: + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + + - name: PostgreSQL create TinyORM database + run: | + sudo -u postgres createdb --owner=$DB_PGSQL_USERNAME $DB_PGSQL_DATABASE + env: + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + + - name: MySQL start service + run: | + sudo systemctl start mysql.service + + - name: MySQL change TinyORM password + run: >- + mysql --host=$DB_MYSQL_HOST --user=$DB_MYSQL_USERNAME --password=$DB_MYSQL_PASSWORD_DEFAULT + --execute="ALTER USER '$DB_MYSQL_USERNAME'@'$DB_MYSQL_HOST' + IDENTIFIED BY '$DB_MYSQL_PASSWORD';" + env: + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_PASSWORD_DEFAULT: ${{ secrets.DB_MYSQL_PASSWORD_DEFAULT }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: MySQL check service status + run: >- + sudo systemctl status mysql.service + + mysqladmin --bind-address=$DB_MYSQL_HOST --user=$DB_MYSQL_USERNAME + --password=$DB_MYSQL_PASSWORD ping + env: + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: MySQL create TinyORM database + run: >- + echo " + create database if not exists $DB_MYSQL_DATABASE + default character set utf8mb4 + default collate utf8mb4_0900_ai_ci;" | + mysql --host=$DB_MYSQL_HOST --user=$DB_MYSQL_USERNAME --password=$DB_MYSQL_PASSWORD + env: + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: SQLite create TinyORM database + run: | + touch "$DB_SQLITE_DATABASE" + env: + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} + + - name: PHP disable Xdebug + run: | + sudo phpdismod -s cli xdebug + + - name: testdata composer install (illuminate/database) + uses: "ramsey/composer-install@v1" + with: + composer-options: >- + --working-dir=${{ github.workspace }}/tests/testdata + --prefer-dist --optimize-autoloader + + - name: Create and Seed tables (MySQL, PostgreSQL, SQLite) + working-directory: tests/testdata + run: | + php ./create_and_seed_database.php + env: + DB_MYSQL_CHARSET: utf8mb4 + DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + DB_PGSQL_CHARSET: utf8 + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }} + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} + + - name: add-apt-repository gcc 11 and Qt 5.15.2 + run: | + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + sudo add-apt-repository -y ppa:beineri/opt-qt-5.15.2-focal + + - name: add-apt-repository Clang 13 + if: ${{ matrix.compiler.key == 'clang13' }} + run: | + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository -y "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-13 main" + + - name: apt update + run: | + sudo apt update + + - name: apt install ${{ join(matrix.compiler.apt, ', ') }}, Qt 5.15.2 base, and ccache + run: | + sudo apt install -y ${{ join(matrix.compiler.apt, ' ') }} qt515base ccache + + - name: ninja install latest version + uses: seanmiddleditch/gha-setup-ninja@master + with: + destination: ${{ runner.workspace }}/../ninja-build + + - name: TinyORM create build folder (${{ matrix.compiler.key }}-cmake-debug) + run: | + mkdir -p ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + + - name: ccache setup 🕺 + uses: Chocobo1/setup-ccache-action@v1 + with: + install_ccache: false + update_packager_index: false + ccache_options: | + compression = false + max_size = 3G + + # Doesn't work in the manifest mode, I'm using header library only (range-v3) so does not matter + # for now, I leave it here anyway. + - name: vcpkg set default triplet to x64-linux-dynamic + run: | + echo 'VCPKG_OVERLAY_TRIPLETS=${{ github.workspace }}/.github/resources/vcpkg-custom-triplets' \ + >> $GITHUB_ENV + echo 'VCPKG_DEFAULT_TRIPLET=x64-linux-dynamic' >> $GITHUB_ENV + + - name: TinyORM cmake configure (${{ matrix.compiler.key }}-cmake-debug) + run: >- + source .github/resources/qt5env.sh + + cmake + -S . + -B ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + -G Ninja + -D CMAKE_CXX_COMPILER:FILEPATH="${{ env.ccache_symlinks_path }}/${{ matrix.compiler.command }}" + -D CMAKE_TOOLCHAIN_FILE:FILEPATH="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" + -D CMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON + -D CMAKE_BUILD_TYPE:BOOL=Debug + -D VERBOSE_CONFIGURE:BOOL=ON + -D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF + -D MYSQL_PING:BOOL=ON + -D BUILD_TESTS:BOOL=ON + + - name: TinyORM cmake build ✨ (${{ matrix.compiler.key }}-cmake-debug) + run: >- + source .github/resources/qt5env.sh + + cmake --build ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + --target all --parallel 2 + + - name: TinyORM execute ctest 🔥 + working-directory: ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + run: ctest + env: + DB_MYSQL_CHARSET: utf8mb4 + DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + DB_PGSQL_CHARSET: utf8 + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }} + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml new file mode 100644 index 000000000..9b9904661 --- /dev/null +++ b/.github/workflows/mingw.yml @@ -0,0 +1,221 @@ +name: MSYS2 UCRT64 + +on: + pull_request: + push: + branches: + - main + - gh-actions + +jobs: + + build: + name: cmake build / ctest + + runs-on: windows-2022 + + strategy: + matrix: + compiler: + - key: clang + pacboy: [ 'clang:u', 'gcc:u' ] + command: clang++.exe + + - key: gcc + pacboy: [ 'gcc:u' ] + command: g++.exe + + steps: + - uses: actions/checkout@v2 + + - name: PostgreSQL start service + run: | + Set-Service -Name postgresql-x64-14 -StartupType Manual + Start-Service postgresql-x64-14 + + - name: PostgreSQL add on the $env:Path + run: | + Write-Output "$env:PGBIN" | Out-File -FilePath $env:GITHUB_PATH -Append + + - name: PostgreSQL check service status + run: | + $pgsqlService = Get-Service postgresql-x64-14 + Write-Output $pgsqlService + $pgsqlService.status.ToString() -ceq "Running" ` + -or $(throw 'postgresql-x64-14 service is not running') > $null + pg_isready.exe + + - name: PostgreSQL create TinyORM user + run: >- + psql.exe + --command="CREATE USER ${env:DB_PGSQL_USERNAME} PASSWORD '${env:DB_PGSQL_PASSWORD}'" + env: + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + + - name: PostgreSQL create TinyORM database + run: | + createdb.exe --owner=$env:DB_PGSQL_USERNAME $env:DB_PGSQL_DATABASE + env: + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + + - name: MySQL create data folder + run: | + New-Item -Type Directory '${{ runner.workspace }}/../mysql/data' + + - name: MySQL initialize server and install/start service + run: | + Copy-Item .github/resources/my.ini C:/mysql + mysqld.exe --initialize-insecure --console --datadir='${{ runner.workspace }}/../mysql/data' + mysqld.exe --install MySQL --datadir='${{ runner.workspace }}/../mysql/data' + Start-Service MySQL + + - name: MySQL change TinyORM password + run: >- + mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME --skip-password + --execute="ALTER USER '${env:DB_MYSQL_USERNAME}'@'${env:DB_MYSQL_HOST}' + IDENTIFIED BY '${env:DB_MYSQL_PASSWORD}';" + env: + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: MySQL check service status + run: | + $mysqlService = Get-Service MySQL + Write-Output $mysqlService + $mysqlService.status.ToString() -ceq "Running" ` + -or $(throw 'MySQL service is not running') > $null + mysqladmin.exe --bind-address=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME ` + --password=$env:DB_MYSQL_PASSWORD ping + env: + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: MySQL create TinyORM database + run: >- + echo " + create database if not exists $env:DB_MYSQL_DATABASE + default character set utf8mb4 + default collate utf8mb4_0900_ai_ci;" | + mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME + --password=$env:DB_MYSQL_PASSWORD + env: + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: SQLite create TinyORM database + run: | + touch "$env:DB_SQLITE_DATABASE" + env: + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} + + - name: PHP enable PDO extensions (pdo_mysql, pdo_pgsql, pdo_sqlite) + run: | + Add-Content -Path "${env:PHPROOT}/php.ini" -Value ` + "[PHP] + extension=pdo_mysql + extension=pdo_pgsql + extension=pdo_sqlite + " + + - name: testdata composer install (illuminate/database) + uses: "ramsey/composer-install@v1" + with: + composer-options: >- + --working-dir=${{ github.workspace }}/tests/testdata + --prefer-dist --optimize-autoloader + + - name: Create and Seed tables (MySQL, PostgreSQL, SQLite) + working-directory: tests/testdata + run: | + php.exe ./create_and_seed_database.php + env: + DB_MYSQL_CHARSET: utf8mb4 + DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + DB_PGSQL_CHARSET: utf8 + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }} + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} + + - name: TinyORM create build folder (${{ matrix.compiler.key }}-cmake-debug) + run: | + mkdir -p ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + + - name: | + MSYS2 UCRT64 setup (${{ join(matrix.compiler.pacboy, ', ') }}, lld:u, qt5-base:u, ccache:u) + uses: msys2/setup-msys2@v2 + with: + msystem: ucrt64 + path-type: minimal + update: true + install: | + git + pacboy: >- + ${{ join(matrix.compiler.pacboy, ' ') }} lld:u + cmake:u ninja:u ccache:u + qt5-base:u + libmariadbclient:u postgresql:u + + - name: ccache setup 🕺 + uses: Chocobo1/setup-ccache-action@v1 + with: + windows_compile_environment: msys2 + prepend_symlinks_to_path: false + install_ccache: false + update_packager_index: false + ccache_options: | + compression = false + max_size = 3G + + - name: TinyORM cmake configure (${{ matrix.compiler.key }}-cmake-debug) + shell: msys2 {0} + run: >- + cmake + -S . + -B ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + -G Ninja + -D CMAKE_CXX_COMPILER_LAUNCHER=ccache.exe + -D CMAKE_CXX_COMPILER:FILEPATH=/ucrt64/bin/${{ matrix.compiler.command }} + -D CMAKE_TOOLCHAIN_FILE:FILEPATH="$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" + -D CMAKE_DISABLE_PRECOMPILE_HEADERS:BOOL=ON + -D CMAKE_BUILD_TYPE:BOOL=Debug + -D VERBOSE_CONFIGURE:BOOL=ON + -D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF + -D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF + -D MYSQL_PING:BOOL=ON + -D BUILD_TESTS:BOOL=ON + + - name: TinyORM cmake build ✨ (${{ matrix.compiler.key }}-cmake-debug) + shell: msys2 {0} + run: >- + cmake --build ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + --target all --parallel ${{ matrix.compiler.key == 'gcc' && 1 || 2 }} + + - name: TinyORM execute ctest 🔥 + shell: msys2 {0} + working-directory: ../TinyORM-builds-cmake/build-${{ matrix.compiler.key }}-cmake-debug + run: ctest + env: + DB_MYSQL_CHARSET: utf8mb4 + DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + DB_PGSQL_CHARSET: utf8 + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }} + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} diff --git a/.github/workflows/msvc.yml b/.github/workflows/msvc.yml new file mode 100644 index 000000000..4c27c73f2 --- /dev/null +++ b/.github/workflows/msvc.yml @@ -0,0 +1,215 @@ +name: MSVC + +on: + pull_request: + push: + branches: + - main + - gh-actions + +jobs: + + build: + name: cmake build / ctest + + runs-on: windows-2019 + + steps: + - uses: actions/checkout@v2 + + - name: PostgreSQL start service + run: | + Set-Service -Name postgresql-x64-14 -StartupType Manual + Start-Service postgresql-x64-14 + + - name: PostgreSQL add on the $env:Path + run: | + Write-Output "$env:PGBIN" | Out-File -FilePath $env:GITHUB_PATH -Append + + - name: PostgreSQL check service status + run: | + $pgsqlService = Get-Service postgresql-x64-14 + Write-Output $pgsqlService + $pgsqlService.status.ToString() -ceq "Running" ` + -or $(throw 'postgresql-x64-14 service is not running') > $null + pg_isready.exe + + - name: PostgreSQL create TinyORM user + run: >- + psql.exe + --command="CREATE USER ${env:DB_PGSQL_USERNAME} PASSWORD '${env:DB_PGSQL_PASSWORD}'" + env: + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + + - name: PostgreSQL create TinyORM database + run: | + createdb.exe --owner=$env:DB_PGSQL_USERNAME $env:DB_PGSQL_DATABASE + env: + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + + - name: Remove C:\mysql\bin from $env:Path + run: | + Rename-Item -Path C:\mysql -NewName C:\mysql.bak + + - name: choco install mysql (MySQL 8) + run: >- + choco install mysql -y --no-progress + --params "/port:3306 /serviceName:MySQL + /dataLocation:'$(Resolve-Path ${{ runner.workspace }}/../)'" + + Write-Output 'C:\tools\mysql\current\lib;C:\tools\mysql\current\bin' | + Out-File -FilePath $env:GITHUB_PATH -Append + + - name: MySQL change TinyORM password + run: >- + mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME --skip-password + --execute="ALTER USER '${env:DB_MYSQL_USERNAME}'@'${env:DB_MYSQL_HOST}' + IDENTIFIED BY '${env:DB_MYSQL_PASSWORD}';" + env: + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: MySQL check service status + run: | + $mysqlService = Get-Service MySQL + Write-Output $mysqlService + $mysqlService.status.ToString() -ceq "Running" ` + -or $(throw 'MySQL service is not running') > $null + mysqladmin.exe --bind-address=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME ` + --password=$env:DB_MYSQL_PASSWORD ping + env: + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: MySQL create TinyORM database + run: >- + echo " + create database if not exists $env:DB_MYSQL_DATABASE + default character set utf8mb4 + default collate utf8mb4_0900_ai_ci;" | + mysql.exe --host=$env:DB_MYSQL_HOST --user=$env:DB_MYSQL_USERNAME + --password=$env:DB_MYSQL_PASSWORD + env: + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + + - name: SQLite create TinyORM database + run: | + touch "$env:DB_SQLITE_DATABASE" + env: + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} + + - name: PHP enable PDO extensions (pdo_mysql, pdo_pgsql, pdo_sqlite) + run: | + Add-Content -Path "${env:PHPROOT}/php.ini" -Value ` + "[PHP] + extension=pdo_mysql + extension=pdo_pgsql + extension=pdo_sqlite + " + + - name: testdata composer install (illuminate/database) + uses: "ramsey/composer-install@v1" + with: + composer-options: >- + --working-dir=${{ github.workspace }}/tests/testdata + --prefer-dist --optimize-autoloader + + - name: Create and Seed tables (MySQL, PostgreSQL, SQLite) + working-directory: tests/testdata + run: | + php.exe ./create_and_seed_database.php + env: + DB_MYSQL_CHARSET: utf8mb4 + DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + DB_PGSQL_CHARSET: utf8 + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }} + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} + + - name: TinyORM create build folder (msvc-cmake-debug) + run: | + mkdir -p ../TinyORM-builds-cmake/build-msvc-cmake-debug + + - name: Qt 5.15.2 install base components + uses: jurplel/install-qt-action@v2 + with: + version: 5.15.2 + arch: win64_msvc2019_64 + setup-python: false + extra: --external 7z.exe + dir: '${{ runner.workspace }}/../' + + - name: QMYSQL install driver dlls (Qt 5.15.2) + working-directory: ${{ runner.temp }} + run: >- + $response = Invoke-WebRequest -Uri $env:DOWNLOAD_QMYSQL_DLLS + + $filename = [System.Net.Mime.ContentDisposition]::new( + $response.Headers['Content-Disposition']).FileName + + $filepath = Join-Path -Path $(Resolve-Path -Path .) -ChildPath $filename + + $response | Select-Object -ExpandProperty Content | + Set-Content -Path $filepath -AsByteStream + + 7z.exe x -o"${env:QT_PLUGIN_PATH}/sqldrivers" $filepath + env: + DOWNLOAD_QMYSQL_DLLS: ${{ secrets.DOWNLOAD_QMYSQL_DLLS }} + + - name: vcpkg set default triplet to x64-windows + run: >- + Write-Output 'VCPKG_DEFAULT_TRIPLET=x64-windows' | + Out-File -FilePath $env:GITHUB_ENV -Append + + - name: Visual Studio 2019 pwsh shell setup + uses: egor-tensin/vs-shell@v2 + with: + arch: x64 + + - name: TinyORM cmake configure (msvc-cmake-debug) + run: >- + cmake + -S . + -B ../TinyORM-builds-cmake/build-msvc-cmake-debug + -G Ninja + -D CMAKE_TOOLCHAIN_FILE:FILEPATH="${env:VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" + -D CMAKE_BUILD_TYPE:BOOL=Debug + -D VERBOSE_CONFIGURE:BOOL=ON + -D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF + -D MATCH_EQUAL_EXPORTED_BUILDTREE:BOOL=OFF + -D MYSQL_PING:BOOL=ON + -D BUILD_TESTS:BOOL=ON + + - name: TinyORM cmake build ✨ (msvc-cmake-debug) + run: >- + cmake --build ../TinyORM-builds-cmake/build-msvc-cmake-debug --target all --parallel 2 + + - name: TinyORM execute ctest 🔥 + working-directory: ../TinyORM-builds-cmake/build-msvc-cmake-debug + run: ctest + env: + DB_MYSQL_CHARSET: utf8mb4 + DB_MYSQL_COLLATION: utf8mb4_0900_ai_ci + DB_MYSQL_DATABASE: ${{ secrets.DB_MYSQL_DATABASE }} + DB_MYSQL_HOST: ${{ secrets.DB_MYSQL_HOST }} + DB_MYSQL_PASSWORD: ${{ secrets.DB_MYSQL_PASSWORD }} + DB_MYSQL_USERNAME: ${{ secrets.DB_MYSQL_USERNAME }} + DB_PGSQL_CHARSET: utf8 + DB_PGSQL_DATABASE: ${{ secrets.DB_PGSQL_DATABASE }} + DB_PGSQL_HOST: ${{ secrets.DB_PGSQL_HOST }} + DB_PGSQL_PASSWORD: ${{ secrets.DB_PGSQL_PASSWORD }} + DB_PGSQL_USERNAME: ${{ secrets.DB_PGSQL_USERNAME }} + DB_SQLITE_DATABASE: ${{ runner.temp }}/${{ secrets.DB_SQLITE_DATABASE }} diff --git a/NOTES.txt b/NOTES.txt index 7c06df558..a72113467 100644 --- a/NOTES.txt +++ b/NOTES.txt @@ -77,6 +77,7 @@ Features related/to implement: - dilemma primarykey : different types for primary keys - expression : DB::raw() support in the query builder - events : event system + - ga : github actions - guarded : related to the mass assignable feature - json columns : JSON support - logging : logging related diff --git a/cmake/CommonModules/TinyCommon.cmake b/cmake/CommonModules/TinyCommon.cmake index d6198c42b..114bfff16 100644 --- a/cmake/CommonModules/TinyCommon.cmake +++ b/cmake/CommonModules/TinyCommon.cmake @@ -145,6 +145,11 @@ ${TINY_UNPARSED_ARGUMENTS}") endif() endif() + # Use faster lld linker on Clang + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_link_options(${target} INTERFACE -fuse-ld=lld) + endif() + # Use 64-bit off_t on 32-bit Linux, ensure 64bit offsets are used for filesystem # accesses for 32bit compilation if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SIZEOF_VOID_P EQUAL 4) diff --git a/include/orm/tiny/model.hpp b/include/orm/tiny/model.hpp index 25ff46a46..82e36310e 100644 --- a/include/orm/tiny/model.hpp +++ b/include/orm/tiny/model.hpp @@ -121,6 +121,8 @@ namespace Relations // CUR divide Query Builder and TinyOrm to own packages? think about it 🤔 silverqx // BUG clang on mingw inline static initialization with another static in the same class defined line before, all other compilers (on linux too) works silverqx // CUR unify default/non-default ctors comment silverqx + // CUR discard common settings in tests/conf.pri, then qmake project will compile only if /conf.pri will be set, less manual configurations for users is still better silverqx + // CUR cmake when MYSQL_PING is on and QMYSQL driver is not build ctest fails, fail configure? I don't knwo how I will solve this for now, also fix qmake silverqx /*! Base model class. */ template class Model : diff --git a/tests/auto/functional/orm/databasemanager/tst_databasemanager.cpp b/tests/auto/functional/orm/databasemanager/tst_databasemanager.cpp index abce96edd..e5d1ed033 100644 --- a/tests/auto/functional/orm/databasemanager/tst_databasemanager.cpp +++ b/tests/auto/functional/orm/databasemanager/tst_databasemanager.cpp @@ -7,18 +7,19 @@ #include "databases.hpp" using Orm::Constants::charset_; -using Orm::Constants::collation_; using Orm::Constants::database_; using Orm::Constants::driver_; using Orm::Constants::H127001; using Orm::Constants::host_; -using Orm::Constants::P3306; +using Orm::Constants::P5432; using Orm::Constants::password_; using Orm::Constants::port_; -using Orm::Constants::QMYSQL; -using Orm::Constants::ROOT; +using Orm::Constants::PUBLIC; +using Orm::Constants::QPSQL; +using Orm::Constants::schema_; using Orm::Constants::username_; -using Orm::Constants::UTF8MB4; +using Orm::Constants::UTF8; + using Orm::DatabaseManager; using Orm::Support::DatabaseConfiguration; @@ -47,32 +48,32 @@ void tst_DatabaseManager::removeConnection_Connected() const { // Skip autotest if all env. variables are empty const std::vector envVariables { - "DB_MYSQL_HOST", "DB_MYSQL_PORT", "DB_MYSQL_DATABASE", "DB_MYSQL_USERNAME", - "DB_MYSQL_PASSWORD", "DB_MYSQL_CHARSET", "DB_MYSQL_COLLATION" + "DB_PGSQL_HOST", "DB_PGSQL_PORT", "DB_PGSQL_DATABASE", "DB_PGSQL_SCHEMA", + "DB_PGSQL_USERNAME", "DB_PGSQL_PASSWORD", "DB_PGSQL_CHARSET" }; if (TestUtils::Databases::allEnvVariablesEmpty(envVariables)) - QSKIP("Autotest skipped because DB_MYSQL_* environment variables for MySQL " + QSKIP("Autotest skipped because DB_PGSQL_* environment variables for PostgreSQL " "connection were not defined.", ); const auto connectionName = QStringLiteral( - "tinyorm_mysql_tests-tst_DatabaseMannager-removeConnection_Connected"); - const auto databaseName = qEnvironmentVariable("DB_MYSQL_DATABASE", ""); - const auto driverName = QMYSQL; + "tinyorm_pgsql_tests-tst_DatabaseMannager-removeConnection_Connected"); + const auto databaseName = qEnvironmentVariable("DB_PGSQL_DATABASE", ""); + const auto driverName = QPSQL; // Create database connection m_dm->addConnections({ {connectionName, { - {driver_, driverName}, - {host_, qEnvironmentVariable("DB_MYSQL_HOST", H127001)}, - {port_, qEnvironmentVariable("DB_MYSQL_PORT", P3306)}, - {database_, databaseName}, - {username_, qEnvironmentVariable("DB_MYSQL_USERNAME", ROOT)}, - {password_, qEnvironmentVariable("DB_MYSQL_PASSWORD", "")}, - {charset_, qEnvironmentVariable("DB_MYSQL_CHARSET", UTF8MB4)}, - {collation_, qEnvironmentVariable("DB_MYSQL_COLLATION", - QStringLiteral("utf8mb4_0900_ai_ci"))}, + {driver_, driverName}, + {host_, qEnvironmentVariable("DB_PGSQL_HOST", H127001)}, + {port_, qEnvironmentVariable("DB_PGSQL_PORT", P5432)}, + {database_, databaseName}, + {schema_, qEnvironmentVariable("DB_PGSQL_SCHEMA", PUBLIC)}, + {username_, qEnvironmentVariable("DB_PGSQL_USERNAME", + QStringLiteral("postgres"))}, + {password_, qEnvironmentVariable("DB_PGSQL_PASSWORD", "")}, + {charset_, qEnvironmentVariable("DB_PGSQL_CHARSET", UTF8)}, }}, // Don't setup any default connection }, ""); @@ -103,10 +104,12 @@ void tst_DatabaseManager::removeConnection_Connected() const void tst_DatabaseManager::removeConnection_NotConnected() const { - const auto connectionName = QStringLiteral("dummy_connection"); + const auto connectionName = + QStringLiteral( + "tinyorm_pgsql_tests-tst_DatabaseMannager-removeConnection_NotConnected"); m_dm->addConnection({ - {driver_, QMYSQL}, + {driver_, QPSQL}, {host_, "example.com"}, }, connectionName); diff --git a/tests/testdata/composer.json b/tests/testdata/composer.json index d88ffeb11..c59ddfc45 100644 --- a/tests/testdata/composer.json +++ b/tests/testdata/composer.json @@ -4,12 +4,17 @@ "description": "Create and seed databases for TinyORM tests.", "keywords": [ "database", - "seed" + "seed", + "tinyorm" ], "license": "MIT", "require": { "php": "^8.0", - "ext-pdo": "*", + "ext-pdo": "^8.0", + "ext-pdo_mysql": "^8.0", + "ext-pdo_pgsql": "^8.0", + "ext-pdo_sqlite": "^8.0", + "illuminate/database": "^8.33" } } diff --git a/tests/testdata/composer.lock b/tests/testdata/composer.lock index 880d9e9e7..47b8b2dad 100644 --- a/tests/testdata/composer.lock +++ b/tests/testdata/composer.lock @@ -4,38 +4,34 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3fabf98d43b049bc1f899f75f61d627b", + "content-hash": "15609a9e5af7cb440e86cea314fab3ba", "packages": [ { "name": "doctrine/inflector", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^7.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-strict-rules": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" @@ -83,7 +79,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.x" + "source": "https://github.com/doctrine/inflector/tree/2.0.4" }, "funding": [ { @@ -99,20 +95,20 @@ "type": "tidelift" } ], - "time": "2020-05-29T15:13:26+00:00" + "time": "2021-10-22T20:16:43+00:00" }, { "name": "illuminate/collections", - "version": "v8.33.0", + "version": "v8.73.2", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "d7cc717a00064b40fa63a8ad522042005e1de1ed" + "reference": "bfb57bc1863689058706eb41287b7ad523d74403" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/d7cc717a00064b40fa63a8ad522042005e1de1ed", - "reference": "d7cc717a00064b40fa63a8ad522042005e1de1ed", + "url": "https://api.github.com/repos/illuminate/collections/zipball/bfb57bc1863689058706eb41287b7ad523d74403", + "reference": "bfb57bc1863689058706eb41287b7ad523d74403", "shasum": "" }, "require": { @@ -153,20 +149,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-03-08T17:22:22+00:00" + "time": "2021-11-15T14:44:56+00:00" }, { "name": "illuminate/container", - "version": "v8.33.0", + "version": "v8.73.2", "source": { "type": "git", "url": "https://github.com/illuminate/container.git", - "reference": "6d7b2a3a3d430c27b90b6b336520e00e5c0f8354" + "reference": "6ac391bb27391706c5f921b85060aa2c4ca03fae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/container/zipball/6d7b2a3a3d430c27b90b6b336520e00e5c0f8354", - "reference": "6d7b2a3a3d430c27b90b6b336520e00e5c0f8354", + "url": "https://api.github.com/repos/illuminate/container/zipball/6ac391bb27391706c5f921b85060aa2c4ca03fae", + "reference": "6ac391bb27391706c5f921b85060aa2c4ca03fae", "shasum": "" }, "require": { @@ -204,20 +200,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-03-11T03:45:11+00:00" + "time": "2021-11-17T15:04:30+00:00" }, { "name": "illuminate/contracts", - "version": "v8.33.0", + "version": "v8.73.2", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b" + "reference": "b0886ec05a63b204634d64d0b39d5b78a7c06f81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b", - "reference": "121cea1d8b8772bc7fee99c71ecf0f57c1d77b3b", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/b0886ec05a63b204634d64d0b39d5b78a7c06f81", + "reference": "b0886ec05a63b204634d64d0b39d5b78a7c06f81", "shasum": "" }, "require": { @@ -252,20 +248,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-03-12T14:45:30+00:00" + "time": "2021-11-17T15:04:30+00:00" }, { "name": "illuminate/database", - "version": "v8.36.2", + "version": "v8.73.2", "source": { "type": "git", "url": "https://github.com/illuminate/database.git", - "reference": "41d31456142be497c4e6abd40b674be0162934b1" + "reference": "f93e5370a3d321de697755f185395bdf75e0ccc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/database/zipball/41d31456142be497c4e6abd40b674be0162934b1", - "reference": "41d31456142be497c4e6abd40b674be0162934b1", + "url": "https://api.github.com/repos/illuminate/database/zipball/f93e5370a3d321de697755f185395bdf75e0ccc4", + "reference": "f93e5370a3d321de697755f185395bdf75e0ccc4", "shasum": "" }, "require": { @@ -279,7 +275,7 @@ "symfony/console": "^5.1.4" }, "suggest": { - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6|^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "illuminate/console": "Required to use the database commands (^8.0).", "illuminate/events": "Required to use the observers with Eloquent (^8.0).", @@ -320,20 +316,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-04-06T19:21:01+00:00" + "time": "2021-11-23T14:10:34+00:00" }, { "name": "illuminate/macroable", - "version": "v8.33.0", + "version": "v8.73.2", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", - "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05" + "reference": "aed81891a6e046fdee72edd497f822190f61c162" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/macroable/zipball/300aa13c086f25116b5f3cde3ca54ff5c822fb05", - "reference": "300aa13c086f25116b5f3cde3ca54ff5c822fb05", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/aed81891a6e046fdee72edd497f822190f61c162", + "reference": "aed81891a6e046fdee72edd497f822190f61c162", "shasum": "" }, "require": { @@ -366,20 +362,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2020-10-27T15:20:30+00:00" + "time": "2021-11-16T13:57:03+00:00" }, { "name": "illuminate/support", - "version": "v8.33.0", + "version": "v8.73.2", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "520dcf5aa7631723fe6343afbeba777c102c98ae" + "reference": "ecb4d4fb01f9716b2decbb1bf584ea8164c3b222" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/520dcf5aa7631723fe6343afbeba777c102c98ae", - "reference": "520dcf5aa7631723fe6343afbeba777c102c98ae", + "url": "https://api.github.com/repos/illuminate/support/zipball/ecb4d4fb01f9716b2decbb1bf584ea8164c3b222", + "reference": "ecb4d4fb01f9716b2decbb1bf584ea8164c3b222", "shasum": "" }, "require": { @@ -389,7 +385,7 @@ "illuminate/collections": "^8.0", "illuminate/contracts": "^8.0", "illuminate/macroable": "^8.0", - "nesbot/carbon": "^2.31", + "nesbot/carbon": "^2.53.1", "php": "^7.3|^8.0", "voku/portable-ascii": "^1.4.8" }, @@ -398,8 +394,8 @@ }, "suggest": { "illuminate/filesystem": "Required to use the composer class (^8.0).", - "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3).", - "ramsey/uuid": "Required to use Str::uuid() (^4.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", + "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", "symfony/process": "Required to use the composer class (^5.1.4).", "symfony/var-dumper": "Required to use the dd function (^5.1.4).", "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)." @@ -434,31 +430,33 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-03-15T13:43:13+00:00" + "time": "2021-11-23T14:10:18+00:00" }, { "name": "nesbot/carbon", - "version": "2.46.0", + "version": "2.54.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4" + "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", - "reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/eed83939f1aed3eee517d03a33f5ec587ac529b5", + "reference": "eed83939f1aed3eee517d03a33f5ec587ac529b5", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", @@ -472,8 +470,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev", - "dev-3.x": "3.x-dev" + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -499,15 +497,15 @@ { "name": "Brian Nesbitt", "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "homepage": "https://markido.com" }, { "name": "kylekatarnls", - "homepage": "http://github.com/kylekatarnls" + "homepage": "https://github.com/kylekatarnls" } ], "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "http://carbon.nesbot.com", + "homepage": "https://carbon.nesbot.com", "keywords": [ "date", "datetime", @@ -527,24 +525,24 @@ "type": "tidelift" } ], - "time": "2021-02-24T17:30:44+00:00" + "time": "2021-11-01T21:22:20+00:00" }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -573,9 +571,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/simple-cache", @@ -630,23 +628,24 @@ }, { "name": "symfony/console", - "version": "v5.2.5", + "version": "v5.3.11", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "938ebbadae1b0a9c9d1ec313f87f9708609f1b79" + "reference": "3e7ab8f5905058984899b05a4648096f558bfeba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/938ebbadae1b0a9c9d1ec313f87f9708609f1b79", - "reference": "938ebbadae1b0a9c9d1ec313f87f9708609f1b79", + "url": "https://api.github.com/repos/symfony/console/zipball/3e7ab8f5905058984899b05a4648096f558bfeba", + "reference": "3e7ab8f5905058984899b05a4648096f558bfeba", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2", "symfony/string": "^5.1" }, @@ -658,10 +657,10 @@ "symfony/process": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "~1.0", + "psr/log": "^1|^2", "symfony/config": "^4.4|^5.0", "symfony/dependency-injection": "^4.4|^5.0", "symfony/event-dispatcher": "^4.4|^5.0", @@ -707,7 +706,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.2.5" + "source": "https://github.com/symfony/console/tree/v5.3.11" }, "funding": [ { @@ -723,20 +722,87 @@ "type": "tidelift" } ], - "time": "2021-03-06T13:42:15+00:00" + "time": "2021-11-21T19:41:05+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-12T14:48:14+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", "shasum": "" }, "require": { @@ -748,7 +814,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -786,7 +852,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" }, "funding": [ { @@ -802,20 +868,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.22.1", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", - "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", "shasum": "" }, "require": { @@ -827,7 +893,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -867,7 +933,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" }, "funding": [ { @@ -883,20 +949,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { @@ -908,7 +974,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -951,7 +1017,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" }, "funding": [ { @@ -967,20 +1033,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.1", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "shasum": "" }, "require": { @@ -992,7 +1058,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1031,7 +1097,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" }, "funding": [ { @@ -1047,20 +1113,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", "shasum": "" }, "require": { @@ -1069,7 +1135,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1110,7 +1176,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" }, "funding": [ { @@ -1126,20 +1192,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.22.1", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", "shasum": "" }, "require": { @@ -1148,7 +1214,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1193,7 +1259,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" }, "funding": [ { @@ -1209,25 +1275,29 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-07-28T13:41:28+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.2.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", - "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.0" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -1235,7 +1305,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1272,7 +1342,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/master" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" }, "funding": [ { @@ -1288,20 +1358,20 @@ "type": "tidelift" } ], - "time": "2020-09-07T11:33:47+00:00" + "time": "2021-11-04T16:48:04+00:00" }, { "name": "symfony/string", - "version": "v5.2.4", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4e78d7d47061fa183639927ec40d607973699609" + "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4e78d7d47061fa183639927ec40d607973699609", - "reference": "4e78d7d47061fa183639927ec40d607973699609", + "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", "shasum": "" }, "require": { @@ -1355,7 +1425,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.2.4" + "source": "https://github.com/symfony/string/tree/v5.3.10" }, "funding": [ { @@ -1371,26 +1441,27 @@ "type": "tidelift" } ], - "time": "2021-02-16T10:20:28+00:00" + "time": "2021-10-27T18:21:46+00:00" }, { "name": "symfony/translation", - "version": "v5.2.5", + "version": "v5.3.11", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "0947ab1e3aabd22a6bef393874b2555d2bb976da" + "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/0947ab1e3aabd22a6bef393874b2555d2bb976da", - "reference": "0947ab1e3aabd22a6bef393874b2555d2bb976da", + "url": "https://api.github.com/repos/symfony/translation/zipball/17a965c8f3b1b348cf15d903ac53942984561f8a", + "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^2.3" }, "conflict": { @@ -1404,13 +1475,14 @@ "symfony/translation-implementation": "2.3" }, "require-dev": { - "psr/log": "~1.0", + "psr/log": "^1|^2|^3", "symfony/config": "^4.4|^5.0", "symfony/console": "^4.4|^5.0", "symfony/dependency-injection": "^5.0", "symfony/finder": "^4.4|^5.0", "symfony/http-kernel": "^5.0", "symfony/intl": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "^1.21", "symfony/service-contracts": "^1.1.2|^2", "symfony/yaml": "^4.4|^5.0" }, @@ -1448,7 +1520,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.2.5" + "source": "https://github.com/symfony/translation/tree/v5.3.11" }, "funding": [ { @@ -1464,20 +1536,20 @@ "type": "tidelift" } ], - "time": "2021-03-06T07:59:01+00:00" + "time": "2021-11-04T16:37:19+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.3.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105" + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105", - "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", + "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", "shasum": "" }, "require": { @@ -1489,7 +1561,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1526,7 +1598,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" }, "funding": [ { @@ -1542,7 +1614,7 @@ "type": "tidelift" } ], - "time": "2020-09-28T13:05:58+00:00" + "time": "2021-08-17T14:20:01+00:00" }, { "name": "voku/portable-ascii", @@ -1627,8 +1699,11 @@ "prefer-lowest": false, "platform": { "php": "^8.0", - "ext-pdo": "*" + "ext-pdo": "^8.0", + "ext-pdo_mysql": "^8.0", + "ext-pdo_pgsql": "^8.0", + "ext-pdo_sqlite": "^8.0" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/tests/testdata/create_and_seed_database.php b/tests/testdata/create_and_seed_database.php index fbc92764a..3b4fcc06c 100644 --- a/tests/testdata/create_and_seed_database.php +++ b/tests/testdata/create_and_seed_database.php @@ -5,6 +5,7 @@ use Illuminate\Database\Capsule\Manager as Capsule; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Arr; +use Illuminate\Support\Facades\DB; /** * Combine Insert statement values with columns. @@ -93,8 +94,8 @@ function removeUnusedConfigs(array &$configs): void case 'pgsql': { $envVariables = [ - 'DB_MYSQL_HOST', 'DB_MYSQL_PORT', 'DB_MYSQL_DATABASE', 'DB_PGSQL_SCHEMA', - 'DB_MYSQL_USERNAME', 'DB_MYSQL_PASSWORD', 'DB_MYSQL_CHARSET' + 'DB_PGSQL_HOST', 'DB_PGSQL_PORT', 'DB_PGSQL_DATABASE', 'DB_PGSQL_SCHEMA', + 'DB_PGSQL_USERNAME', 'DB_PGSQL_PASSWORD', 'DB_PGSQL_CHARSET' ]; if (allEnvVariablesEmpty($envVariables)) @@ -489,3 +490,5 @@ function createAndSeedTables(array $connections): void addConnections($capsule, $configs); createAndSeedTables(array_keys($configs)); + +//var_dump(Capsule::connection('mysql')->table('torrents')->get()->toArray());