Skip to content

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

Interface: UserStore

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

UserStore interface for managing FireFlow users and their external accounts.

This store provides:

  • User CRUD operations
  • External account linking (persistentai, demo, telegram, web3, etc.)
  • Auto-migration: getOrCreateUserByExternalAccount creates users on first login
  • Demo user creation with stateless JWT tokens

Properties

createDemoUser()

createDemoUser: (displayName?) => Promise<DemoSessionResult>

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

Create a demo user with a stateless JWT token (valid for 7 days). No session storage needed - JWT is self-contained.

Parameters

displayName?

string

Returns

Promise<DemoSessionResult>


createUser()

createUser: (data) => Promise<DBUser>

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

Create a new user

Parameters

data

CreateUserData

Returns

Promise<DBUser>


getDemoExpiration()

getDemoExpiration: (userId) => Promise<Date | null>

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

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

Parameters

userId

string

Returns

Promise<Date | null>


getExternalAccounts()

getExternalAccounts: (userId) => Promise<ExternalAccount[]>

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

Get all external accounts for a user

Parameters

userId

string

Returns

Promise<ExternalAccount[]>


getOrCreateUserByExternalAccount()

getOrCreateUserByExternalAccount: (data) => Promise<DBUser>

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

Get or create user by external account (provider + externalId). This is the KEY method for auto-migration:

  • If external account exists, returns existing user
  • If not, creates new user + links external account

Used during session validation to auto-create users on login.

Parameters

data

ExternalAccountData & object

Returns

Promise<DBUser>


getUserById()

getUserById: (id) => Promise<DBUser | null>

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

Get user by internal FireFlow user ID

Parameters

id

string

Returns

Promise<DBUser | null>


isDemoExpired()

isDemoExpired: (userId) => Promise<boolean>

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

Check if a demo user has expired. Returns false if user is not demo.

Parameters

userId

string

Returns

Promise<boolean>


isUserDemo()

isUserDemo: (userId) => Promise<boolean>

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

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>


linkExternalAccount()

linkExternalAccount: (userId, data) => Promise<ExternalAccount>

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

Link a new external account to an existing user

Parameters

userId

string

data

ExternalAccountData

Returns

Promise<ExternalAccount>


unlinkExternalAccount()

unlinkExternalAccount: (externalAccountId) => Promise<void>

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

Unlink an external account

Parameters

externalAccountId

string

Returns

Promise<void>


updateUser()

updateUser: (id, data) => Promise<DBUser>

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

Update an existing user

Parameters

id

string

data

UpdateUserData

Returns

Promise<DBUser>


validateDemoToken()

validateDemoToken: (token) => Promise<DBUser | null>

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

Validate a demo JWT token and return the user. Returns null if token is invalid or expired.

Parameters

token

string

Returns

Promise<DBUser | null>

Licensed under BUSL-1.1