From a74890c34e01be452ca1c1d46122fef37b38dd44 Mon Sep 17 00:00:00 2001 From: Pei-Ming Wu Date: Sun, 16 May 2021 10:58:41 +0800 Subject: [PATCH] feat: implement update page --- README.md | 4 ++-- examples/update-page/main.go | 34 ++++++++++++++++++++++++++++++++++ pages.go | 19 ++++++++++++++++--- 3 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 examples/update-page/main.go diff --git a/README.md b/README.md index ca5bcc4..081fa5d 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ go get -u github.com/mkfsn/notion-go * [x] Retrieve ✅ * [x] List ✅ * [x] Query ✅ -- [ ] Pages ⚠️ +- [x] Pages ✅ * [x] Retrieve ✅ * [x] Create ✅️ - * [ ] Update ❌ + * [x] Update ✅️ - [x] Blocks ✅️ * [x] Children ✅ - [x] Retrieve ✅ diff --git a/examples/update-page/main.go b/examples/update-page/main.go new file mode 100644 index 0000000..73baa21 --- /dev/null +++ b/examples/update-page/main.go @@ -0,0 +1,34 @@ +package main + +import ( + "context" + "log" + "os" + + "github.com/mkfsn/notion-go" +) + +func main() { + c := notion.New(notion.WithAuthToken(os.Getenv("NOTION_AUTH_TOKEN"))) + + page, err := c.Pages().Update(context.Background(), + notion.PagesUpdateParameters{ + PageID: "6eaac3811afd4f368209b572e13eace4", + Properties: map[string]notion.PropertyValue{ + "In stock": notion.CheckboxPropertyValue{ + Checkbox: true, + }, + + "Price": notion.NumberPropertyValue{ + Number: 30, + }, + }, + }, + ) + + if err != nil { + log.Fatal(err) + } + + log.Printf("page: %#v\n", page) +} diff --git a/pages.go b/pages.go index 51ca4c7..534d498 100644 --- a/pages.go +++ b/pages.go @@ -648,8 +648,8 @@ type PagesRetrieveResponse struct { } type PagesUpdateParameters struct { - PageID string - Properties map[string]PropertyValue `json:"properties"` + PageID string `json:"-" url:"-"` + Properties map[string]PropertyValue `json:"properties" url:"-"` } type PagesUpdateResponse struct { @@ -703,7 +703,20 @@ func (p *pagesClient) Retrieve(ctx context.Context, params PagesRetrieveParamete } func (p *pagesClient) Update(ctx context.Context, params PagesUpdateParameters) (*PagesUpdateResponse, error) { - return nil, ErrUnimplemented + endpoint := strings.Replace(APIPagesUpdateEndpoint, "{page_id}", params.PageID, 1) + + b, err := p.client.Request(ctx, http.MethodPatch, endpoint, params) + if err != nil { + return nil, err + } + + var response PagesUpdateResponse + + if err := json.Unmarshal(b, &response); err != nil { + return nil, err + } + + return &response, nil } func (p *pagesClient) Create(ctx context.Context, params PagesCreateParameters) (*PagesCreateResponse, error) {