mirror of
https://github.com/Kaelio/ktx.git
synced 2026-06-07 07:55:13 +02:00
* refactor: remove legacy ktx compatibility shims * fix: restore overlay collision guidance
71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, 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):
|
|
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(
|
|
ok=value.ok,
|
|
catalog=value.catalog,
|
|
schema=value.schema_,
|
|
name=value.name,
|
|
canonical_table=value.canonical_table,
|
|
reason=value.reason,
|
|
detail=value.detail,
|
|
)
|
|
for key, value in shared_results.items()
|
|
}
|
|
)
|