Skip to content

Commit 166e622

Browse files
Implement domains
1 parent e07f079 commit 166e622

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.openaev.migration;
2+
3+
import org.flywaydb.core.api.migration.BaseJavaMigration;
4+
import org.flywaydb.core.api.migration.Context;
5+
import org.springframework.stereotype.Component;
6+
7+
import java.sql.Statement;
8+
9+
@Component
10+
public class V4_46__Implement_Domains_notion extends BaseJavaMigration {
11+
@Override
12+
public void migrate(Context context) throws Exception {
13+
try (Statement stmt = context.getConnection().createStatement()) {
14+
stmt.execute(
15+
"""
16+
CREATE TABLE domains (
17+
domain_id VARCHAR(255) NOT NULL CONSTRAINT domains_pkey PRIMARY KEY,
18+
domain_name VARCHAR(255) NOT NULL UNIQUE,
19+
domain_color VARCHAR(255) NOT NULL DEFAULT '#FFFFFF',
20+
domain_created_at TIMESTAMPTZ DEFAULT now(),
21+
domain_updated_at TIMESTAMPTZ DEFAULT now()
22+
);
23+
""");
24+
25+
stmt.execute(
26+
"""
27+
CREATE TABLE payloads_domains (
28+
payload_id VARCHAR(255) NOT NULL,
29+
domain_id VARCHAR(255) NOT NULL,
30+
PRIMARY KEY (payload_id, domain_id),
31+
CONSTRAINT fk_payloads_domains_domain FOREIGN KEY (domain_id) REFERENCES domains(domain_id) ON DELETE CASCADE,
32+
CONSTRAINT fk_payloads_domains_payload FOREIGN KEY (payload_id) REFERENCES payloads(payload_id) ON DELETE CASCADE
33+
);
34+
""");
35+
36+
stmt.execute("CREATE INDEX idx_payloads_domains_domain_id ON payloads_domains(domain_id);");
37+
stmt.execute("CREATE INDEX idx_payloads_domains_payload_id ON payloads_domains(payload_id);");
38+
}
39+
}
40+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package io.openaev.database.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import io.openaev.annotation.Queryable;
5+
import io.openaev.database.audit.ModelBaseListener;
6+
import jakarta.persistence.*;
7+
import jakarta.validation.constraints.NotBlank;
8+
import lombok.*;
9+
import org.hibernate.annotations.CreationTimestamp;
10+
import org.hibernate.annotations.UpdateTimestamp;
11+
import org.hibernate.annotations.UuidGenerator;
12+
13+
import java.time.Instant;
14+
15+
@Entity
16+
@Table(name = "domains")
17+
@EntityListeners(ModelBaseListener.class)
18+
@Getter
19+
@Setter
20+
@NoArgsConstructor
21+
@AllArgsConstructor
22+
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
23+
public class Domain implements Base {
24+
25+
public enum DomainName {
26+
ENDPOINT,
27+
NETWORK,
28+
WEB_APPLICATION,
29+
EMAIL_INFILTRATION,
30+
DATA_EXFILTRATION,
31+
URL_FILTERING,
32+
CLOUD,
33+
}
34+
35+
@Id
36+
@Column(name = "domain_id")
37+
@JsonProperty("domain_id")
38+
@GeneratedValue(generator = "UUID")
39+
@UuidGenerator
40+
@EqualsAndHashCode.Include
41+
@NotBlank
42+
private String id;
43+
44+
@Column(name = "domain_name")
45+
@JsonProperty("domain_name")
46+
@NotBlank
47+
@Queryable(searchable = true, filterable = true, sortable = true)
48+
private DomainName name;
49+
50+
@Column(name = "domain_color")
51+
@JsonProperty("domain_color")
52+
@NotBlank
53+
private String color;
54+
55+
@CreationTimestamp
56+
@Queryable(filterable = true, sortable = true, label = "created at")
57+
@Column(name = "domain_created_at", updatable = false)
58+
@JsonProperty("domain_created_at")
59+
private Instant creationDate;
60+
61+
@UpdateTimestamp
62+
@Queryable(filterable = true, sortable = true, label = "updated at")
63+
@Column(name = "domain_updated_at")
64+
@JsonProperty("domain_updated_at")
65+
private Instant updateDate;
66+
}

0 commit comments

Comments
 (0)