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}