mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-13 08:15:14 +02:00
Initial open-source release
This commit is contained in:
commit
1a42152e6f
1199 changed files with 257054 additions and 0 deletions
66
python/klo-daemon/src/klo_daemon/table_identifier.py
Normal file
66
python/klo-daemon/src/klo_daemon/table_identifier.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from dataclasses import asdict
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from semantic_layer.table_identifier_parser import (
|
||||
ParseTableIdentifierItem as SharedParseTableIdentifierItem,
|
||||
parse_table_identifier_batch,
|
||||
)
|
||||
|
||||
ParseTableIdentifierReason = Literal[
|
||||
"looker_template_unresolved",
|
||||
"derived_table_not_supported",
|
||||
"no_physical_table",
|
||||
"multiple_table_references",
|
||||
"unsupported_dialect",
|
||||
"parse_error",
|
||||
]
|
||||
|
||||
|
||||
class ParseTableIdentifierItem(BaseModel):
|
||||
key: str
|
||||
sql_table_name: str
|
||||
dialect: str
|
||||
|
||||
|
||||
class ParseTableIdentifierBatchRequest(BaseModel):
|
||||
items: list[ParseTableIdentifierItem]
|
||||
|
||||
|
||||
class ParsedIdentifier(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
ok: bool
|
||||
catalog: str | None = None
|
||||
schema_: str | None = Field(default=None, alias="schema")
|
||||
name: str | None = None
|
||||
canonical_table: str | None = None
|
||||
reason: ParseTableIdentifierReason | None = None
|
||||
detail: str | None = None
|
||||
|
||||
|
||||
class ParseTableIdentifierBatchResponse(BaseModel):
|
||||
results: dict[str, ParsedIdentifier]
|
||||
|
||||
|
||||
def parse_table_identifier_response(
|
||||
request: ParseTableIdentifierBatchRequest,
|
||||
) -> ParseTableIdentifierBatchResponse:
|
||||
shared_results = parse_table_identifier_batch(
|
||||
[
|
||||
SharedParseTableIdentifierItem(
|
||||
key=item.key,
|
||||
sql_table_name=item.sql_table_name,
|
||||
dialect=item.dialect,
|
||||
)
|
||||
for item in request.items
|
||||
]
|
||||
)
|
||||
return ParseTableIdentifierBatchResponse(
|
||||
results={
|
||||
key: ParsedIdentifier.model_validate(asdict(value))
|
||||
for key, value in shared_results.items()
|
||||
}
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue