Skip to content

Commit 8dccd63

Browse files
authored
Merge pull request #10 from FelipeRos19/master
Fix foreign key generation
2 parents a848b4f + 6278625 commit 8dccd63

3 files changed

Lines changed: 24 additions & 9 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>dev.gump</groupId>
88
<artifactId>worm</artifactId>
9-
<version>1.1.4</version>
9+
<version>1.1.7</version>
1010

1111
<distributionManagement>
1212
<snapshotRepository>

src/main/java/dev/gump/worm/field/FieldType.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import dev.gump.worm.entity.Entity;
44

5+
import java.math.BigDecimal;
56
import java.time.LocalDate;
67
import java.time.LocalDateTime;
78
import java.time.ZonedDateTime;
@@ -21,7 +22,8 @@ public enum FieldType {
2122
TIME("TIME", List.of(), true),
2223
TIMESTAMP("TIMESTAMP", List.of(), true),
2324
BOOL("BOOL", List.of(Boolean.class)),
24-
ENTITY("ENTITY",List.of(Entity.class), true);
25+
ENTITY("ENTITY",List.of(Entity.class), true),
26+
DECIMAL("DECIMAL(19,2)", List.of(BigDecimal.class), true);
2527
private final String value;
2628
private final List<Class<?>> classes;
2729
private final boolean needAsps;

src/main/java/dev/gump/worm/field/WormField.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,29 @@ public String getEntityId(Object obj) throws IllegalAccessException, NoSuchField
103103
public String getSqlCreation(){
104104
if(type == FieldType.ENTITY && fieldClass_relational != null){
105105
EntityMeta cMeta = Worm.getRegistry().getTableMeta(fieldClass_relational);
106-
if(cMeta.getUniqueKeyColumns().size() != 1)
106+
if (cMeta.getUniqueKeyColumns().size() != 1)
107107
throw new WormException("Relational Worm tables need to have only one unique keys");
108+
108109
WormField key = cMeta.getUniqueKeyColumns().toArray(WormField[]::new)[0];
109-
StringBuilder sql = new StringBuilder(key.getSqlCreation());
110-
sql.append(", CONSTRAINT FK_").append(getName()).append("_").append(cMeta.getName()).append(" FOREIGN KEY (").append(getName()).append(") REFERENCES ")
110+
111+
StringBuilder sql = new StringBuilder();
112+
sql.append(key.getType().getValue());
113+
if (key.getLength() > 0)
114+
sql.append('(').append(key.getLength()).append(')');
115+
116+
if (!nullable)
117+
sql.append(" NOT NULL");
118+
119+
sql.append(", CONSTRAINT FK_").append(getName()).append("_").append(cMeta.getName())
120+
.append(" FOREIGN KEY (").append(getName()).append(") REFERENCES ")
111121
.append(cMeta.getName()).append(" (").append(key.getName()).append(")");
112-
if(onDelete != null)
113-
sql.append(" ON DELETE ").append(onDelete.getValue());
114-
if(onUpdate != null)
115-
sql.append(" ON UPDATE ").append(onUpdate.getValue());
122+
123+
if (onDelete != null)
124+
sql.append(" ON DELETE ").append(onDelete.name());
125+
126+
if (onUpdate != null)
127+
sql.append(" ON UPDATE ").append(onUpdate.name());
128+
116129
return sql.toString();
117130
}
118131

0 commit comments

Comments
 (0)