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
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
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
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
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
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
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
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
Returns
Promise<ExternalAccount>
Implementation of
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
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>