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