<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.27.xsd">

  <!--
    Hibernate JPA не делает автоматический cast String→INET при INSERT.
    Audit_log.ip_address был INET (см. 0004) — все INSERT'ы падают с
    "column is of type inet but expression is of type character varying".
    AuditLogger обёрнут в try/catch, поэтому не валит сервис, но audit
    тихо не пишется — обнаружено e2e smoke тестом.

    INET semantics (range queries, validation) для нас не критичны.
    Меняем на VARCHAR(64) — IPv6 максимум 45 символов, запас на всякий.
  -->

  <changeSet id="0012-1-audit-log-ipaddress-varchar" author="ordinis">
    <preConditions onFail="MARK_RAN">
      <columnExists tableName="audit_log" columnName="ip_address"/>
    </preConditions>
    <sql>
      ALTER TABLE audit_log
        ALTER COLUMN ip_address TYPE VARCHAR(64) USING ip_address::TEXT;
    </sql>
    <rollback>
      <sql>
        ALTER TABLE audit_log
          ALTER COLUMN ip_address TYPE INET USING ip_address::INET;
      </sql>
    </rollback>
  </changeSet>

</databaseChangeLog>
