Skip to content

PersistentAI API Documentation / @persistentai/fireflow-trpc / server / PgUserStore

Class: PgUserStore

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:33

PostgreSQL implementation of UserStore.

Features:

  • Auto-creates users on first login via getOrCreateUserByExternalAccount
  • Supports multiple external accounts per user
  • Stateless demo sessions with JWT (7 day expiry)
  • Transaction support for atomic operations

Implements

Constructors

Constructor

new PgUserStore(db): PgUserStore

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:34

Parameters

db

NodePgDatabase<Record<string, unknown>> & object

Returns

PgUserStore

Methods

createDemoUser()

createDemoUser(displayName?): Promise<DemoSessionResult>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:228

Create a demo user with stateless JWT token (7 day expiry). Demo status is derived from having only one external account with provider='demo'.

Parameters

displayName?

string

Returns

Promise<DemoSessionResult>

Implementation of

UserStore.createDemoUser


createUser()

createUser(data): Promise<DBUser>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:46

Create a new user

Parameters

data

CreateUserData

Returns

Promise<DBUser>

Implementation of

UserStore.createUser


getDemoExpiration()

getDemoExpiration(userId): Promise<Date | null>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:341

Get the expiration date for a demo user. Returns null if user has no demo account. Expiration = demo account createdAt + 7 days

Parameters

userId

string

Returns

Promise<Date | null>

Implementation of

UserStore.getDemoExpiration


getExternalAccounts()

getExternalAccounts(userId): Promise<ExternalAccount[]>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:170

Get all external accounts for a user

Parameters

userId

string

Returns

Promise<ExternalAccount[]>

Implementation of

UserStore.getExternalAccounts


getOrCreateUserByExternalAccount()

getOrCreateUserByExternalAccount(data): Promise<DBUser>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:88

KEY METHOD for auto-migration. Gets existing user by external account, or creates new user + links account.

Parameters

data

ExternalAccountData & object

Returns

Promise<DBUser>

Implementation of

UserStore.getOrCreateUserByExternalAccount


getUserById()

getUserById(id): Promise<DBUser | null>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:36

Get user by internal FireFlow user ID

Parameters

id

string

Returns

Promise<DBUser | null>

Implementation of

UserStore.getUserById


isDemoExpired()

isDemoExpired(userId): Promise<boolean>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:357

Check if a demo user has expired. Returns false if user has no demo account.

Parameters

userId

string

Returns

Promise<boolean>

Implementation of

UserStore.isDemoExpired


isUserDemo()

isUserDemo(userId): Promise<boolean>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:331

Check if a user is a demo user. A user is demo if they have ONLY ONE external account with provider='demo'.

Parameters

userId

string

Returns

Promise<boolean>

Implementation of

UserStore.isUserDemo


linkExternalAccount()

linkExternalAccount(userId, data): Promise<ExternalAccount>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:177

Link a new external account to an existing user

Parameters

userId

string

data

ExternalAccountData

Returns

Promise<ExternalAccount>

Implementation of

UserStore.linkExternalAccount


unlinkExternalAccount()

unlinkExternalAccount(externalAccountId): Promise<void>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:218

Unlink an external account

Parameters

externalAccountId

string

Returns

Promise<void>

Implementation of

UserStore.unlinkExternalAccount


updateUser()

updateUser(id, data): Promise<DBUser>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:67

Update an existing user

Parameters

id

string

data

UpdateUserData

Returns

Promise<DBUser>

Implementation of

UserStore.updateUser


validateDemoToken()

validateDemoToken(token): Promise<DBUser | null>

Defined in: packages/fireflow-trpc/server/stores/userStore/pgUserStore.ts:272

Validate demo JWT token and return user. Token validation is stateless - no database lookup for the token itself.

Parameters

token

string

Returns

Promise<DBUser | null>

Implementation of

UserStore.validateDemoToken

Licensed under BUSL-1.1