diff --git a/auth/sql/migrations/000001_users.up.sql b/auth/sql/migrations/000001_users.up.sql index 25358905..7076151d 100644 --- a/auth/sql/migrations/000001_users.up.sql +++ b/auth/sql/migrations/000001_users.up.sql @@ -1,7 +1,8 @@ begin; create table users( - id uuid not null primary key, + pk serial primary key, + id uuid not null default gen_random_uuid(), username varchar(256) not null unique, email varchar(320) not null unique, password text, @@ -12,7 +13,7 @@ create table users( ); create table oidc_handle( - user_id uuid not null references users(id) on delete cascade, + user_pk integer not null references users(pk) on delete cascade, provider varchar(256) not null, id text not null, @@ -23,7 +24,7 @@ create table oidc_handle( refresh_token text, expire_at timestamptz, - constraint oidc_handle_pk primary key (user_id, provider) + constraint oidc_handle_pk primary key (user_pk, provider) ); commit; diff --git a/auth/sql/migrations/000003_sessions.up.sql b/auth/sql/migrations/000003_sessions.up.sql index f9383ed9..61e11291 100644 --- a/auth/sql/migrations/000003_sessions.up.sql +++ b/auth/sql/migrations/000003_sessions.up.sql @@ -1,9 +1,10 @@ begin; create table sessions( - id uuid not null primary key, + pk serial primary key, + id uuid not null default gen_random_uuid(), token varchar(128) not null unique, - user_id uuid not null references users(id) on delete cascade, + user_pk integer not null references users(pk) on delete cascade, created_date timestamptz not null default now()::timestamptz, last_used timestamptz not null default now()::timestamptz, device varchar(1024) diff --git a/auth/sql/queries/sessions.sql b/auth/sql/queries/sessions.sql index a8e9a285..82127d80 100644 --- a/auth/sql/queries/sessions.sql +++ b/auth/sql/queries/sessions.sql @@ -5,7 +5,7 @@ select sqlc.embed(u) from users as u - inner join sessions as s on u.id = s.user_id + inner join sessions as s on u.pk = s.user_pk where s.token = $1 limit 1; @@ -20,24 +20,26 @@ where -- name: GetUserSessions :many select - * + s.* from - sessions + sessions as s + inner join users as u on u.pk = s.user_pk where - user_id = $1 + u.pk = $1 order by last_used; -- name: CreateSession :one -insert into sessions(token, user_id, device) +insert into sessions(token, user_pk, device) values ($1, $2, $3) returning *; -- name: DeleteSession :one -delete from sessions -where id = $1 - and user_id = $2 +delete from sessions as s using users as u +where s.user_pk = u.pk + and s.id = $1 + and u.id = sqlc.arg(user_id) returning - *; + s.*; diff --git a/auth/sql/queries/users.sql b/auth/sql/queries/users.sql index b08f1787..c57315ec 100644 --- a/auth/sql/queries/users.sql +++ b/auth/sql/queries/users.sql @@ -21,10 +21,13 @@ limit $1; -- name: GetUser :many select sqlc.embed(u), - sqlc.embed(h) + h.provider, + h.id, + h.username, + h.profile_url from users as u - left join oidc_handle as h on u.id = h.user_id + left join oidc_handle as h on u.pk = h.user_pk where u.id = $1;