Update usrmgr schema

Signed-off-by: gearnode <bryan@frimin.fr>
This commit is contained in:
gearnode
2025-02-04 15:47:57 -08:00
parent 0e9746bbee
commit 41b957f21b
6 changed files with 23 additions and 10 deletions

View File

@@ -1,12 +1,12 @@
CREATE TABLE usrmgr_users ( CREATE TABLE usrmgr_users (
id TEXT PRIMARY KEY, id TEXT PRIMARY KEY,
created_at TIMESTAMP NOT NULL DEFAULT now(), created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT now() updated_at TIMESTAMP NOT NULL
); );
CREATE TABLE usrmgr_sessions ( CREATE TABLE usrmgr_sessions (
id TEXT PRIMARY KEY, id TEXT PRIMARY KEY,
user_id TEXT NOT NULL REFERENCES usrmgr_users(id), user_id TEXT NOT NULL REFERENCES usrmgr_users(id),
created_at TIMESTAMP NOT NULL DEFAULT now(), created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT now() updated_at TIMESTAMP NOT NULL
); );

View File

@@ -0,0 +1,5 @@
CREATE EXTENSION citext;
ALTER TABLE usrmgr_users
ADD COLUMN email_address CITEXT NOT NULL,
ADD COLUMN hashed_password BYTEA NOT NULL;

View File

@@ -0,0 +1 @@
ALTER TABLE usrmgr_users ADD UNIQUE (email_address);

View File

@@ -0,0 +1 @@
ALTER TABLE usrmgr_sessions ADD COLUMN expired_at TIMESTAMP WITH TIME ZONE NOT NULL;

View File

@@ -30,6 +30,7 @@ type (
Session struct { Session struct {
ID gid.GID ID gid.GID
UserID gid.GID UserID gid.GID
ExpiredAt time.Time
CreatedAt time.Time CreatedAt time.Time
UpdatedAt time.Time UpdatedAt time.Time
} }
@@ -42,6 +43,8 @@ func (s Session) CursorKey() page.CursorKey {
func (s *Session) scan(r pgx.Row) error { func (s *Session) scan(r pgx.Row) error {
return r.Scan( return r.Scan(
&s.ID, &s.ID,
&s.UserID,
&s.ExpiredAt,
&s.CreatedAt, &s.CreatedAt,
&s.UpdatedAt, &s.UpdatedAt,
) )

View File

@@ -16,7 +16,6 @@ package coredata
import ( import (
"context" "context"
"fmt"
"time" "time"
"github.com/getprobo/probo/pkg/gid" "github.com/getprobo/probo/pkg/gid"
@@ -28,9 +27,11 @@ import (
type ( type (
User struct { User struct {
ID gid.GID ID gid.GID
CreatedAt time.Time EmailAddress string
UpdatedAt time.Time HashedPassword []byte
CreatedAt time.Time
UpdatedAt time.Time
} }
) )
@@ -41,6 +42,8 @@ func (u User) CursorKey() page.CursorKey {
func (u *User) scan(r pgx.Row) error { func (u *User) scan(r pgx.Row) error {
return r.Scan( return r.Scan(
&u.ID, &u.ID,
&u.EmailAddress,
&u.HashedPassword,
&u.CreatedAt, &u.CreatedAt,
&u.UpdatedAt, &u.UpdatedAt,
) )
@@ -54,6 +57,8 @@ func (u *User) LoadByID(
q := ` q := `
SELECT SELECT
id, id,
email_address,
hashed_password,
created_at, created_at,
updated_at updated_at
FROM FROM
@@ -63,8 +68,6 @@ WHERE
LIMIT 1; LIMIT 1;
` `
q = fmt.Sprintf(q)
args := pgx.NamedArgs{"user_id": userID} args := pgx.NamedArgs{"user_id": userID}
r := conn.QueryRow(ctx, q, args) r := conn.QueryRow(ctx, q, args)