mirror of
https://github.com/maelgangloff/domain-watchdog.git
synced 2025-12-17 09:45:29 +00:00
feat: use JSONB instead of SIMPLE_ARRAY
This commit is contained in:
parent
a143039925
commit
64fe0c895b
@ -154,7 +154,7 @@
|
||||
"symfony/css-selector": "7.3.*",
|
||||
"symfony/debug-bundle": "7.3.*",
|
||||
"symfony/maker-bundle": "^1.0",
|
||||
"symfony/phpunit-bridge": "^7.1",
|
||||
"symfony/phpunit-bridge": "^7.3",
|
||||
"symfony/stopwatch": "7.3.*",
|
||||
"symfony/web-profiler-bundle": "7.3.*",
|
||||
"zenstruck/foundry": "^2.7"
|
||||
|
||||
2
composer.lock
generated
2
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "36070883cc8a6add8ac7b7bb05214d8f",
|
||||
"content-hash": "49fd7fad6776160ff572f3fb9201a8a2",
|
||||
"packages": [
|
||||
{
|
||||
"name": "api-platform/core",
|
||||
|
||||
204
migrations/Version20251016193639.php
Normal file
204
migrations/Version20251016193639.php
Normal file
@ -0,0 +1,204 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20251016193639 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Convert domain status to JSONB';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
// domain.status
|
||||
$this->addSql("ALTER TABLE domain ADD status_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE domain
|
||||
SET status_jsonb = to_jsonb(string_to_array(status, ','))
|
||||
WHERE status IS NOT NULL AND status <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain DROP COLUMN status');
|
||||
$this->addSql('ALTER TABLE domain RENAME COLUMN status_jsonb TO status');
|
||||
$this->addSql('COMMENT ON COLUMN domain.status IS NULL');
|
||||
|
||||
// domain_entity.roles
|
||||
$this->addSql("ALTER TABLE domain_entity ADD roles_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE domain_entity
|
||||
SET roles_jsonb = to_jsonb(string_to_array(roles, ','))
|
||||
WHERE roles IS NOT NULL AND roles <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain_entity DROP COLUMN roles');
|
||||
$this->addSql('ALTER TABLE domain_entity RENAME COLUMN roles_jsonb TO roles');
|
||||
$this->addSql('COMMENT ON COLUMN domain_entity.roles IS NULL');
|
||||
|
||||
// nameserver_entity.roles
|
||||
$this->addSql("ALTER TABLE nameserver_entity ADD roles_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE nameserver_entity
|
||||
SET roles_jsonb = to_jsonb(string_to_array(roles, ','))
|
||||
WHERE roles IS NOT NULL AND roles <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE nameserver_entity DROP COLUMN roles');
|
||||
$this->addSql('ALTER TABLE nameserver_entity RENAME COLUMN roles_jsonb TO roles');
|
||||
$this->addSql('COMMENT ON COLUMN nameserver_entity.roles IS NULL');
|
||||
|
||||
// nameserver_entity.status
|
||||
$this->addSql("ALTER TABLE nameserver_entity ADD status_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE nameserver_entity
|
||||
SET status_jsonb = to_jsonb(string_to_array(status, ','))
|
||||
WHERE status IS NOT NULL AND status <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE nameserver_entity DROP COLUMN status');
|
||||
$this->addSql('ALTER TABLE nameserver_entity RENAME COLUMN status_jsonb TO status');
|
||||
$this->addSql('COMMENT ON COLUMN nameserver_entity.status IS NULL');
|
||||
|
||||
// domain_status.add_status
|
||||
$this->addSql("ALTER TABLE domain_status ADD add_status_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE domain_status
|
||||
SET add_status_jsonb = to_jsonb(string_to_array(add_status, ','))
|
||||
WHERE add_status IS NOT NULL AND add_status <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain_status DROP COLUMN add_status');
|
||||
$this->addSql('ALTER TABLE domain_status RENAME COLUMN add_status_jsonb TO add_status');
|
||||
$this->addSql('COMMENT ON COLUMN domain_status.add_status IS NULL');
|
||||
|
||||
// domain_status.delete_status
|
||||
$this->addSql("ALTER TABLE domain_status ADD delete_status_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE domain_status
|
||||
SET delete_status_jsonb = to_jsonb(string_to_array(delete_status, ','))
|
||||
WHERE delete_status IS NOT NULL AND delete_status <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain_status DROP COLUMN delete_status');
|
||||
$this->addSql('ALTER TABLE domain_status RENAME COLUMN delete_status_jsonb TO delete_status');
|
||||
$this->addSql('COMMENT ON COLUMN domain_status.delete_status IS NULL');
|
||||
|
||||
// watch_list.webhook_dsn
|
||||
$this->addSql("ALTER TABLE watch_list ADD webhook_dsn_jsonb JSONB DEFAULT '[]'::jsonb");
|
||||
$this->addSql("
|
||||
UPDATE watch_list
|
||||
SET webhook_dsn_jsonb = to_jsonb(string_to_array(webhook_dsn, ','))
|
||||
WHERE webhook_dsn IS NOT NULL AND webhook_dsn <> ''
|
||||
");
|
||||
$this->addSql('ALTER TABLE watch_list DROP COLUMN webhook_dsn');
|
||||
$this->addSql('ALTER TABLE watch_list RENAME COLUMN webhook_dsn_jsonb TO webhook_dsn');
|
||||
$this->addSql('COMMENT ON COLUMN watch_list.webhook_dsn IS NULL');
|
||||
|
||||
$this->addSql('ALTER TABLE domain ALTER status DROP DEFAULT');
|
||||
$this->addSql('ALTER TABLE domain_entity ALTER roles DROP DEFAULT');
|
||||
$this->addSql('ALTER TABLE domain_entity ALTER roles SET NOT NULL');
|
||||
$this->addSql('ALTER TABLE domain_status ALTER add_status DROP DEFAULT');
|
||||
$this->addSql('ALTER TABLE domain_status ALTER delete_status DROP DEFAULT');
|
||||
$this->addSql('ALTER TABLE nameserver_entity ALTER roles DROP DEFAULT');
|
||||
$this->addSql('ALTER TABLE nameserver_entity ALTER roles SET NOT NULL');
|
||||
$this->addSql('ALTER TABLE nameserver_entity ALTER status DROP DEFAULT');
|
||||
$this->addSql('ALTER TABLE nameserver_entity ALTER status SET NOT NULL');
|
||||
$this->addSql('ALTER TABLE watch_list ALTER webhook_dsn DROP DEFAULT');
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// domain.status
|
||||
$this->addSql('ALTER TABLE domain ADD status_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE domain
|
||||
SET status_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(status)
|
||||
), ',')
|
||||
WHERE status IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain DROP COLUMN status');
|
||||
$this->addSql('ALTER TABLE domain RENAME COLUMN status_text TO status');
|
||||
$this->addSql('COMMENT ON COLUMN domain.status IS NULL');
|
||||
|
||||
// domain_entity.roles
|
||||
$this->addSql('ALTER TABLE domain_entity ADD roles_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE domain_entity
|
||||
SET roles_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(roles)
|
||||
), ',')
|
||||
WHERE roles IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain_entity DROP COLUMN roles');
|
||||
$this->addSql('ALTER TABLE domain_entity RENAME COLUMN roles_text TO roles');
|
||||
$this->addSql('COMMENT ON COLUMN domain_entity.roles IS NULL');
|
||||
|
||||
// nameserver_entity.roles
|
||||
$this->addSql('ALTER TABLE nameserver_entity ADD roles_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE nameserver_entity
|
||||
SET roles_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(roles)
|
||||
), ',')
|
||||
WHERE roles IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE nameserver_entity DROP COLUMN roles');
|
||||
$this->addSql('ALTER TABLE nameserver_entity RENAME COLUMN roles_text TO roles');
|
||||
$this->addSql('COMMENT ON COLUMN nameserver_entity.roles IS NULL');
|
||||
|
||||
// nameserver_entity.status
|
||||
$this->addSql('ALTER TABLE nameserver_entity ADD status_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE nameserver_entity
|
||||
SET status_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(status)
|
||||
), ',')
|
||||
WHERE status IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE nameserver_entity DROP COLUMN status');
|
||||
$this->addSql('ALTER TABLE nameserver_entity RENAME COLUMN status_text TO status');
|
||||
$this->addSql('COMMENT ON COLUMN nameserver_entity.status IS NULL');
|
||||
|
||||
// domain_status.add_status
|
||||
$this->addSql('ALTER TABLE domain_status ADD add_status_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE domain_status
|
||||
SET add_status_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(add_status)
|
||||
), ',')
|
||||
WHERE add_status IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain_status DROP COLUMN add_status');
|
||||
$this->addSql('ALTER TABLE domain_status RENAME COLUMN add_status_text TO add_status');
|
||||
$this->addSql('COMMENT ON COLUMN domain_status.add_status IS NULL');
|
||||
|
||||
// domain_status.delete_status
|
||||
$this->addSql('ALTER TABLE domain_status ADD delete_status_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE domain_status
|
||||
SET delete_status_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(delete_status)
|
||||
), ',')
|
||||
WHERE delete_status IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE domain_status DROP COLUMN delete_status');
|
||||
$this->addSql('ALTER TABLE domain_status RENAME COLUMN delete_status_text TO delete_status');
|
||||
$this->addSql('COMMENT ON COLUMN domain_status.delete_status IS NULL');
|
||||
|
||||
// watch_list.webhook_dsn
|
||||
$this->addSql('ALTER TABLE watch_list ADD webhook_dsn_text TEXT DEFAULT NULL');
|
||||
$this->addSql("
|
||||
UPDATE watch_list
|
||||
SET webhook_dsn_text = array_to_string(ARRAY(
|
||||
SELECT jsonb_array_elements_text(webhook_dsn)
|
||||
), ',')
|
||||
WHERE webhook_dsn IS NOT NULL
|
||||
");
|
||||
$this->addSql('ALTER TABLE watch_list DROP COLUMN webhook_dsn');
|
||||
$this->addSql('ALTER TABLE watch_list RENAME COLUMN webhook_dsn_text TO webhook_dsn');
|
||||
$this->addSql('COMMENT ON COLUMN watch_list.webhook_dsn IS NULL');
|
||||
}
|
||||
}
|
||||
@ -89,7 +89,7 @@ class Domain
|
||||
#[SerializedName('entities')]
|
||||
private Collection $domainEntities;
|
||||
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY, nullable: true)]
|
||||
#[ORM\Column(type: Types::JSON, nullable: true)]
|
||||
#[Groups(['domain:item', 'domain:list', 'watchlist:item', 'watchlist:list'])]
|
||||
private array $status = [];
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ class DomainEntity
|
||||
#[Groups(['domain-entity:entity'])]
|
||||
private ?Entity $entity = null;
|
||||
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY)]
|
||||
#[ORM\Column(type: Types::JSON)]
|
||||
#[Groups(['domain-entity:entity', 'domain-entity:domain'])]
|
||||
private array $roles = [];
|
||||
|
||||
|
||||
@ -27,11 +27,11 @@ class DomainStatus
|
||||
#[Groups(['domain:item'])]
|
||||
private \DateTimeImmutable $date;
|
||||
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY, nullable: true)]
|
||||
#[ORM\Column(type: Types::JSON, nullable: true)]
|
||||
#[Groups(['domain:item'])]
|
||||
private array $addStatus = [];
|
||||
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY, nullable: true)]
|
||||
#[ORM\Column(type: Types::JSON, nullable: true)]
|
||||
#[Groups(['domain:item'])]
|
||||
private array $deleteStatus = [];
|
||||
|
||||
|
||||
@ -23,11 +23,11 @@ class NameserverEntity
|
||||
#[Groups(['nameserver-entity:entity'])]
|
||||
private ?Entity $entity = null;
|
||||
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY)]
|
||||
#[ORM\Column(type: Types::JSON)]
|
||||
#[Groups(['nameserver-entity:entity', 'nameserver-entity:nameserver'])]
|
||||
private array $roles = [];
|
||||
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY)]
|
||||
#[ORM\Column(type: Types::JSON)]
|
||||
#[Groups(['nameserver-entity:entity', 'nameserver-entity:nameserver'])]
|
||||
private array $status = [];
|
||||
|
||||
|
||||
@ -180,7 +180,7 @@ class WatchList
|
||||
private ?\DateTimeImmutable $createdAt = null;
|
||||
|
||||
#[SerializedName('dsn')]
|
||||
#[ORM\Column(type: Types::SIMPLE_ARRAY, nullable: true)]
|
||||
#[ORM\Column(type: Types::JSON, nullable: true)]
|
||||
#[Groups(['watchlist:list', 'watchlist:item', 'watchlist:create', 'watchlist:update'])]
|
||||
#[Assert\Unique]
|
||||
#[Assert\All([
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user