From e399b8957da3434dc1fb4a4ef14a14b2ec20b89a Mon Sep 17 00:00:00 2001 From: David Stotijn Date: Sat, 3 Sep 2022 21:52:15 +0200 Subject: [PATCH] Update `status` property type behavior (#40) Ref: https://developers.notion.com/changelog/changes-for-august-15-28-2022 --- database.go | 22 +++++++++++++++++++++- page.go | 2 ++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/database.go b/database.go index 2fe8106..56d4170 100644 --- a/database.go +++ b/database.go @@ -37,6 +37,10 @@ type ( SelectMetadata struct { Options []SelectOptions `json:"options"` } + StatusMetadata struct { + Options []SelectOptions `json:"options"` + Groups []StatusGroup `json:"groups"` + } FormulaMetadata struct { Expression string `json:"expression"` } @@ -92,6 +96,13 @@ type SelectOptions struct { Color Color `json:"color,omitempty"` } +type StatusGroup struct { + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + Color Color `json:"color,omitempty"` + OptionIDs []string `json:"option_ids,omitempty"` +} + type FormulaResult struct { Type FormulaResultType `json:"type"` @@ -139,7 +150,6 @@ type DatabaseProperty struct { URL *EmptyMetadata `json:"url,omitempty"` Email *EmptyMetadata `json:"email,omitempty"` PhoneNumber *EmptyMetadata `json:"phone_number,omitempty"` - Status *EmptyMetadata `json:"status,omitempty"` CreatedTime *EmptyMetadata `json:"created_time,omitempty"` CreatedBy *EmptyMetadata `json:"created_by,omitempty"` LastEditedTime *EmptyMetadata `json:"last_edited_time,omitempty"` @@ -151,6 +161,7 @@ type DatabaseProperty struct { Formula *FormulaMetadata `json:"formula,omitempty"` Relation *RelationMetadata `json:"relation,omitempty"` Rollup *RollupMetadata `json:"rollup,omitempty"` + Status *StatusMetadata `json:"status,omitempty"` } // DatabaseQuery is used for quering a database. @@ -195,6 +206,7 @@ type DatabaseQueryPropertyFilter struct { Checkbox *CheckboxDatabaseQueryFilter `json:"checkbox,omitempty"` Select *SelectDatabaseQueryFilter `json:"select,omitempty"` MultiSelect *MultiSelectDatabaseQueryFilter `json:"multi_select,omitempty"` + Status *StatusDatabaseQueryFilter `json:"status,omitempty"` People *PeopleDatabaseQueryFilter `json:"people,omitempty"` Files *FilesDatabaseQueryFilter `json:"files,omitempty"` Relation *RelationDatabaseQueryFilter `json:"relation,omitempty"` @@ -253,6 +265,13 @@ type MultiSelectDatabaseQueryFilter struct { IsNotEmpty bool `json:"is_not_empty,omitempty"` } +type StatusDatabaseQueryFilter struct { + Equals string `json:"equals,omitempty"` + DoesNotEqual string `json:"does_not_equal,omitempty"` + IsEmpty bool `json:"is_empty,omitempty"` + IsNotEmpty bool `json:"is_not_empty,omitempty"` +} + type DatePropertyFilter struct { Equals *time.Time `json:"equals,omitempty"` Before *time.Time `json:"before,omitempty"` @@ -343,6 +362,7 @@ const ( DBPropTypeURL DatabasePropertyType = "url" DBPropTypeEmail DatabasePropertyType = "email" DBPropTypePhoneNumber DatabasePropertyType = "phone_number" + DBPropTypeStatus DatabasePropertyType = "status" DBPropTypeFormula DatabasePropertyType = "formula" DBPropTypeRelation DatabasePropertyType = "relation" DBPropTypeRollup DatabasePropertyType = "rollup" diff --git a/page.go b/page.go index b8630e0..9335112 100644 --- a/page.go +++ b/page.go @@ -169,6 +169,8 @@ func (prop DatabasePageProperty) Value() interface{} { return prop.Email case DBPropTypePhoneNumber: return prop.PhoneNumber + case DBPropTypeStatus: + return prop.Status case DBPropTypeFormula: return prop.Formula case DBPropTypeRelation: