001package io.ebeaninternal.dbmigration.ddlgeneration;
002
003import io.ebeaninternal.dbmigration.migration.AddColumn;
004import io.ebeaninternal.dbmigration.migration.AddHistoryTable;
005import io.ebeaninternal.dbmigration.migration.AddTableComment;
006import io.ebeaninternal.dbmigration.migration.AddUniqueConstraint;
007import io.ebeaninternal.dbmigration.migration.AlterColumn;
008import io.ebeaninternal.dbmigration.migration.AlterForeignKey;
009import io.ebeaninternal.dbmigration.migration.CreateIndex;
010import io.ebeaninternal.dbmigration.migration.CreateTable;
011import io.ebeaninternal.dbmigration.migration.DropColumn;
012import io.ebeaninternal.dbmigration.migration.DropHistoryTable;
013import io.ebeaninternal.dbmigration.migration.DropIndex;
014import io.ebeaninternal.dbmigration.migration.DropTable;
015
016import java.io.IOException;
017
018/**
019 * Write table DDL.
020 */
021public interface TableDdl {
022
023  /**
024   * Generate the create table change.
025   */
026  void generate(DdlWrite writer, CreateTable createTable) throws IOException;
027
028  /**
029   * Write the drop column change.
030   */
031  void generate(DdlWrite writer, DropTable dropTable) throws IOException;
032
033  /**
034   * Write the add column change.
035   */
036  void generate(DdlWrite writer, AddColumn addColumn) throws IOException;
037
038  /**
039   * Write the alter column changes.
040   */
041  void generate(DdlWrite writer, AlterColumn alterColumn) throws IOException;
042
043  /**
044   * Write the drop column change.
045   */
046  void generate(DdlWrite writer, DropColumn dropColumn) throws IOException;
047
048  /**
049   * Write the AddTableComment change.
050   */
051  void generate(DdlWrite writer, AddTableComment addTableComment) throws IOException;
052
053  /**
054   * Write the AddHistoryTable change.
055   */
056  void generate(DdlWrite writer, AddHistoryTable addHistoryTable) throws IOException;
057
058  /**
059   * Write the DropHistoryTable change.
060   */
061  void generate(DdlWrite writer, DropHistoryTable dropHistoryTable) throws IOException;
062
063  /**
064   * Generate the create index change.
065   */
066  void generate(DdlWrite writer, CreateIndex createIndex) throws IOException;
067
068  /**
069   * Write the drop index change.
070   */
071  void generate(DdlWrite writer, DropIndex dropIndex) throws IOException;
072
073  /**
074   * Write add unique constraint.
075   */
076  void generate(DdlWrite writer, AddUniqueConstraint constraint) throws IOException;
077
078  /**
079   * Writes alter foreign key statements.
080   */
081  void generate(DdlWrite writer, AlterForeignKey alterForeignKey) throws IOException;
082
083  /**
084   * Generate any extra DDL such as stored procedures or TableValueParameters.
085   */
086  void generateProlog(DdlWrite write) throws IOException;
087
088  /**
089   * Generate any extra DDL such as regeneration of history triggers.
090   */
091  void generateEpilog(DdlWrite write) throws IOException;
092}