|
11 | 11 | from sqlmesh._version import __version__ |
12 | 12 | from sqlmesh.core.context import Context |
13 | 13 | from sqlmesh.core.linter.definition import AnnotatedRuleViolation |
14 | | -from sqlmesh.lsp.api import API_FEATURE, ApiRequest, ApiResponse, ApiResponseGetModels |
| 14 | +from sqlmesh.lsp.api import API_FEATURE, ApiRequest, ApiResponse, ApiResponseGetLineage, ApiResponseGetModels |
15 | 15 | from sqlmesh.lsp.completions import get_sql_completions |
16 | 16 | from sqlmesh.lsp.context import LSPContext |
17 | 17 | from sqlmesh.lsp.custom import ALL_MODELS_FEATURE, AllModelsRequest, AllModelsResponse |
18 | 18 | from sqlmesh.lsp.reference import get_model_definitions_for_a_path |
| 19 | +from web.server.api.endpoints.lineage import model_lineage |
19 | 20 | from web.server.api.endpoints.models import get_models |
20 | 21 |
|
21 | 22 |
|
@@ -60,7 +61,13 @@ def api(ls: LanguageServer, request: ApiRequest) -> ApiResponse: |
60 | 61 | if request.url == "/api/models": |
61 | 62 | response = ApiResponseGetModels(data=get_models(self.lsp_context.context)) |
62 | 63 | return response |
63 | | - return ApiResponse(data={}) |
| 64 | + elif request.url.startswith("/api/lineage"): |
| 65 | + name = request.url.split("/")[-1] |
| 66 | + lineage = model_lineage(name, self.lsp_context.context) |
| 67 | + non_set_lineage = {k: v for k, v in lineage.items() if v is not None} |
| 68 | + response = ApiResponseGetLineage(data=non_set_lineage) |
| 69 | + return response |
| 70 | + raise NotImplementedError(f"API request not implemented: {request.url}") |
64 | 71 |
|
65 | 72 | @self.server.feature(types.TEXT_DOCUMENT_DID_OPEN) |
66 | 73 | def did_open( |
|
0 commit comments