mark received data connector

This commit is contained in:
Dogukan Karatas
2026-01-29 12:38:15 +01:00
parent 40536a565f
commit 0976597db3
2 changed files with 56 additions and 4 deletions
@@ -14,6 +14,7 @@
GetUser = Extension.LoadFunction("GetUser.pqm"),
GetVersion = Extension.LoadFunction("GetVersion.pqm"),
GetWorkspace = Extension.LoadFunction("GetWorkspace.pqm"),
MarkReceived = Extension.LoadFunction("MarkReceived.pqm"),
// the logic for importing functions from other files
Extension.LoadFunction = (fileName as text) =>
@@ -146,6 +147,9 @@
sourceApplication = modelInfo[sourceApplication],
versionId = modelInfo[versionId],
// mark version as received
markReceivedResult = MarkReceived(powerfulToken, versionId, parsedUrl[projectId], parsedUrl[baseUrl]),
// get structured data
structuredData = GetStructuredData(url),
@@ -178,7 +182,7 @@
structuredData,
{
{"Version Object ID", each rootObjectId},
{"Model Info", each if desktopServiceSent or not desktopServiceSent then encodedUserInfo else encodedUserInfo}
{"Model Info", each if (desktopServiceSent or not desktopServiceSent) and (markReceivedResult or not markReceivedResult) then encodedUserInfo else encodedUserInfo}
}
),
@@ -240,6 +244,10 @@
rootObjectId = modelInfo[rootObjectId],
modelName = modelInfo[modelName],
sourceApplication = modelInfo[sourceApplication],
federatedVersionId = if versionId <> null then versionId else modelInfo[versionId],
// mark version as received (non-blocking, best-effort)
markReceivedResult = MarkReceived(powerfulToken, federatedVersionId, projectId, baseUrl),
// get structured data
structuredData = GetStructuredData(singleModelUrl),
@@ -269,13 +277,13 @@
encodedUserInfo = EncodeUserInfo(userInfoData),
// add the model name as context - with version id if exists
// reference desktopServiceSent to force evaluation
// reference desktopServiceSent and markReceivedResult to force evaluation
result = Table.AddColumn(
structuredData,
"Source Model",
each if versionId <> null then
Text.Combine({modelName, "-", versionId})
else if desktopServiceSent or not desktopServiceSent then
if (markReceivedResult or not markReceivedResult) then Text.Combine({modelName, "-", versionId}) else Text.Combine({modelName, "-", versionId})
else if (desktopServiceSent or not desktopServiceSent) and (markReceivedResult or not markReceivedResult) then
modelName
else
modelName,
@@ -0,0 +1,44 @@
// Function to mark a version as received via GraphQL mutation
// Uses the powerful token
(powerfulToken as text, versionId as text, projectId as text, serverUrl as text) as logical =>
try
let
NormalizedServerUrl = if Text.End(serverUrl, 1) = "/" then
serverUrl
else
serverUrl & "/",
// Build GraphQL
GraphQLMutation = "mutation MarkVersionReceived($input: MarkReceivedVersionInput!) { versionMutations { markReceived(input: $input) } }",
Variables = [
input = [
versionId = versionId,
projectId = projectId,
sourceApplication = "powerbi-data"
]
],
// Make GraphQL request
Response = Web.Contents(
NormalizedServerUrl & "graphql",
[
Headers = [
#"Method" = "POST",
#"Content-Type" = "application/json",
#"Authorization" = "Bearer " & powerfulToken
],
Content = Json.FromValue([
query = GraphQLMutation,
variables = Variables
]),
ManualStatusHandling = {400, 401, 403, 404, 500, 502, 503, 504},
Timeout = #duration(0, 0, 0, 5)
]
),
StatusCode = Value.Metadata(Response)[Response.Status]
in
StatusCode >= 200 and StatusCode < 300
otherwise
false