5
pkg/usrmgr/coredata/migrations/20250225T153220Z.sql
Normal file
5
pkg/usrmgr/coredata/migrations/20250225T153220Z.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
-- Add organization_id column to usrmgr_users table
|
||||
ALTER TABLE usrmgr_users ADD COLUMN organization_id TEXT REFERENCES organizations(id);
|
||||
|
||||
-- Create an index for faster lookups
|
||||
CREATE INDEX usrmgr_users_organization_id_idx ON usrmgr_users(organization_id);
|
||||
@@ -16,7 +16,6 @@ package coredata
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/getprobo/probo/pkg/gid"
|
||||
@@ -57,17 +56,17 @@ func (s *Session) LoadByID(
|
||||
q := `
|
||||
SELECT
|
||||
id,
|
||||
user_id,
|
||||
expired_at,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
sessions
|
||||
usrmgr_sessions
|
||||
WHERE
|
||||
id = @session_id
|
||||
LIMIT 1;
|
||||
`
|
||||
|
||||
q = fmt.Sprintf(q)
|
||||
|
||||
args := pgx.NamedArgs{"session_id": sessionID}
|
||||
|
||||
r := conn.QueryRow(ctx, q, args)
|
||||
@@ -88,7 +87,7 @@ func (s *Session) Insert(
|
||||
) error {
|
||||
q := `
|
||||
INSERT INTO
|
||||
sessions (id, user_id, expired_at, created_at, updated_at)
|
||||
usrmgr_sessions (id, user_id, expired_at, created_at, updated_at)
|
||||
VALUES (
|
||||
@session_id,
|
||||
@user_id,
|
||||
@@ -109,3 +108,44 @@ VALUES (
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *Session) Update(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
) error {
|
||||
q := `
|
||||
UPDATE usrmgr_sessions
|
||||
SET
|
||||
expired_at = @expired_at,
|
||||
updated_at = @updated_at
|
||||
WHERE
|
||||
id = @session_id
|
||||
`
|
||||
|
||||
args := pgx.NamedArgs{
|
||||
"session_id": s.ID,
|
||||
"expired_at": s.ExpiredAt,
|
||||
"updated_at": s.UpdatedAt,
|
||||
}
|
||||
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
return err
|
||||
}
|
||||
|
||||
func DeleteSession(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
sessionID gid.GID,
|
||||
) error {
|
||||
q := `
|
||||
DELETE FROM
|
||||
usrmgr_sessions
|
||||
WHERE
|
||||
id = @session_id
|
||||
`
|
||||
|
||||
args := pgx.NamedArgs{"session_id": sessionID}
|
||||
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ type (
|
||||
ID gid.GID
|
||||
EmailAddress string
|
||||
HashedPassword []byte
|
||||
OrganizationID gid.GID
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
@@ -43,6 +44,7 @@ func (u *User) scan(r pgx.Row) error {
|
||||
&u.ID,
|
||||
&u.EmailAddress,
|
||||
&u.HashedPassword,
|
||||
&u.OrganizationID,
|
||||
&u.CreatedAt,
|
||||
&u.UpdatedAt,
|
||||
)
|
||||
@@ -58,12 +60,13 @@ SELECT
|
||||
id,
|
||||
email_address,
|
||||
hashed_password,
|
||||
organization_id,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
users
|
||||
usrmgr_users
|
||||
WHERE
|
||||
email = @user_email
|
||||
email_address = @user_email
|
||||
LIMIT 1;
|
||||
`
|
||||
|
||||
@@ -80,3 +83,67 @@ LIMIT 1;
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *User) LoadByID(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
userID gid.GID,
|
||||
) error {
|
||||
q := `
|
||||
SELECT
|
||||
id,
|
||||
email_address,
|
||||
hashed_password,
|
||||
organization_id,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
usrmgr_users
|
||||
WHERE
|
||||
id = @user_id
|
||||
LIMIT 1;
|
||||
`
|
||||
|
||||
args := pgx.NamedArgs{"user_id": userID}
|
||||
|
||||
r := conn.QueryRow(ctx, q, args)
|
||||
|
||||
u2 := User{}
|
||||
if err := u2.scan(r); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*u = u2
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *User) Insert(
|
||||
ctx context.Context,
|
||||
conn pg.Conn,
|
||||
) error {
|
||||
q := `
|
||||
INSERT INTO
|
||||
usrmgr_users (id, email_address, hashed_password, organization_id, created_at, updated_at)
|
||||
VALUES (
|
||||
@user_id,
|
||||
@email_address,
|
||||
@hashed_password,
|
||||
@organization_id,
|
||||
@created_at,
|
||||
@updated_at
|
||||
)
|
||||
`
|
||||
|
||||
args := pgx.NamedArgs{
|
||||
"user_id": u.ID,
|
||||
"email_address": u.EmailAddress,
|
||||
"hashed_password": u.HashedPassword,
|
||||
"organization_id": "AZSfP_xAcAC5IAAAAAAltA",
|
||||
"created_at": u.CreatedAt,
|
||||
"updated_at": u.UpdatedAt,
|
||||
}
|
||||
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user