package org.flywaydb.core.internal.database.sqlite;
import org.flywaydb.core.api.configuration.Configuration;
import org.flywaydb.core.internal.database.base.Database;
import org.flywaydb.core.internal.database.base.Table;
import org.flywaydb.core.internal.jdbc.JdbcConnectionFactory;
import java.sql.Connection;
public class SQLiteDatabase extends Database<SQLiteConnection> {
public SQLiteDatabase(Configuration configuration, JdbcConnectionFactory jdbcConnectionFactory
) {
super(configuration, jdbcConnectionFactory
);
}
@Override
protected SQLiteConnection doGetConnection(Connection connection) {
return new SQLiteConnection(this, connection);
}
@Override
public final void ensureSupported() {
}
@Override
public String getRawCreateScript(Table table, boolean baseline) {
return "CREATE TABLE " + table + " (\n" +
" \"installed_rank\" INT NOT NULL PRIMARY KEY,\n" +
" \"version\" VARCHAR(50),\n" +
" \"description\" VARCHAR(200) NOT NULL,\n" +
" \"type\" VARCHAR(20) NOT NULL,\n" +
" \"script\" VARCHAR(1000) NOT NULL,\n" +
" \"checksum\" INT,\n" +
" \"installed_by\" VARCHAR(100) NOT NULL,\n" +
" \"installed_on\" TEXT NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%f','now')),\n" +
" \"execution_time\" INT NOT NULL,\n" +
" \"success\" BOOLEAN NOT NULL\n" +
");\n" +
(baseline ? getBaselineStatement(table) + ";\n" : "") +
"CREATE INDEX \"" + table.getSchema().getName() + "\".\"" + table.getName() + "_s_idx\" ON \"" + table.getName() + "\" (\"success\");";
}
public String getDbName() {
return "sqlite";
}
@Override
protected String doGetCurrentUser() {
return "";
}
@Override
public boolean supportsDdlTransactions() {
return true;
}
@Override
public boolean supportsChangingCurrentSchema() {
return false;
}
@Override
public String getBooleanTrue() {
return "1";
}
@Override
public String getBooleanFalse() {
return "0";
}
@Override
public String doQuote(String identifier) {
return "\"" + identifier + "\"";
}
@Override
public boolean catalogIsSchema() {
return true;
}
@Override
public boolean useSingleConnection() {
return true;
}
}