|
|
|
@ -15,8 +15,10 @@ |
|
|
|
*/ |
|
|
|
package org.thingsboard.server.service.install; |
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.boot.info.BuildProperties; |
|
|
|
import org.springframework.context.annotation.Profile; |
|
|
|
import org.springframework.jdbc.core.JdbcTemplate; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.thingsboard.server.dao.util.SqlTsDao; |
|
|
|
|
|
|
|
@ -25,8 +27,11 @@ import org.thingsboard.server.dao.util.SqlTsDao; |
|
|
|
@Profile("install") |
|
|
|
public class SqlTsDatabaseSchemaService extends SqlAbstractDatabaseSchemaService implements TsDatabaseSchemaService { |
|
|
|
|
|
|
|
@Value("${sql.postgres.ts_key_value_partitioning:MONTHS}") |
|
|
|
private String partitionType; |
|
|
|
@Autowired |
|
|
|
private BuildProperties buildProperties; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private JdbcTemplate jdbcTemplate; |
|
|
|
|
|
|
|
public SqlTsDatabaseSchemaService() { |
|
|
|
super("schema-ts-psql.sql", null); |
|
|
|
@ -36,5 +41,21 @@ public class SqlTsDatabaseSchemaService extends SqlAbstractDatabaseSchemaService |
|
|
|
public void createDatabaseSchema() throws Exception { |
|
|
|
super.createDatabaseSchema(); |
|
|
|
executeQuery("CREATE TABLE IF NOT EXISTS ts_kv_indefinite PARTITION OF ts_kv DEFAULT;"); |
|
|
|
|
|
|
|
Long schemaVersion = jdbcTemplate.queryForList("SELECT schema_version FROM tb_schema_settings", Long.class).stream().findFirst().orElse(null); |
|
|
|
|
|
|
|
if (schemaVersion == null) { |
|
|
|
jdbcTemplate.execute("INSERT INTO tb_schema_settings (schema_version) VALUES (" + getSchemaVersion() + ")"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private int getSchemaVersion() { |
|
|
|
String[] versionParts = buildProperties.getVersion().replaceAll("[^\\d.]", "").split("\\."); |
|
|
|
|
|
|
|
int major = Integer.parseInt(versionParts[0]); |
|
|
|
int minor = Integer.parseInt(versionParts[1]); |
|
|
|
int patch = versionParts.length > 2 ? Integer.parseInt(versionParts[2]) : 0; |
|
|
|
|
|
|
|
return major * 1000000 + minor * 1000 + patch; |
|
|
|
} |
|
|
|
} |