Skip to content

Commit 0003c40

Browse files
authored
fix: Add missing metadata fields (#40)
* Add missing metadata fields
1 parent 149c699 commit 0003c40

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

cloudquery/sdk/schema/arrow.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@
77
METADATA_FALSE = b"false"
88
METADATA_TABLE_NAME = b"cq:table_name"
99
METADATA_TABLE_DESCRIPTION = b"cq:table_description"
10+
METADATA_TABLE_TITLE = b"cq:table_title"
11+
METADATA_TABLE_DEPENDS_ON = b"cq:table_depends_on"

cloudquery/sdk/schema/table.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,36 @@ def from_arrow_schema(cls, schema: pa.Schema) -> Table:
5757
columns = []
5858
for field in schema:
5959
columns.append(Column.from_arrow_field(field))
60+
parent = None
61+
if arrow.METADATA_TABLE_DEPENDS_ON in schema.metadata:
62+
parent = Table(
63+
name=schema.metadata[arrow.METADATA_TABLE_DEPENDS_ON].decode("utf-8"),
64+
columns=[],
65+
)
6066
return cls(
61-
name=schema.metadata[arrow.METADATA_TABLE_NAME].decode("utf-8"),
67+
name=schema.metadata.get(arrow.METADATA_TABLE_NAME, b"").decode("utf-8"),
68+
title=schema.metadata.get(arrow.METADATA_TABLE_TITLE, b"").decode("utf-8"),
6269
columns=columns,
6370
description=schema.metadata.get(arrow.METADATA_TABLE_DESCRIPTION).decode(
6471
"utf-8"
6572
),
73+
is_incremental=schema.metadata.get(
74+
arrow.METADATA_INCREMENTAL, arrow.METADATA_FALSE
75+
)
76+
== arrow.METADATA_TRUE,
77+
parent=parent,
6678
)
6779

6880
def to_arrow_schema(self):
6981
fields = []
7082
md = {
7183
arrow.METADATA_TABLE_NAME: self.name,
7284
arrow.METADATA_TABLE_DESCRIPTION: self.description,
73-
# arrow.METADATA_CONSTRAINT_NAME:
85+
arrow.METADATA_TABLE_TITLE: self.title,
86+
arrow.METADATA_TABLE_DEPENDS_ON: self.parent.name if self.parent else "",
87+
arrow.METADATA_INCREMENTAL: arrow.METADATA_TRUE
88+
if self.is_incremental
89+
else arrow.METADATA_FALSE,
7490
}
7591
for column in self.columns:
7692
fields.append(column.to_arrow_field())

tests/schema/test_table.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,22 @@
66

77

88
def test_table():
9-
table = Table("test_table", [Column("test_column", pa.int32())])
10-
table.to_arrow_schema()
9+
table = Table(
10+
name="test_table",
11+
columns=[Column("test_column", pa.int32())],
12+
title="Test Table",
13+
description="Test description",
14+
parent=Table(name="parent_table", columns=[]),
15+
relations=[],
16+
is_incremental=True,
17+
)
18+
sch = table.to_arrow_schema()
19+
got = Table.from_arrow_schema(sch)
20+
assert got.name == table.name
21+
assert got.title == table.title
22+
assert got.description == table.description
23+
assert got.is_incremental == table.is_incremental
24+
assert got.parent.name == table.parent.name
1125

1226

1327
def test_filter_dfs_warns_no_matches():

0 commit comments

Comments
 (0)