refactor
This commit is contained in:
@@ -126,7 +126,6 @@ public class IikoOlapColumnsImporter {
|
||||
|
||||
// Запрос полей для конкретного reportType
|
||||
private Future<JsonObject> fetchColumnsFromIiko(String reportType, String token) {
|
||||
|
||||
Promise<JsonObject> promise = Promise.promise();
|
||||
String url = "https://" + iikoServer + "/resto/api/v2/reports/olap/columns?key=" + token + "&reportType=" + reportType;
|
||||
|
||||
@@ -163,7 +162,7 @@ public class IikoOlapColumnsImporter {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- Методы работы с БД (те же, с поддержкой UTF8) ----------
|
||||
// ---------- Методы работы с БД (с префиксом iiko_) ----------
|
||||
private Future<Void> storeColumnsToDb(String reportType, JsonObject columns) {
|
||||
return getOrCreateReportType(reportType)
|
||||
.compose(reportTypeId -> {
|
||||
@@ -178,14 +177,14 @@ public class IikoOlapColumnsImporter {
|
||||
|
||||
private Future<Integer> getOrCreateReportType(String reportType) {
|
||||
Promise<Integer> promise = Promise.promise();
|
||||
String selectSql = "SELECT report_type_id FROM report_types WHERE name = ?";
|
||||
String selectSql = "SELECT report_type_id FROM iiko_report_types WHERE name = ?";
|
||||
dbPool.preparedQuery(selectSql)
|
||||
.execute(Tuple.of(reportType))
|
||||
.onComplete(ar -> {
|
||||
if (ar.succeeded() && ar.result().size() > 0) {
|
||||
promise.complete(ar.result().iterator().next().getInteger("report_type_id"));
|
||||
} else if (ar.succeeded()) {
|
||||
String insertSql = "INSERT INTO report_types (name, description) VALUES (?, ?)";
|
||||
String insertSql = "INSERT INTO iiko_report_types (name, description) VALUES (?, ?)";
|
||||
dbPool.preparedQuery(insertSql)
|
||||
.execute(Tuple.of(reportType, "OLAP report type: " + reportType))
|
||||
.onComplete(insAr -> {
|
||||
@@ -224,7 +223,7 @@ public class IikoOlapColumnsImporter {
|
||||
JsonArray tagsArray = fieldDef.getJsonArray("tags", new JsonArray());
|
||||
|
||||
String insertFieldSql = """
|
||||
INSERT INTO fields (
|
||||
INSERT INTO iiko_fields (
|
||||
report_type_id, field_key, field_key_normal, name, type, type_normal,
|
||||
aggregation_allowed, grouping_allowed, filtering_allowed
|
||||
)
|
||||
@@ -244,7 +243,7 @@ public class IikoOlapColumnsImporter {
|
||||
aggregationAllowed, groupingAllowed, filteringAllowed
|
||||
))
|
||||
.compose(ignored -> {
|
||||
String selectFieldIdSql = "SELECT field_id FROM fields WHERE report_type_id = ? AND field_key = ?";
|
||||
String selectFieldIdSql = "SELECT field_id FROM iiko_fields WHERE report_type_id = ? AND field_key = ?";
|
||||
return dbPool.preparedQuery(selectFieldIdSql)
|
||||
.execute(Tuple.of(reportTypeId, fieldKey))
|
||||
.compose(rows -> {
|
||||
@@ -269,14 +268,14 @@ public class IikoOlapColumnsImporter {
|
||||
|
||||
private Future<Integer> getOrCreateTag(String tagName) {
|
||||
Promise<Integer> promise = Promise.promise();
|
||||
String selectSql = "SELECT tag_id FROM tags WHERE tag_name = ?";
|
||||
String selectSql = "SELECT tag_id FROM iiko_tags WHERE tag_name = ?";
|
||||
dbPool.preparedQuery(selectSql)
|
||||
.execute(Tuple.of(tagName))
|
||||
.onComplete(ar -> {
|
||||
if (ar.succeeded() && ar.result().size() > 0) {
|
||||
promise.complete(ar.result().iterator().next().getInteger("tag_id"));
|
||||
} else {
|
||||
String insertSql = "INSERT IGNORE INTO tags (tag_name) VALUES (?)";
|
||||
String insertSql = "INSERT IGNORE INTO iiko_tags (tag_name) VALUES (?)";
|
||||
dbPool.preparedQuery(insertSql)
|
||||
.execute(Tuple.of(tagName))
|
||||
.onComplete(insAr -> {
|
||||
@@ -297,7 +296,7 @@ public class IikoOlapColumnsImporter {
|
||||
}
|
||||
|
||||
private Future<Void> linkFieldTag(int fieldId, int tagId) {
|
||||
String sql = "INSERT IGNORE INTO field_tags (field_id, tag_id) VALUES (?, ?)";
|
||||
String sql = "INSERT IGNORE INTO iiko_field_tags (field_id, tag_id) VALUES (?, ?)";
|
||||
return dbPool.preparedQuery(sql)
|
||||
.execute(Tuple.of(fieldId, tagId))
|
||||
.mapEmpty();
|
||||
@@ -305,14 +304,14 @@ public class IikoOlapColumnsImporter {
|
||||
|
||||
private Future<Void> createTablesIfNotExist() {
|
||||
String createReportTypesTable = """
|
||||
CREATE TABLE IF NOT EXISTS report_types (
|
||||
CREATE TABLE IF NOT EXISTS iiko_report_types (
|
||||
report_type_id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50) UNIQUE NOT NULL,
|
||||
description TEXT NOT NULL
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
|
||||
""";
|
||||
String createFieldsTable = """
|
||||
CREATE TABLE IF NOT EXISTS fields (
|
||||
CREATE TABLE IF NOT EXISTS iiko_fields (
|
||||
field_id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
report_type_id INT NOT NULL,
|
||||
field_key VARCHAR(255) NOT NULL,
|
||||
@@ -325,27 +324,27 @@ public class IikoOlapColumnsImporter {
|
||||
filtering_allowed BOOLEAN NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_fields_report_type_field_key (report_type_id, field_key),
|
||||
FOREIGN KEY (report_type_id) REFERENCES report_types(report_type_id) ON DELETE RESTRICT
|
||||
FOREIGN KEY (report_type_id) REFERENCES iiko_report_types(report_type_id) ON DELETE RESTRICT
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
|
||||
""";
|
||||
String createTagsTable = """
|
||||
CREATE TABLE IF NOT EXISTS tags (
|
||||
CREATE TABLE IF NOT EXISTS iiko_tags (
|
||||
tag_id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
tag_name VARCHAR(100) UNIQUE NOT NULL
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
|
||||
""";
|
||||
String createFieldTagsTable = """
|
||||
CREATE TABLE IF NOT EXISTS field_tags (
|
||||
CREATE TABLE IF NOT EXISTS iiko_field_tags (
|
||||
field_id INT NOT NULL,
|
||||
tag_id INT NOT NULL,
|
||||
PRIMARY KEY (field_id, tag_id),
|
||||
FOREIGN KEY (field_id) REFERENCES fields(field_id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (tag_id) REFERENCES tags(tag_id) ON DELETE CASCADE
|
||||
FOREIGN KEY (field_id) REFERENCES iiko_fields(field_id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (tag_id) REFERENCES iiko_tags(tag_id) ON DELETE CASCADE
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
|
||||
""";
|
||||
String createIdxFieldsReportType = "CREATE INDEX IF NOT EXISTS idx_fields_report_type ON fields(report_type_id)";
|
||||
String createIdxFieldsName = "CREATE INDEX IF NOT EXISTS idx_fields_name ON fields(name)";
|
||||
String createIdxFieldTagsTagId = "CREATE INDEX IF NOT EXISTS idx_field_tags_tag_id ON field_tags(tag_id)";
|
||||
String createIdxFieldsReportType = "CREATE INDEX IF NOT EXISTS idx_fields_report_type ON iiko_fields(report_type_id)";
|
||||
String createIdxFieldsName = "CREATE INDEX IF NOT EXISTS idx_fields_name ON iiko_fields(name)";
|
||||
String createIdxFieldTagsTagId = "CREATE INDEX IF NOT EXISTS idx_field_tags_tag_id ON iiko_field_tags(tag_id)";
|
||||
|
||||
return dbPool.query(createReportTypesTable).execute()
|
||||
.compose(ignored -> dbPool.query(createFieldsTable).execute())
|
||||
|
||||
Reference in New Issue
Block a user