Skip to content

Commit 92faca1

Browse files
yuokadaclaude
andcommitted
Add support for updateExpire for expire days setting for table
- Add updateExpire method to TDClientApi interface - Implement updateExpire method in TDClient class that calls /v3/table/update API - Add comprehensive test for updateExpire functionality including error cases - Method signature matches td-client-ruby and td-client-python implementations Fixes #110 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 6bd21d7 commit 92faca1

File tree

3 files changed

+55
-0
lines changed

3 files changed

+55
-0
lines changed

src/main/java/com/treasuredata/client/TDClient.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,18 @@ public void appendTableSchema(String databaseName, String tableName, List<TDColu
650650
doPost(buildUrl("/v3/table/append-schema", databaseName, tableName), Collections.emptyMap(), Optional.of(schemaJson), String.class);
651651
}
652652

653+
@Override
654+
public void updateExpire(String databaseName, String tableName, int expireDays)
655+
{
656+
requireNonNull(databaseName, "databaseName is null");
657+
requireNonNull(tableName, "tableName is null");
658+
659+
doPost(buildUrl("/v3/table/update", databaseName, tableName),
660+
Collections.singletonMap("expire_days", Integer.toString(expireDays)),
661+
TDUpdateTableResult.class
662+
);
663+
}
664+
653665
@Override
654666
public String submit(TDJobRequest jobRequest)
655667
throws TDClientException

src/main/java/com/treasuredata/client/TDClientApi.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ public interface TDClientApi<ClientImpl>
229229

230230
void appendTableSchema(String databaseName, String tableName, List<TDColumn> newSchema);
231231

232+
void updateExpire(String databaseName, String tableName, int expireDays);
233+
232234
/**
233235
* Submit a new job request
234236
*

src/test/java/com/treasuredata/client/TestTDClient.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,47 @@ public void tableOperation()
940940
}
941941
}
942942

943+
@Test
944+
public void updateExpireTest()
945+
throws Exception
946+
{
947+
String t = newTemporaryName("expire_test");
948+
949+
try {
950+
client.deleteTableIfExists(SAMPLE_DB, t);
951+
client.createTableIfNotExists(SAMPLE_DB, t);
952+
953+
// Test updating expire days
954+
int expireDays = 30;
955+
client.updateExpire(SAMPLE_DB, t, expireDays);
956+
957+
// Verify the expire days were updated
958+
TDTable updatedTable = findTable(SAMPLE_DB, t).get();
959+
assertEquals(Integer.toString(expireDays), updatedTable.getExpireDays());
960+
961+
// Test updating to different expire days
962+
int newExpireDays = 60;
963+
client.updateExpire(SAMPLE_DB, t, newExpireDays);
964+
965+
// Verify the expire days were updated again
966+
updatedTable = findTable(SAMPLE_DB, t).get();
967+
assertEquals(Integer.toString(newExpireDays), updatedTable.getExpireDays());
968+
969+
// Test error case - table doesn't exist
970+
try {
971+
client.updateExpire(SAMPLE_DB, "nonexistent_table", 30);
972+
fail("should not reach here");
973+
}
974+
catch (TDClientHttpNotFoundException e) {
975+
// OK
976+
assertEquals(HttpStatus.NOT_FOUND_404, e.getStatusCode());
977+
}
978+
}
979+
finally {
980+
client.deleteTableIfExists(SAMPLE_DB, t);
981+
}
982+
}
983+
943984
@Test
944985
public void createTableWithoutIdempotentKey()
945986
throws Exception

0 commit comments

Comments
 (0)