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