User


上週的內容中,後端已經可以成功的從 OAuth 獲取使用者的資料,而這周要透過從 OAuth 獲取的使用者資料實作使用者的驗證。

在開始之前,如果上週的內容沒有完成的話可以選擇將程式碼複製下來:

https://github.com/nycu-sdc/full-stack-advanced-backend

git clone <https://github.com/NYCU-SDC/full-stack-advanced-backend.git>
cd full-stack-advanced-backend
git checkout feat/add-google-oauth

Database Migration

而一開始,需要先設計要儲存的格式,可以透過上週實作的 UserInfo 來實作類似的結構。

type UserInfo struct {
	ID    string
	Email string
	Name  string
}

在之前的內容中有提到,要在 Database 內新增不同的 Schema 會需要做幾件事:

需要新增的檔案結構如下:

├── internal
│   ├── database
│   │   ├── migrations
│   │   │   ├── 2_user.down.sql
│   │   │   ├── 2_user.up.sql
│   ├── user
│   │   ├── queries.sql

Migration File

可以現在 internal/database/migrations 內放入 Migration Up 及 Migration Down 的檔案

CREATE TABLE IF NOT EXISTS users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    sid   VARCHAR(255) UNIQUE NOT NULL,
    role     VARCHAR(50) NOT NULL,
    updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
    created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);