From f251f52fa90dd45f9132703f3a54fc5f745fa729 Mon Sep 17 00:00:00 2001 From: juancwu <46619361+juancwu@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:25:53 -0500 Subject: [PATCH] update tables primary key to use serial/integer --- internal/db/migrations/00001_create_users_table.sql | 2 +- internal/db/migrations/00002_create_tokens_table.sql | 4 ++-- internal/db/migrations/00003_create_profiles_table.sql | 4 ++-- internal/db/migrations/00004_create_files_table.sql | 4 ++-- internal/model/file.go | 4 ++-- internal/model/profile.go | 4 ++-- internal/model/token.go | 4 ++-- internal/model/user.go | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/internal/db/migrations/00001_create_users_table.sql b/internal/db/migrations/00001_create_users_table.sql index fd0d82f..d679c39 100644 --- a/internal/db/migrations/00001_create_users_table.sql +++ b/internal/db/migrations/00001_create_users_table.sql @@ -1,7 +1,7 @@ -- +goose Up -- +goose StatementBegin CREATE TABLE IF NOT EXISTS users ( - id TEXT PRIMARY KEY, + id SERIAL PRIMARY KEY NOT NULL, email TEXT UNIQUE NOT NULL, password_hash TEXT NULL, -- Allow null for passwordless login pending_email TEXT NULL, -- Store new email when changing email diff --git a/internal/db/migrations/00002_create_tokens_table.sql b/internal/db/migrations/00002_create_tokens_table.sql index 80ced69..96fbaf1 100644 --- a/internal/db/migrations/00002_create_tokens_table.sql +++ b/internal/db/migrations/00002_create_tokens_table.sql @@ -1,8 +1,8 @@ -- +goose Up -- +goose StatementBegin CREATE TABLE IF NOT EXISTS tokens ( - id TEXT PRIMARY KEY, - user_id TEXT NOT NULL, + id SERIAL PRIMARY KEY NOT NULL, + user_id INTEGER NOT NULL, type TEXT NOT NULL, token TEXT UNIQUE NOT NULL, expires_at TIMESTAMP NOT NULL, diff --git a/internal/db/migrations/00003_create_profiles_table.sql b/internal/db/migrations/00003_create_profiles_table.sql index c06cfe4..edd5ede 100644 --- a/internal/db/migrations/00003_create_profiles_table.sql +++ b/internal/db/migrations/00003_create_profiles_table.sql @@ -1,8 +1,8 @@ -- +goose Up -- +goose StatementBegin CREATE TABLE IF NOT EXISTS profiles ( - id TEXT PRIMARY KEY, - user_id TEXT UNIQUE NOT NULL, + id SERIAL PRIMARY KEY NOT NULL, + user_id INTEGER UNIQUE NOT NULL, name TEXT NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, diff --git a/internal/db/migrations/00004_create_files_table.sql b/internal/db/migrations/00004_create_files_table.sql index 413d2ac..ee97969 100644 --- a/internal/db/migrations/00004_create_files_table.sql +++ b/internal/db/migrations/00004_create_files_table.sql @@ -1,8 +1,8 @@ -- +goose Up -- +goose StatementBegin CREATE TABLE IF NOT EXISTS files ( - id TEXT PRIMARY KEY, - user_id TEXT NOT NULL, + id SERIAL PRIMARY KEY NOT NULL, + user_id INTEGER NOT NULL, owner_type TEXT NOT NULL, owner_id TEXT NOT NULL, type TEXT NOT NULL, diff --git a/internal/model/file.go b/internal/model/file.go index 9087082..a79c301 100644 --- a/internal/model/file.go +++ b/internal/model/file.go @@ -9,8 +9,8 @@ const ( ) type File struct { - ID string `db:"id"` - UserID string `db:"user_id"` // Who owns/created this file + ID uint64 `db:"id"` + UserID uint64 `db:"user_id"` // Who owns/created this file OwnerType string `db:"owner_type"` // "user", "profile", etc. - the entity that owns the file OwnerID string `db:"owner_id"` // Polymorphic FK Type string `db:"type"` diff --git a/internal/model/profile.go b/internal/model/profile.go index 32ef07a..36e6bd5 100644 --- a/internal/model/profile.go +++ b/internal/model/profile.go @@ -3,8 +3,8 @@ package model import "time" type Profile struct { - ID string `db:"id"` - UserID string `db:"user_id"` + ID uint64 `db:"id"` + UserID uint64 `db:"user_id"` Name string `db:"name"` CreatedAt time.Time `db:"created_at"` UpdatedAt time.Time `db:"updated_at"` diff --git a/internal/model/token.go b/internal/model/token.go index 0746c7d..5a7ec18 100644 --- a/internal/model/token.go +++ b/internal/model/token.go @@ -5,8 +5,8 @@ import ( ) type Token struct { - ID string `db:"id"` - UserID string `db:"user_id"` + ID uint64 `db:"id"` + UserID uint64 `db:"user_id"` Type string `db:"type"` // "email_verify" or "password_reset" Token string `db:"token"` ExpiresAt time.Time `db:"expires_at"` diff --git a/internal/model/user.go b/internal/model/user.go index a823efd..a077c7f 100644 --- a/internal/model/user.go +++ b/internal/model/user.go @@ -3,7 +3,7 @@ package model import "time" type User struct { - ID string `db:"id"` + ID uint64 `db:"id"` Email string `db:"email"` // Allow null for passwordless users PasswordHash *string `db:"password_hash"`