今天先來講一下API整合的部分
下面有簡單畫的架構圖

以前使用heroku好像不用錢,但現在要綁信用卡了QQ
既然都要綁卡,倒不如用AWS的服務,順便學一下AWS Cloud
因此目前的想法是這樣,會先把Backend API架在EC2上面,這隻程式的核心邏輯就會在這邊
然後用Lambda當作Schedule Job,可能每10分鐘戳一次Backend API
最後就是DB的部分,原本有想說可以用DynamoDB來當資料庫,但是擔心用太多服務會變成需要收錢
想到最省錢的方法應該就是用notion的DB當成是db,反正可以從這邊用API撈資料
並且呈現也是直接用這個db呈現,所以就先這樣試試看
因此Backend API會需要寫資料到Notion db,而Notion db也會將資料庫的資料回傳給Backend API
規格的部分還是今天先想一下好了,反正今天都要用架構圖了
openapi: 3.0.0
info:
  title: Notion and Google Calendar Integration API
  version: 1.0.0
  description: API for integrating Notion and Google Calendar
paths:
  /notion/createNotionDatabase/{pageId}:
    post:
      summary: Create a Notion database
      parameters:
        - name: pageId
          in: path
          required: true
          description: ID of the Notion page to create the database under
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: array
                  items:
                    type: string
                properties:
                  type: object
                  description: JSON object defining database properties
      responses:
        '201':
          description: Notion database created successfully
        '400':
          description: Invalid input
  /notion/queryNotionDatabase/{databaseId}:
    post:
      summary: Query data from a Notion database
      parameters:
        - name: databaseId
          in: path
          required: true
          description: ID of the Notion database to query
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                filter:
                  type: object
                  description: JSON object defining query filters
                sorts:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Query results from Notion database
        '400':
          description: Invalid input
  /notion/updateNotionDatabase/{databaseId}:
    patch:
      summary: Update a Notion database
      parameters:
        - name: databaseId
          in: path
          required: true
          description: ID of the Notion database to update
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: array
                  items:
                    type: string
                description:
                  type: array
                  items:
                    type: string
                properties:
                  type: object
                  description: JSON object defining updated database properties
      responses:
        '200':
          description: Notion database updated successfully
        '400':
          description: Invalid input
  /googleCalendar/getGoogleCalendarEventList/{calendarId}:
    get:
      summary: Get a list of events from Google Calendar
      parameters:
        - name: calendarId
          in: path
          required: true
          description: ID of the Google Calendar to retrieve events from
          schema:
            type: string
      responses:
        '200':
          description: List of events from Google Calendar
        '404':
          description: Calendar not found
這邊會有4隻API
前面三隻是用來對Notion API進行操作的,主要是Create DB,查詢資料跟寫入資料
最後一隻是從Google Calendar那邊拿Event List的API
目前Notion DB的設計很簡單
| Notion DB | Example | 
|---|---|
| Title | Doctor | 
| DateTime | October 6, 2023 7:00 PM → 8:00 PM | 
就大概像這樣而已,原本想說要把顏色加進來,但好像要用API insert資料到google calendar才能夠用color id
到這邊DB,API spec跟架構圖大概都出來了
再來就是照圖施工了🚧