Skip to content

Commit f7887ca

Browse files
authored
Timestream: fix ListTables logic (#8634)
1 parent 8e122c8 commit f7887ca

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

moto/timestreamwrite/models.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,14 @@ def describe_table(self, database_name: str, table_name: str) -> TimestreamTable
217217
return database.describe_table(table_name)
218218

219219
def list_tables(self, database_name: str) -> Iterable[TimestreamTable]:
220-
database = self.describe_database(database_name)
221-
return database.list_tables()
220+
if database_name is None:
221+
tables = (
222+
table for db in self.list_databases() for table in db.list_tables()
223+
)
224+
else:
225+
database = self.describe_database(database_name)
226+
tables = database.list_tables()
227+
return tables
222228

223229
def update_table(
224230
self,

tests/test_timestreamwrite/test_timestreamwrite_table.py

+33
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,39 @@ def test_create_multiple_tables():
198198
assert {t["TableStatus"] for t in tables} == {"ACTIVE"}
199199

200200

201+
@mock_aws
202+
def test_list_tables_without_database():
203+
ts = boto3.client("timestream-write", region_name="us-east-1")
204+
ts.create_database(DatabaseName="mydatabase")
205+
206+
for idx in range(0, 5):
207+
ts.create_table(
208+
DatabaseName="mydatabase",
209+
TableName=f"mytable_{idx}",
210+
RetentionProperties={
211+
"MemoryStoreRetentionPeriodInHours": 7,
212+
"MagneticStoreRetentionPeriodInDays": 42,
213+
},
214+
)
215+
216+
database = ts.describe_database(DatabaseName="mydatabase")["Database"]
217+
218+
assert database["TableCount"] == 5
219+
220+
# database_name is optional in api call
221+
tables = ts.list_tables()["Tables"]
222+
assert len(tables) == 5
223+
assert {t["DatabaseName"] for t in tables} == {"mydatabase"}
224+
assert {t["TableName"] for t in tables} == {
225+
"mytable_0",
226+
"mytable_1",
227+
"mytable_2",
228+
"mytable_3",
229+
"mytable_4",
230+
}
231+
assert {t["TableStatus"] for t in tables} == {"ACTIVE"}
232+
233+
201234
@mock_aws
202235
def test_delete_table():
203236
ts = boto3.client("timestream-write", region_name="us-east-1")

0 commit comments

Comments
 (0)