001package io.ebeaninternal.dbmigration.ddlgeneration.platform;
002
003import io.ebean.config.DatabaseConfig;
004import io.ebean.config.dbplatform.DatabasePlatform;
005import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
006import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler;
007import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions;
008
009import java.io.IOException;
010
011public class ClickHouseDdl extends PlatformDdl {
012
013  private static final String LOG_TABLE = "ENGINE = Log()";
014
015  public ClickHouseDdl(DatabasePlatform platform) {
016    super(platform);
017    this.includeStorageEngine = true;
018    this.identitySuffix = "";
019  }
020
021  @Override
022  public DdlHandler createDdlHandler(DatabaseConfig config) {
023    return new ClickHouseDdlHandler(config, this);
024  }
025
026  @Override
027  protected String convertArrayType(String logicalArrayType) {
028    return ClickHouseDbArray.logicalToNative(logicalArrayType);
029  }
030
031  /**
032   * Add an table storage engine to the create table statement.
033   */
034  @Override
035  public void tableStorageEngine(DdlBuffer apply, String storageEngine) throws IOException {
036    if (storageEngine == null) {
037      // default to Log() table but really should all be explicit (need arguments for MergeTree etc)
038      storageEngine = LOG_TABLE;
039    }
040    apply.append(" ").append(storageEngine);
041  }
042
043  @Override
044  public String alterTableAddForeignKey(DdlOptions options, WriteForeignKey request) {
045    return null;
046  }
047
048  @Override
049  public String alterTableDropForeignKey(String tableName, String fkName) {
050    return null;
051  }
052
053  @Override
054  public String tableInlineForeignKey(WriteForeignKey request) {
055    return null;
056  }
057
058  @Override
059  public String dropIndex(String indexName, String tableName, boolean concurrent) {
060    return null;
061  }
062
063  @Override
064  public String createIndex(WriteCreateIndex create) {
065    return null;
066  }
067
068  @Override
069  public String createCheckConstraint(String ckName, String checkConstraint) {
070    return null;
071  }
072
073  @Override
074  protected void writeColumnNotNull(DdlBuffer buffer) {
075    // do nothing
076  }
077
078  @Override
079  public void addTableComment(DdlBuffer apply, String tableName, String tableComment) {
080    // do nothing
081  }
082
083  @Override
084  public void addColumnComment(DdlBuffer apply, String table, String column, String comment) {
085    // do nothing
086  }
087
088  @Override
089  public boolean isInlineComments() {
090    return false;
091  }
092}