Skip to content

Commit 255d651

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 d88a89c commit 255d651

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
@@ -622,6 +622,18 @@ public void appendTableSchema(String databaseName, String tableName, List<TDColu
622622
doPost(buildUrl("/v3/table/append-schema", databaseName, tableName), Collections.emptyMap(), Optional.of(schemaJson), String.class);
623623
}
624624

625+
@Override
626+
public void updateExpire(String databaseName, String tableName, int expireDays)
627+
{
628+
requireNonNull(databaseName, "databaseName is null");
629+
requireNonNull(tableName, "tableName is null");
630+
631+
doPost(buildUrl("/v3/table/update", databaseName, tableName),
632+
Collections.singletonMap("expire_days", Integer.toString(expireDays)),
633+
TDUpdateTableResult.class
634+
);
635+
}
636+
625637
@Override
626638
public String submit(TDJobRequest jobRequest)
627639
throws TDClientException

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

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

225225
void appendTableSchema(String databaseName, String tableName, List<TDColumn> newSchema);
226226

227+
void updateExpire(String databaseName, String tableName, int expireDays);
228+
227229
/**
228230
* Submit a new job request
229231
*

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

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

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

0 commit comments

Comments
 (0)