fix: object can be in db to represent a list

This commit is contained in:
Maël Gangloff
2025-10-19 15:07:11 +02:00
parent d81ee32122
commit b727961edb

View File

@@ -19,35 +19,71 @@ final class Version20251019120358 extends AbstractMigration
public function up(Schema $schema): void public function up(Schema $schema): void
{ {
$this->addSql('UPDATE domain $this->addSql("UPDATE domain
SET status = ( SET status = (
SELECT jsonb_agg(lower(value::text)::jsonb) SELECT jsonb_agg(lower(value::text)::jsonb)
FROM jsonb_array_elements(status) AS t(value) FROM jsonb_array_elements(
)'); CASE
WHEN jsonb_typeof(status) = 'array' THEN status
WHEN jsonb_typeof(status) = 'object' THEN to_jsonb(array(SELECT jsonb_array_elements_text(jsonb_agg(value)) FROM jsonb_each_text(status)))
ELSE '[]'::jsonb
END
) AS t(value)
)");
$this->addSql('UPDATE domain_status $this->addSql("UPDATE domain_status
SET add_status = ( SET add_status = (
SELECT jsonb_agg(lower(value::text)::jsonb) SELECT jsonb_agg(lower(value::text)::jsonb)
FROM jsonb_array_elements(add_status) AS t(value) FROM jsonb_array_elements(
CASE
WHEN jsonb_typeof(add_status) = 'array' THEN add_status
WHEN jsonb_typeof(add_status) = 'object' THEN to_jsonb(array(SELECT jsonb_array_elements_text(jsonb_agg(value)) FROM jsonb_each_text(add_status)))
ELSE '[]'::jsonb
END
) AS t(value)
), delete_status = ( ), delete_status = (
SELECT jsonb_agg(lower(value::text)::jsonb) SELECT jsonb_agg(lower(value::text)::jsonb)
FROM jsonb_array_elements(delete_status) AS t(value) FROM jsonb_array_elements(
)'); CASE
WHEN jsonb_typeof(delete_status) = 'array' THEN delete_status
WHEN jsonb_typeof(delete_status) = 'object' THEN to_jsonb(array(SELECT jsonb_array_elements_text(jsonb_agg(value)) FROM jsonb_each_text(delete_status)))
ELSE '[]'::jsonb
END
) AS t(value)
)");
$this->addSql('UPDATE domain_entity $this->addSql("UPDATE domain_entity
SET roles = ( SET roles = (
SELECT jsonb_agg(lower(value::text)::jsonb) SELECT jsonb_agg(lower(value::text)::jsonb)
FROM jsonb_array_elements(roles) AS t(value) FROM jsonb_array_elements(
)'); CASE
WHEN jsonb_typeof(roles) = 'array' THEN roles
WHEN jsonb_typeof(roles) = 'object' THEN to_jsonb(array(SELECT jsonb_array_elements_text(jsonb_agg(value)) FROM jsonb_each_text(roles)))
ELSE '[]'::jsonb
END
) AS t(value)
)");
$this->addSql('UPDATE nameserver_entity $this->addSql("UPDATE nameserver_entity
SET roles = ( SET roles = (
SELECT jsonb_agg(lower(value::text)::jsonb) SELECT jsonb_agg(lower(value::text)::jsonb)
FROM jsonb_array_elements(roles) AS t(value) FROM jsonb_array_elements(
CASE
WHEN jsonb_typeof(roles) = 'array' THEN roles
WHEN jsonb_typeof(roles) = 'object' THEN to_jsonb(array(SELECT jsonb_array_elements_text(jsonb_agg(value)) FROM jsonb_each_text(roles)))
ELSE '[]'::jsonb
END
) AS t(value)
), status = ( ), status = (
SELECT jsonb_agg(lower(value::text)::jsonb) SELECT jsonb_agg(lower(value::text)::jsonb)
FROM jsonb_array_elements(status) AS t(value) FROM jsonb_array_elements(
)'); CASE
WHEN jsonb_typeof(status) = 'array' THEN status
WHEN jsonb_typeof(status) = 'object' THEN to_jsonb(array(SELECT jsonb_array_elements_text(jsonb_agg(value)) FROM jsonb_each_text(status)))
ELSE '[]'::jsonb
END
) AS t(value)
)");
$this->addSql('UPDATE domain_event SET action = lower(action)'); $this->addSql('UPDATE domain_event SET action = lower(action)');
$this->addSql('UPDATE entity_event SET action = lower(action)'); $this->addSql('UPDATE entity_event SET action = lower(action)');