This repository has been archived by the owner on Jul 27, 2022. It is now read-only.
/
Fulcrum.pq
60 lines (53 loc) · 2.08 KB
/
Fulcrum.pq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// This file contains your Data Connector logic
[Version = "1.0.0"]
section Fulcrum;
[DataSource.Kind="Fulcrum", Publish="Fulcrum.Publish"]
shared Fulcrum.Query = (#"Fulcrum Query" as text) =>
let
apiKey = Extension.CurrentCredential()[Key],
table = Func(#"Fulcrum Query", 1, {})
in
table;
Func = (query as text, page as number, optional previousResult) =>
let
res = Json.Document(Web.Contents("https://api.fulcrumapp.com",
[RelativePath = "api/v2/query",
Query = [token = Extension.CurrentCredential()[Key], q = query, format = "json", page = Number.ToText(page), per_page = Number.ToText(10000)],
Headers=[Accept="application/json", #"Content-type"="application/json"]]
)),
rows = res[rows],
result = if (List.IsEmpty(rows)) then
Table.FromRecords(List.Combine({previousResult, rows}))
else
Func(query, page + 1, List.Combine({previousResult, rows}))
in
result;
// Data Source Kind description
Fulcrum = [
TestConnection = (dataSourcePath) =>
let
json = Json.Document(dataSourcePath),
query = json[#"Fulcrum Query"]
in
{"Fulcrum.Query", query},
Authentication = [
Key = []
// UsernamePassword = [],
// Windows = [],
//Implicit = []
],
Label = Extension.LoadString("DataSourceLabel")
];
// Data Source UI publishing description
Fulcrum.Publish = [
Beta = true,
Category = "Online Services",
ButtonText = { Extension.LoadString("ButtonTitle"), Extension.LoadString("ButtonHelp") },
LearnMoreUrl = "https://fulcrumapp.com/",
SourceImage = Fulcrum.Icons,
SourceTypeImage = Fulcrum.Icons
];
Fulcrum.Icons = [
Icon16 = { Extension.Contents("Fulcrum16.png"), Extension.Contents("Fulcrum16.png"), Extension.Contents("Fulcrum16.png"), Extension.Contents("Fulcrum16.png") },
Icon32 = { Extension.Contents("Fulcrum16.png"), Extension.Contents("Fulcrum16.png"), Extension.Contents("Fulcrum16.png"), Extension.Contents("Fulcrum16.png") }
];