Add getAccountsByIds postgres example
Relates to:
https://discord.com/channels/1253563208833433701/1253563209462448241/1312119096514580550
Risks
Adapters aren't implemented for anything other than postgres
Haven't even installed anything or run locally to verify it works
Background
What does this PR do?
Adds getAccountsByIds to avoid sending many getAccountById requests in parallel in cases where there are many participantIds
What kind of change is this?
Bug fixes (non-breaking change which fixes an issue) Improvements (misc. changes to existing features) Features (non-breaking change which adds functionality)
Why are we doing this? Any context or related work?
When there are a large number of participants, getActorDetails will hammer the DB in parallel.
Documentation changes needed?
Testing
PR has not been tested
Where should a reviewer start?
Detailed testing steps
Database changes
Discord username
CalvinLeGassick, tito
someone should pull and verify it works locally before a merge, if we do want to merge without testing then it needs to PR to develop branch
@twilwa @monilpat we have a failing test https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680
Run cd packages/core && pnpm test:coverage
> @ai1[6](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:7)z/[email protected] test:coverage /home/runner/work/eliza/eliza/packages/core
> vitest run --coverage
RUN v2.1.5 /home/runner/work/eliza/eliza/packages/core
Coverage enabled with v8
stdout | src/tests/database.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/relationships.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/goals.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
✓ src/tests/relationships.test.ts (6 tests) 1[7](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:8)ms
✓ src/tests/database.test.ts (8 tests) 10ms
✓ src/tests/goals.test.ts (8 tests) 12ms
stdout | src/tests/videoGeneration.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/providers.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/messages.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
✓ src/tests/videoGeneration.test.ts (3 tests) 13ms
✓ src/tests/providers.test.ts (5 tests) 7ms
❯ src/tests/messages.test.ts (6 tests | 1 failed) 13ms
× Messages Library > getActorDetails should return actors based on roomId 7ms
→ runtime.databaseAdapter.getAccountsByIds is not a function
stdout | src/tests/actions.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/generation.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/evaluators.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/generation.test.ts
[ElizaLogger] Initializing with:
isNode: true
verbose: false
VERBOSE env: undefined
NODE_ENV: test
ℹ INFORMATIONS
Loading embedding settings:
{"OLLAMA_EMBEDDING_MODEL":"mxbai-embed-large"}
ℹ INFORMATIONS
Loading character settings:
{"ARGV":["/opt/hostedtoolcache/node/23.3.0/x64/bin/node","/home/runner/work/eliza/eliza/node_modules/tinypool/dist/entry/process.js"],"CWD":"/home/runner/work/eliza/eliza/packages/core"}
ℹ INFORMATIONS
Parsed settings:
{"USE_OPENAI_EMBEDDING_TYPE":"undefined","USE_OLLAMA_EMBEDDING_TYPE":"undefined","OLLAMA_EMBEDDING_MODEL":"mxbai-embed-large"}
✓ src/tests/actions.test.ts (6 tests) 14ms
✓ src/tests/evaluators.test.ts (4 tests) 9ms
stdout | src/tests/posts.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
✓ src/tests/posts.test.ts (3 tests) 5ms
stdout | src/tests/models.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
✓ src/tests/models.test.ts (7 tests) [8](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:9)ms
(node:9831) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
✓ src/tests/generation.test.ts (7 tests) [9](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:10)ms
stdout | src/tests/defaultCharacters.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
✓ src/tests/defaultCharacters.test.ts ([11](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:12) tests | 1 skipped) 7ms
stdout | src/tests/cache.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
✓ src/tests/cache.test.ts (2 tests) 8ms
stdout | src/tests/env.test.ts
Current directory: /home/runner/work/eliza/eliza/packages/core/src/test_resources
Trying to load env from: /home/runner/work/eliza/eliza/packages/core/.env.test
stdout | src/tests/env.test.ts > Environment Setup > should verify .env.test file exists
Current working directory: /home/runner/work/eliza/eliza/packages/core
__dirname: /home/runner/work/eliza/eliza/packages/core/src/tests
Path /home/runner/work/eliza/eliza/packages/core/.env.test exists: true
Path /home/runner/work/eliza/eliza/packages/core/packages/core/.env.test exists: false
Path /home/runner/work/eliza/eliza/packages/core/.env.test exists: true
Path /home/runner/work/eliza/eliza/packages/core/src/.env.test exists: false
Path /home/runner/work/eliza/eliza/packages/core/src/tests/.env.test exists: false
✓ src/tests/env.test.ts (1 test) 3ms
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 1 ⎯⎯⎯⎯⎯⎯⎯
FAIL src/tests/messages.test.ts > Messages Library > getActorDetails should return actors based on roomId
TypeError: runtime.databaseAdapter.getAccountsByIds is not a function
❯ Module.getActorDetails src/messages.ts:22:39
20| await runtime.databaseAdapter.getParticipantsForRoom(roomId);
21| const actors =
22| await runtime.databaseAdapter.getAccountsByIds(participantIds);
| ^
23| return actors.filter((actor): actor is Actor => actor !== null);
24| }
❯ src/tests/messages.test.ts:58:24
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/1]⎯
Test Files 1 failed | [13](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:14) passed ([14](https://github.com/ai16z/eliza/actions/runs/12090692895/job/33723116445?pr=680#step:9:15))
Tests 1 failed | 75 passed | 1 skipped (77)
Start at 02:40:01
Duration 2.35s (transform 441ms, setup 259ms, collect 1.20s, tests 137ms, environment 4ms, prepare 1.47s)
Error: TypeError: runtime.databaseAdapter.getAccountsByIds is not a function
❯ Module.getActorDetails src/messages.ts:22:39
❯ src/tests/messages.test.ts:58:24
ELIFECYCLE Command failed with exit code 1.
Error: Process completed with exit code 1.