Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 22 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,37 @@ jobs:
tests:
runs-on: ubuntu-latest

name: "Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, MySQL ${{ matrix.database_version }}"
name: "Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, ${{ matrix.database == 'mysql' && format('MySQL {0}', matrix.database_version) || format('PostgreSQL {0}', matrix.database_version) }}"

strategy:
fail-fast: false
matrix:
php: ["8.3"]
symfony: ["^6.4", "~7.3.0"]
sylius: ["~2.0.7", "~2.1.0"]
symfony: ["^6.4", "~7.4.0"]
sylius: ["~2.1.0", "~2.2.0"]
node: ["22.x"]
database: ["mysql"]
database_version: ["8.4"]

include:
-
php: "8.3"
symfony: "^6.4"
sylius: "~2.1.0"
node: "22.x"
database: "postgres"
database_version: "17.5"
-
php: "8.3"
symfony: "~7.4.0"
sylius: "~2.2.0"
node: "22.x"
database: "postgres"
database_version: "17.5"

env:
APP_ENV: test
DATABASE_URL: "mysql://root:root@127.0.0.1/sylius?serverVersion=${{ matrix.database_version }}"
DATABASE_URL: ${{ matrix.database == 'mysql' && format('mysql://root:root@127.0.0.1/sylius?serverVersion={0}', matrix.database_version) || format('pgsql://postgres:postgres@127.0.0.1/sylius?serverVersion={0}', matrix.database_version) }}

steps:
-
Expand Down Expand Up @@ -93,7 +109,7 @@ jobs:
uses: actions/upload-artifact@v4
if: failure()
with:
name: "Behat logs - Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}"
name: "Behat logs - Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, ${{ matrix.database }} ${{ matrix.database_version }}"
path: etc/build/
if-no-files-found: ignore
compression-level: 6
Expand All @@ -104,7 +120,7 @@ jobs:
uses: actions/upload-artifact@v4
if: failure()
with:
name: "Var logs - Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}"
name: "Var logs - Sylius ${{ matrix.sylius }}, PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, ${{ matrix.database }} ${{ matrix.database_version }}"
path: tests/Application/var/log/
if-no-files-found: ignore
compression-level: 6
Expand Down
14 changes: 14 additions & 0 deletions UPGRADE-1.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# UPGRADE FROM 1.1 TO 1.2

## PostgreSQL support

PostgreSQL is now officially supported. A new PostgreSQL-specific migration has been added.

### If you were already using PostgreSQL

The initial PostgreSQL migration will detect existing tables and skip creation automatically.
Run migrations as usual:

```bash
bin/console doctrine:migrations:migrate
```
70 changes: 70 additions & 0 deletions src/Migrations/Version20260203103556.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php

/*
* This file is part of the Sylius package.
*
* (c) Sylius Sp. z o.o.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

declare(strict_types=1);

namespace Sylius\WishlistPlugin\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Sylius\Bundle\CoreBundle\Doctrine\Migrations\AbstractPostgreSQLMigration;

final class Version20260203103556 extends AbstractPostgreSQLMigration
{
public function getDescription(): string
{
return 'Initail migration for PostgreSQL';
}

public function up(Schema $schema): void
{
if ($schema->hasTable('sylius_wishlist') || $schema->hasTable('bitbag_wishlist')) {
return;
}

$this->addSql('CREATE SEQUENCE sylius_wishlist_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE SEQUENCE sylius_wishlist_product_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE sylius_wishlist (id INT NOT NULL, shop_user_id INT DEFAULT NULL, channel_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, token VARCHAR(255) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
$this->addSql('CREATE INDEX IDX_635A71DEA45D93BF ON sylius_wishlist (shop_user_id)');
$this->addSql('CREATE INDEX IDX_635A71DE72F5A1AA ON sylius_wishlist (channel_id)');
$this->addSql('CREATE INDEX token_idx ON sylius_wishlist (token)');
$this->addSql('CREATE INDEX channel_shop_user_token_idx ON sylius_wishlist (channel_id, shop_user_id, token)');
$this->addSql('CREATE TABLE sylius_wishlist_product (id INT NOT NULL, wishlist_id INT NOT NULL, product_id INT DEFAULT NULL, variant_id INT DEFAULT NULL, quantity INT DEFAULT 1 NOT NULL, PRIMARY KEY(id))');
$this->addSql('CREATE INDEX IDX_8D0D7C6DFB8E54CD ON sylius_wishlist_product (wishlist_id)');
$this->addSql('CREATE INDEX IDX_8D0D7C6D4584665A ON sylius_wishlist_product (product_id)');
$this->addSql('CREATE INDEX IDX_8D0D7C6D3B69A9AF ON sylius_wishlist_product (variant_id)');
$this->addSql('ALTER TABLE sylius_wishlist ADD CONSTRAINT FK_635A71DEA45D93BF FOREIGN KEY (shop_user_id) REFERENCES sylius_shop_user (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE sylius_wishlist ADD CONSTRAINT FK_635A71DE72F5A1AA FOREIGN KEY (channel_id) REFERENCES sylius_channel (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE sylius_wishlist_product ADD CONSTRAINT FK_8D0D7C6DFB8E54CD FOREIGN KEY (wishlist_id) REFERENCES sylius_wishlist (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE sylius_wishlist_product ADD CONSTRAINT FK_8D0D7C6D4584665A FOREIGN KEY (product_id) REFERENCES sylius_product (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE sylius_wishlist_product ADD CONSTRAINT FK_8D0D7C6D3B69A9AF FOREIGN KEY (variant_id) REFERENCES sylius_product_variant (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('DROP INDEX idx_75ea56e016ba31db');
$this->addSql('DROP INDEX idx_75ea56e0e3bd61ce');
$this->addSql('DROP INDEX idx_75ea56e0fb7336f0');
$this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0E3BD61CE16BA31DBBF396750 ON messenger_messages (queue_name, available_at, delivered_at, id)');
}

public function down(Schema $schema): void
{
$this->addSql('DROP SEQUENCE sylius_wishlist_id_seq CASCADE');
$this->addSql('DROP SEQUENCE sylius_wishlist_product_id_seq CASCADE');
$this->addSql('ALTER TABLE sylius_wishlist DROP CONSTRAINT FK_635A71DEA45D93BF');
$this->addSql('ALTER TABLE sylius_wishlist DROP CONSTRAINT FK_635A71DE72F5A1AA');
$this->addSql('ALTER TABLE sylius_wishlist_product DROP CONSTRAINT FK_8D0D7C6DFB8E54CD');
$this->addSql('ALTER TABLE sylius_wishlist_product DROP CONSTRAINT FK_8D0D7C6D4584665A');
$this->addSql('ALTER TABLE sylius_wishlist_product DROP CONSTRAINT FK_8D0D7C6D3B69A9AF');
$this->addSql('DROP TABLE sylius_wishlist');
$this->addSql('DROP TABLE sylius_wishlist_product');
$this->addSql('DROP INDEX IDX_75EA56E0FB7336F0E3BD61CE16BA31DBBF396750');
$this->addSql('CREATE INDEX idx_75ea56e016ba31db ON messenger_messages (delivered_at)');
$this->addSql('CREATE INDEX idx_75ea56e0e3bd61ce ON messenger_messages (available_at)');
$this->addSql('CREATE INDEX idx_75ea56e0fb7336f0 ON messenger_messages (queue_name)');
}
}
Loading