Refactor runtime bootstrap and ship control flows
This commit is contained in:
41
apps/backend/Auth/Simulation/AuthSchemaInitializer.cs
Normal file
41
apps/backend/Auth/Simulation/AuthSchemaInitializer.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using Npgsql;
|
||||
|
||||
namespace SpaceGame.Api.Auth.Simulation;
|
||||
|
||||
public sealed class AuthSchemaInitializer(NpgsqlDataSource dataSource)
|
||||
{
|
||||
public async Task EnsureSchemaAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
await using var command = dataSource.CreateCommand("""
|
||||
create table if not exists auth_users (
|
||||
id uuid primary key,
|
||||
email text not null unique,
|
||||
password_hash text not null,
|
||||
created_at_utc timestamptz not null,
|
||||
roles text[] not null default '{}'
|
||||
);
|
||||
|
||||
alter table auth_users
|
||||
add column if not exists roles text[] not null default '{}';
|
||||
|
||||
create table if not exists auth_refresh_tokens (
|
||||
id uuid primary key,
|
||||
user_id uuid not null references auth_users(id) on delete cascade,
|
||||
token_hash text not null unique,
|
||||
created_at_utc timestamptz not null,
|
||||
expires_at_utc timestamptz not null,
|
||||
revoked_at_utc timestamptz null
|
||||
);
|
||||
|
||||
create table if not exists auth_password_reset_tokens (
|
||||
id uuid primary key,
|
||||
user_id uuid not null references auth_users(id) on delete cascade,
|
||||
token_hash text not null unique,
|
||||
created_at_utc timestamptz not null,
|
||||
expires_at_utc timestamptz not null,
|
||||
consumed_at_utc timestamptz null
|
||||
);
|
||||
""");
|
||||
await command.ExecuteNonQueryAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user