|
10 | 10 | import me.zort.sqllib.api.data.QueryRowsResult; |
11 | 11 | import me.zort.sqllib.api.data.Row; |
12 | 12 | import me.zort.sqllib.api.model.TableSchema; |
| 13 | +import me.zort.sqllib.internal.annotation.Default; |
13 | 14 | import me.zort.sqllib.internal.annotation.PrimaryKey; |
14 | 15 | import me.zort.sqllib.mapping.annotation.*; |
15 | | -import me.zort.sqllib.model.DatabaseSchemaBuilder; |
16 | | -import me.zort.sqllib.model.EntitySchemaBuilder; |
| 16 | +import me.zort.sqllib.model.schema.EntitySchemaBuilder; |
17 | 17 | import org.junit.jupiter.api.*; |
18 | 18 | import org.junit.jupiter.api.condition.EnabledOnOs; |
19 | 19 | import org.junit.jupiter.api.condition.OS; |
@@ -48,14 +48,15 @@ public void prepare() { |
48 | 48 | assertTrue(connection.connect()); |
49 | 49 | assertTrue(connection.isConnected()); |
50 | 50 |
|
| 51 | + assertNull(connection.exec(() -> "DROP TABLE IF EXISTS users;").getRejectMessage()); |
51 | 52 | assertTrue(connection.buildEntitySchema("users", User.class)); |
52 | 53 | assertNull(connection.exec(() -> "TRUNCATE TABLE users;").getRejectMessage()); |
53 | 54 | } |
54 | 55 |
|
55 | 56 | @Timeout(10) |
56 | 57 | @Test |
57 | 58 | public void test1_Mapping() { |
58 | | - DatabaseRepository repository = connection.createGate(DatabaseRepository.class); |
| 59 | + DatabaseRepository repository = connection.createProxy(DatabaseRepository.class); |
59 | 60 |
|
60 | 61 | User user1 = new User("User1", 1000); |
61 | 62 |
|
@@ -85,6 +86,13 @@ public void test2_Synchronization() { |
85 | 86 | assertEquals("points INTEGER", dbSchema.getDefinitions()[1]); |
86 | 87 | assertFalse(connection.synchronizeModel(schema, "users")); |
87 | 88 | assertFalse(connection.synchronizeModel()); |
| 89 | + |
| 90 | + assertTrue(connection.synchronizeModel(UserCopy.class, "users")); |
| 91 | + |
| 92 | + TableSchema copySchema = connection.getSchemaBuilder("users").buildTableSchema(); |
| 93 | + assertEquals(2, copySchema.getDefinitions().length); |
| 94 | + assertEquals("nickname VARCHAR(255) PRIMARY KEY", copySchema.getDefinitions()[0]); |
| 95 | + assertEquals("points INTEGER DEFAULT 0", copySchema.getDefinitions()[1]); |
88 | 96 | } |
89 | 97 |
|
90 | 98 | @Timeout(5) |
@@ -158,4 +166,38 @@ public int hashCode() { |
158 | 166 | } |
159 | 167 | } |
160 | 168 |
|
| 169 | + @AllArgsConstructor |
| 170 | + private static class UserCopy { |
| 171 | + @PrimaryKey |
| 172 | + private final String nickname; |
| 173 | + @Default("0") |
| 174 | + private final int points; |
| 175 | + |
| 176 | + public String getNickname() { |
| 177 | + return nickname; |
| 178 | + } |
| 179 | + |
| 180 | + public int getPoints() { |
| 181 | + return points; |
| 182 | + } |
| 183 | + |
| 184 | + @Override |
| 185 | + public boolean equals(Object o) { |
| 186 | + if (this == o) return true; |
| 187 | + if (o == null || getClass() != o.getClass()) return false; |
| 188 | + |
| 189 | + TestCase2.UserCopy user = (TestCase2.UserCopy) o; |
| 190 | + |
| 191 | + if (points != user.points) return false; |
| 192 | + return nickname.equals(user.nickname); |
| 193 | + } |
| 194 | + |
| 195 | + @Override |
| 196 | + public int hashCode() { |
| 197 | + int result = nickname.hashCode(); |
| 198 | + result = 31 * result + points; |
| 199 | + return result; |
| 200 | + } |
| 201 | + } |
| 202 | + |
161 | 203 | } |
0 commit comments