Add fields for display values of linked records.
This commit is contained in:
parent
b6f63cf15b
commit
be482dfe41
@ -1,6 +1,6 @@
|
|||||||
# Package
|
# Package
|
||||||
|
|
||||||
version = "0.3.2"
|
version = "0.4.0"
|
||||||
author = "Jonathan Bernard"
|
author = "Jonathan Bernard"
|
||||||
description = "Utilities and bindings for HFF's Notion API."
|
description = "Utilities and bindings for HFF's Notion API."
|
||||||
license = "GPL-3.0-or-later"
|
license = "GPL-3.0-or-later"
|
||||||
|
@ -19,8 +19,10 @@ type
|
|||||||
FamilyObj* = object
|
FamilyObj* = object
|
||||||
id*: string
|
id*: string
|
||||||
name*: string
|
name*: string
|
||||||
|
headsOfHousehold*: seq[string]
|
||||||
headOfHouseholdIds*: seq[string]
|
headOfHouseholdIds*: seq[string]
|
||||||
primaryAddressId*: seq[string]
|
primaryAddressId*: seq[string]
|
||||||
|
members*: seq[string]
|
||||||
memberIds*: seq[string]
|
memberIds*: seq[string]
|
||||||
createdAt*: Option[DateTime]
|
createdAt*: Option[DateTime]
|
||||||
lastUpdatedAt*: Option[DateTime]
|
lastUpdatedAt*: Option[DateTime]
|
||||||
@ -35,10 +37,14 @@ type
|
|||||||
gender*: string
|
gender*: string
|
||||||
primaryPhoneNumber*: string
|
primaryPhoneNumber*: string
|
||||||
primaryEmailAddress*: string
|
primaryEmailAddress*: string
|
||||||
|
addresses*: seq[string]
|
||||||
addressIds*: seq[string]
|
addressIds*: seq[string]
|
||||||
marriedToId*: seq[string]
|
marriedTo*: string
|
||||||
|
marriedToId*: string
|
||||||
anniversary*: Option[DateTime]
|
anniversary*: Option[DateTime]
|
||||||
|
parents*: seq[string]
|
||||||
parentIds*: seq[string]
|
parentIds*: seq[string]
|
||||||
|
children*: seq[string]
|
||||||
childIds*: seq[string]
|
childIds*: seq[string]
|
||||||
relationshipToHff*: seq[string]
|
relationshipToHff*: seq[string]
|
||||||
createdAt*: Option[DateTime]
|
createdAt*: Option[DateTime]
|
||||||
@ -91,8 +97,8 @@ func `==`*(a, b: Person): bool =
|
|||||||
a.primaryPhoneNumber == b.primaryPhoneNumber and
|
a.primaryPhoneNumber == b.primaryPhoneNumber and
|
||||||
a.primaryEmailAddress == b.primaryEmailAddress and
|
a.primaryEmailAddress == b.primaryEmailAddress and
|
||||||
a.anniversary == b.anniversary and
|
a.anniversary == b.anniversary and
|
||||||
|
a.marriedToId == b.marriedToId and
|
||||||
sameContents(a.addressIds, b.addressIds) and
|
sameContents(a.addressIds, b.addressIds) and
|
||||||
sameContents(a.marriedToId, b.marriedToId) and
|
|
||||||
sameContents(a.parentIds, b.parentIds) and
|
sameContents(a.parentIds, b.parentIds) and
|
||||||
sameContents(a.childIds, b.childIds) and
|
sameContents(a.childIds, b.childIds) and
|
||||||
sameContents(a.relationshipToHff, b.relationshipToHff)
|
sameContents(a.relationshipToHff, b.relationshipToHff)
|
||||||
@ -147,7 +153,7 @@ func toPage*(p: Person): JsonNode =
|
|||||||
"Email Address": { "email": p.primaryEmailAddress },
|
"Email Address": { "email": p.primaryEmailAddress },
|
||||||
"Relationship to HFF": makeMultiSelectProp(p.relationshipToHff),
|
"Relationship to HFF": makeMultiSelectProp(p.relationshipToHff),
|
||||||
"Address": makeRelationProp(p.addressIds),
|
"Address": makeRelationProp(p.addressIds),
|
||||||
"Married To": makeRelationProp(p.marriedToId),
|
"Married To": makeRelationProp(@[p.marriedToId]),
|
||||||
"Anniversary": makeDateProp(p.anniversary),
|
"Anniversary": makeDateProp(p.anniversary),
|
||||||
"Parents": makeRelationProp(p.parentIds),
|
"Parents": makeRelationProp(p.parentIds),
|
||||||
"Children": makeRelationProp(p.childIds),
|
"Children": makeRelationProp(p.childIds),
|
||||||
@ -183,8 +189,10 @@ proc familyFromPage*(page: JsonNode): Family =
|
|||||||
result = Family(
|
result = Family(
|
||||||
id: page["id"].getStr,
|
id: page["id"].getStr,
|
||||||
name: page.getTitle("Name"),
|
name: page.getTitle("Name"),
|
||||||
|
headsOfHousehold: page.getRolledupDisplayValues("Head(s) of Household (display)"),
|
||||||
headOfHouseholdIds: page.getRelationIds("Head(s) of Household"),
|
headOfHouseholdIds: page.getRelationIds("Head(s) of Household"),
|
||||||
primaryAddressId: page.getRelationIds("Primary Address"),
|
primaryAddressId: page.getRelationIds("Primary Address"),
|
||||||
|
members: page.getRolledupDisplayValues("Members (display)"),
|
||||||
memberIds: page.getRelationIds("Members"),
|
memberIds: page.getRelationIds("Members"),
|
||||||
createdAt: some(parseIso8601(page["created_time"].getStr)),
|
createdAt: some(parseIso8601(page["created_time"].getStr)),
|
||||||
lastUpdatedAt: some(parseIso8601(page["last_edited_time"].getStr)))
|
lastUpdatedAt: some(parseIso8601(page["last_edited_time"].getStr)))
|
||||||
@ -201,10 +209,14 @@ proc personFromPage*(page: JsonNode): Person =
|
|||||||
primaryPhoneNumber: page.getPhone("Primary Phone Number"),
|
primaryPhoneNumber: page.getPhone("Primary Phone Number"),
|
||||||
primaryEmailAddress: page.getEmail("Email Address"),
|
primaryEmailAddress: page.getEmail("Email Address"),
|
||||||
relationshipToHff: page.getMultiSelect("Relationship to HFF"),
|
relationshipToHff: page.getMultiSelect("Relationship to HFF"),
|
||||||
|
addresses: page.getRolledupDisplayValues("Full Address"),
|
||||||
addressIds: page.getRelationIds("Address"),
|
addressIds: page.getRelationIds("Address"),
|
||||||
marriedToId: page.getRelationIds("Married To"),
|
marriedTo: page.getRolledupDisplayValues("Married To (display)")[0],
|
||||||
|
marriedToId: page.getRelationIds("Married To")[0],
|
||||||
anniversary: page.getDateTime("Anniversary"),
|
anniversary: page.getDateTime("Anniversary"),
|
||||||
|
parents: page.getRolledupDisplayValues("Parents (display)"),
|
||||||
parentIds: page.getRelationIds("Parents"),
|
parentIds: page.getRelationIds("Parents"),
|
||||||
|
children: page.getRolledupDisplayValues("Children (display)"),
|
||||||
childIds: page.getRelationIds("Children"),
|
childIds: page.getRelationIds("Children"),
|
||||||
createdAt: some(parseIso8601(page["created_time"].getStr)),
|
createdAt: some(parseIso8601(page["created_time"].getStr)),
|
||||||
lastUpdatedAt: some(parseIso8601(page["last_edited_time"].getStr)),
|
lastUpdatedAt: some(parseIso8601(page["last_edited_time"].getStr)),
|
||||||
|
@ -50,7 +50,7 @@ proc makeTextProp*(propType: string, value: string): JsonNode =
|
|||||||
## Utility functions for reading Page property values
|
## Utility functions for reading Page property values
|
||||||
## --------------------------------------------------
|
## --------------------------------------------------
|
||||||
|
|
||||||
proc getPropNode(page: JsonNode, propType, propName: string): JsonNode =
|
proc getPropNode*(page: JsonNode, propType, propName: string): JsonNode =
|
||||||
result = page{"properties", propName, propType}
|
result = page{"properties", propName, propType}
|
||||||
|
|
||||||
if isNil(result):
|
if isNil(result):
|
||||||
@ -74,6 +74,10 @@ proc getRelationIds*(page: JsonNode, propName: string): seq[string] =
|
|||||||
let propNode = page.getPropNode("relation", propName)
|
let propNode = page.getPropNode("relation", propName)
|
||||||
return propNode.getElems.mapIt(it["id"].getStr)
|
return propNode.getElems.mapIt(it["id"].getStr)
|
||||||
|
|
||||||
|
proc getRolledupDisplayValues*(page: JsonNode, propName: string): seq[string] =
|
||||||
|
let propNode = page.getPropNode("rollup", propName)
|
||||||
|
return propNode.getElems.mapIt(it{"formula", "string"}.getStr)
|
||||||
|
|
||||||
proc getText*(page: JsonNode, propName: string): string =
|
proc getText*(page: JsonNode, propName: string): string =
|
||||||
let propNode = page.getPropNode("rich_text", propName)
|
let propNode = page.getPropNode("rich_text", propName)
|
||||||
if propNode.len == 0: return ""
|
if propNode.len == 0: return ""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user