Creates a Flyway Java-based migration for schema changes. Handles table creation, column additions, tenant isolation, and ES reindex. Use when asked to modify the database schema.
ls openaev-api/src/main/java/io/openaev/migration/ | sort | tail -5
Pattern: V4_{XX}__Description.java — increment XX.
Location: openaev-api/src/main/java/io/openaev/migration/
package io.openaev.migration;
import java.sql.Statement;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import org.springframework.stereotype.Component;
@Component
public class V4_XX__Description extends BaseJavaMigration {
@Override
public void migrate(Context context) throws Exception {
try (Statement statement = context.getConnection().createStatement()) {
// SQL here
}
}
}
For tenant-scoped tables:
CREATE TABLE my_entities (
my_entity_id VARCHAR(255) NOT NULL,
my_entity_name VARCHAR(255) NOT NULL,
tenant_id VARCHAR(255) NOT NULL,
-- ... other columns ...
CONSTRAINT pk_my_entities PRIMARY KEY (my_entity_id),
CONSTRAINT fk_my_entities_tenant FOREIGN KEY (tenant_id)
REFERENCES tenants(tenant_id) ON DELETE CASCADE
);
CREATE INDEX idx_my_entities_tenant ON my_entities(tenant_id);
Default tenant: 2cffad3a-0001-4078-b0e2-ef74274022c3
If modifying an entity indexed in Elasticsearch, add a reindex trigger:
DELETE FROM indexing_status;
mvn clean install -DskipTests -Pdev # Migration runs on startup
mvn test # Ensure tests pass with new schema