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