Skip to content

Commit bfe30eb

Browse files
committed
[backend] Romuald's comments
1 parent 5fe52fe commit bfe30eb

5 files changed

Lines changed: 42 additions & 28 deletions

File tree

openaev-api/src/main/java/io/openaev/migration/V4_74__Create_default_tenant.java

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
public class V4_74__Create_default_tenant extends BaseJavaMigration {
1313

1414
// Strings to replace in the SQL statement
15-
private static String DEFAULT_TENANT_ID = "[DEFAULT_TENANT_ID]";
16-
private static String TABLE_FK_TENANT = "[TABLE_FK_TENANT]";
1715
private static List<String> TABLES =
1816
List.of(
1917
"agents",
@@ -34,11 +32,12 @@ public class V4_74__Create_default_tenant extends BaseJavaMigration {
3432
"groups",
3533
"import_mappers",
3634
"injectors",
37-
"injectors_contracts",
3835
"injects",
3936
"kill_chain_phases",
4037
"lessons_templates",
38+
"mitigations",
4139
"organizations",
40+
"notification_rules",
4241
"payloads",
4342
"roles",
4443
"scenarios",
@@ -49,31 +48,33 @@ public class V4_74__Create_default_tenant extends BaseJavaMigration {
4948

5049
@Override
5150
public void migrate(Context context) throws Exception {
52-
53-
// SQL statements to execute with Strings to replace
54-
String addDefaultTenant =
55-
"INSERT INTO tenants(tenant_id, tenant_name, tenant_description) VALUES ('[DEFAULT_TENANT_ID]', 'First default tenant auto created to rename', 'First default tenant auto created to rename');";
56-
String addForeignKeyTenant =
57-
"""
58-
ALTER TABLE [TABLE_FK_TENANT]
59-
ADD COLUMN tenant_id VARCHAR(255) NOT NULL DEFAULT '[DEFAULT_TENANT_ID]',
60-
ADD CONSTRAINT fk_tenant_id FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) ON DELETE CASCADE;
61-
""";
62-
String addIndexTenant =
63-
"CREATE INDEX IF NOT EXISTS idx_tenant_id ON [TABLE_FK_TENANT](tenant_id);";
64-
6551
try (Statement statement = context.getConnection().createStatement()) {
6652
// Add default tenant
67-
statement.execute(addDefaultTenant.replace(DEFAULT_TENANT_ID, DEFAULT_TENANT_UUID));
53+
statement.execute(
54+
String.format(
55+
"""
56+
INSERT INTO tenants(tenant_id, tenant_name, tenant_description)
57+
VALUES ('%s', 'First default tenant auto created to rename', 'First default tenant auto created to rename');
58+
""",
59+
DEFAULT_TENANT_UUID));
6860
// Add deleted_at in tenants for soft delete
6961
statement.execute("ALTER TABLE tenants ADD tenant_deleted_at TIMESTAMP WITH TIME ZONE;");
7062
// Add foreign keys with index, auto set default tenant id with default value
7163
for (String table : TABLES) {
7264
statement.addBatch(
73-
addForeignKeyTenant
74-
.replace(DEFAULT_TENANT_ID, DEFAULT_TENANT_UUID)
75-
.replace(TABLE_FK_TENANT, table));
76-
statement.addBatch(addIndexTenant.replace(TABLE_FK_TENANT, table));
65+
String.format(
66+
"""
67+
ALTER TABLE %s
68+
ADD COLUMN tenant_id VARCHAR(255) NOT NULL DEFAULT '%s',
69+
ADD CONSTRAINT fk_tenant_id FOREIGN KEY (tenant_id) REFERENCES tenants(tenant_id) ON DELETE CASCADE;
70+
""",
71+
table, DEFAULT_TENANT_UUID));
72+
statement.addBatch(
73+
String.format(
74+
"""
75+
CREATE INDEX IF NOT EXISTS idx_tenant_id ON %s(tenant_id);
76+
""",
77+
table));
7778
}
7879
statement.executeBatch();
7980
// Add linked table for users and tenants

openaev-model/src/main/java/io/openaev/database/model/InjectorContract.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.openaev.database.model;
22

3-
import static io.openaev.database.model.Tenant.DEFAULT_TENANT_UUID;
43
import static java.time.Instant.now;
54
import static java.util.Optional.ofNullable;
65
import static lombok.AccessLevel.NONE;
@@ -185,12 +184,6 @@ public void setVulnerabilities(Set<Vulnerability> vulnerabilities) {
185184
@Queryable(filterable = true)
186185
private boolean isImportAvailable;
187186

188-
@ManyToOne
189-
@JoinColumn(name = "tenant_id")
190-
@JsonIgnore
191-
@NotNull
192-
private Tenant tenant = new Tenant(DEFAULT_TENANT_UUID);
193-
194187
@Getter(onMethod_ = @JsonIgnore)
195188
@Transient
196189
private final ResourceType resourceType = ResourceType.INJECTOR_CONTRACT;

openaev-model/src/main/java/io/openaev/database/model/Mitigation.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package io.openaev.database.model;
22

3+
import static io.openaev.database.model.Tenant.DEFAULT_TENANT_UUID;
34
import static java.time.Instant.now;
45

6+
import com.fasterxml.jackson.annotation.JsonIgnore;
57
import com.fasterxml.jackson.annotation.JsonProperty;
68
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
79
import io.hypersistence.utils.hibernate.type.array.StringArrayType;
@@ -85,4 +87,10 @@ public class Mitigation implements Base {
8587
@JsonSerialize(using = MultiIdListSerializer.class)
8688
@JsonProperty("mitigation_attack_patterns")
8789
private List<AttackPattern> attackPatterns = new ArrayList<>();
90+
91+
@ManyToOne
92+
@JoinColumn(name = "tenant_id")
93+
@JsonIgnore
94+
@NotNull
95+
private Tenant tenant = new Tenant(DEFAULT_TENANT_UUID);
8896
}

openaev-model/src/main/java/io/openaev/database/model/NotificationRule.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.openaev.database.model;
22

3+
import static io.openaev.database.model.Tenant.DEFAULT_TENANT_UUID;
4+
35
import com.fasterxml.jackson.annotation.JsonIgnore;
46
import com.fasterxml.jackson.annotation.JsonProperty;
57
import io.openaev.annotation.Queryable;
@@ -62,6 +64,12 @@ public class NotificationRule implements Base {
6264
@Queryable(searchable = true, filterable = true, path = "owner.id")
6365
private User owner;
6466

67+
@ManyToOne
68+
@JoinColumn(name = "tenant_id")
69+
@JsonIgnore
70+
@NotNull
71+
private Tenant tenant = new Tenant(DEFAULT_TENANT_UUID);
72+
6573
@Getter(onMethod_ = @JsonIgnore)
6674
@Transient
6775
private final ResourceType resourceType = ResourceType.NOTIFICATION_RULE;

openaev-model/src/main/java/io/openaev/database/model/Tenant.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ public class Tenant implements Base {
5959
@JsonProperty("tenant_updated_at")
6060
private Instant updatedAt = now();
6161

62+
@Column(name = "tenant_deleted_at")
63+
@JsonProperty("tenant_deleted_at")
64+
private Instant deletedAt;
65+
6266
public Tenant() {}
6367

6468
public Tenant(String id) {

0 commit comments

Comments
 (0)