Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions Dockerfile.hypersync-indexer
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move this to infra/ and add a railway.json file

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
FROM node:20-slim AS base

FROM base AS builder
WORKDIR /app
COPY . .
RUN npx turbo@2.3.1 prune @anticapture/hypersync-indexer --docker

FROM base AS installer
RUN apt-get update && apt-get install -y curl && npm install -g pnpm ts-node
WORKDIR /app
COPY package.json package.json
COPY pnpm-lock.yaml pnpm-lock.yaml
COPY --from=builder /app/out/json/ .
RUN pnpm install
COPY --from=builder /app/out/full/ .
COPY --from=builder /app/turbo.json turbo.json
WORKDIR /app/apps/hypersync-indexer
RUN npm install --prefix generated --legacy-peer-deps
RUN pnpm envio codegen

FROM base AS runner
ENV NODE_ENV=production
RUN apt-get update && apt-get install -y curl && npm install -g ts-node
WORKDIR /app
COPY --from=installer /app .
WORKDIR /app/apps/hypersync-indexer

ENTRYPOINT ["npm", "run", "start"]
2 changes: 1 addition & 1 deletion apps/api/cmd/aave.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ if (!daoClient) {
throw new Error(`Client not found for DAO ${env.DAO_ID}`);
}

const pgClient = drizzle(env.DATABASE_URL, { schema, casing: "snake_case" });
const pgClient = drizzle(env.DATABASE_URL, { schema });

health(app, pgClient);

Expand Down
3 changes: 1 addition & 2 deletions apps/api/cmd/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ if (!daoClient) {
throw new Error(`Client not found for DAO ${env.DAO_ID}`);
}

const pgClient = drizzle(env.DATABASE_URL, { schema, casing: "snake_case" });
const pgClient = drizzle(env.DATABASE_URL, { schema });

health(app, pgClient);

Expand Down Expand Up @@ -351,7 +351,6 @@ tokenMetrics(app, tokenMetricsService);
if (daoClient.supportOffchainData()) {
const pgUnifiedClient = drizzle(env.DATABASE_URL, {
schema: { ...schema, ...offchainSchema },
casing: "snake_case",
});

const offchainProposalsRepo = wrapWithTracing(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
const createHistoryRow = (
overrides: Partial<BalanceHistoryInsert> = {},
): BalanceHistoryInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
accountId: VALID_ADDRESS,
Expand All @@ -38,6 +39,7 @@
const createTransferRow = (
overrides: Partial<TransferInsert> = {},
): TransferInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
tokenId: TOKEN_ID,
Expand Down Expand Up @@ -144,7 +146,7 @@

it("should accept orderBy=delta", async () => {
// Insert 2 rows with different delta/deltaMod values
await db.insert(balanceHistory).values([

Check failure on line 149 in apps/api/src/controllers/account-balance/historical.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/historical.integration.test.ts > Historical Balances Controller > GET /accounts/{address}/balances/historical > should accept orderBy=delta

Error: Failed query: insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18) params: test-id,0xabc1230000000000000000000000000000000000000000000000000000000001,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,100,100,1700000000,0,test-id,0xabc1230000000000000000000000000000000000000000000000000000000002,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500,500,1700000000,0 ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/historical.integration.test.ts:149:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 100n, 100n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500n, 500n, 1700000000n, +0 ] } Caused by: Caused by: error: duplicate key value violates unique constraint "BalanceHistory_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'BalanceHistory', dataType: undefined, constraint: 'BalanceHistory_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 100n, 100n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500n, 500n, 1700000000n, +0 ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createHistoryRow({
transactionHash: TX_1,
delta: 100n,
Expand Down Expand Up @@ -207,7 +209,7 @@

it("should accept orderDirection=asc", async () => {
// Insert 2 rows with different timestamps
await db.insert(balanceHistory).values([

Check failure on line 212 in apps/api/src/controllers/account-balance/historical.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/historical.integration.test.ts > Historical Balances Controller > GET /accounts/{address}/balances/historical > should accept orderDirection=asc

Error: Failed query: insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18) params: test-id,0xabc1230000000000000000000000000000000000000000000000000000000001,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500000000000000000,500000000000000000,1700000000,0,test-id,0xabc1230000000000000000000000000000000000000000000000000000000002,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500000000000000000,500000000000000000,1700001000,0 ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/historical.integration.test.ts:212:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1700001000n, +0 ] } Caused by: Caused by: error: duplicate key value violates unique constraint "BalanceHistory_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'BalanceHistory', dataType: undefined, constraint: 'BalanceHistory_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1700001000n, +0 ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187
createHistoryRow({
transactionHash: TX_1,
timestamp: 1700000000n,
Expand Down Expand Up @@ -248,7 +250,7 @@

it("should accept fromValue and toValue parameters", async () => {
// deltaMod=100n is within range [50, 200], deltaMod=10000n is outside
await db.insert(balanceHistory).values([

Check failure on line 253 in apps/api/src/controllers/account-balance/historical.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/historical.integration.test.ts > Historical Balances Controller > GET /accounts/{address}/balances/historical > should accept fromValue and toValue parameters

Error: Failed query: insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18) params: test-id,0xabc1230000000000000000000000000000000000000000000000000000000001,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500000000000000000,100,1700000000,0,test-id,0xabc1230000000000000000000000000000000000000000000000000000000002,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500000000000000000,10000,1700000000,0 ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/historical.integration.test.ts:253:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 100n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 10000n, 1700000000n, +0 ] } Caused by: Caused by: error: duplicate key value violates unique constraint "BalanceHistory_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'BalanceHistory', dataType: undefined, constraint: 'BalanceHistory_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 100n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 10000n, 1700000000n, +0 ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createHistoryRow({
transactionHash: TX_1,
deltaMod: 100n,
Expand Down Expand Up @@ -282,7 +284,7 @@

it("should accept fromDate and toDate parameters", async () => {
// timestamp=1700000000 is within [1699000000, 1701000000], timestamp=1695000000 is not
await db.insert(balanceHistory).values([

Check failure on line 287 in apps/api/src/controllers/account-balance/historical.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/historical.integration.test.ts > Historical Balances Controller > GET /accounts/{address}/balances/historical > should accept fromDate and toDate parameters

Error: Failed query: insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18) params: test-id,0xabc1230000000000000000000000000000000000000000000000000000000001,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500000000000000000,500000000000000000,1700000000,0,test-id,0xabc1230000000000000000000000000000000000000000000000000000000002,ENS,0x1234567890123456789012345678901234567890,1000000000000000000,500000000000000000,500000000000000000,1695000000,0 ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/historical.integration.test.ts:287:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1695000000n, +0 ] } Caused by: Caused by: error: duplicate key value violates unique constraint "BalanceHistory_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'BalanceHistory', dataType: undefined, constraint: 'BalanceHistory_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "BalanceHistory" ("id", "transactionHash", "daoId", "accountId", "balance", "delta", "deltaMod", "timestamp", "logIndex") values ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($10, $11, $12, $13, $14, $15, $16, $17, $18)', params: [ 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000001', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1700000000n, +0, 'test-id', '0xabc1230000000000000000000000000000000000000000000000000000000002', 'ENS', '0x1234567890123456789012345678901234567890', 1000000000000000000n, 500000000000000000n, 500000000000000000n, 1695000000n, +0 ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187
createHistoryRow({
transactionHash: TX_1,
timestamp: 1700000000n,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
const createAccountBalanceRow = (
overrides: Partial<AccountBalanceInsert> = {},
): AccountBalanceInsert => ({
id: "test-id",
accountId: COUNTERPART,
tokenId: TOKEN_ID,
balance: 200000000000000000n,
Expand All @@ -35,6 +36,7 @@
const createTransferRow = (
overrides: Partial<TransferInsert> = {},
): TransferInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
tokenId: TOKEN_ID,
Expand Down Expand Up @@ -139,7 +141,7 @@
});

it("should accept orderBy and orderDirection parameters", async () => {
await db.insert(accountBalance).values([

Check failure on line 144 in apps/api/src/controllers/account-balance/interactions.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/interactions.integration.test.ts > Account Interactions Controller > GET /balances/{address}/interactions > should accept orderBy and orderDirection parameters

Error: Failed query: insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10) params: test-id,0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,100,0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD,test-id,0x3333333333333333333333333333333333333333,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,200,0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/interactions.integration.test.ts:144:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 100n, '0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD', 'test-id', '0x3333333333333333333333333333333333333333', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 200n, '0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD' ] } Caused by: Caused by: error: duplicate key value violates unique constraint "AccountBalance_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'AccountBalance', dataType: undefined, constraint: 'AccountBalance_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 100n, '0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD', 'test-id', '0x3333333333333333333333333333333333333333', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 200n, '0xABcdEFABcdEFabcdEfAbCdefabcdeFABcDEFabCD' ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createAccountBalanceRow({ accountId: COUNTERPART, balance: 100n }),
createAccountBalanceRow({
accountId: COUNTERPART_2,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
const createAccountBalanceRow = (
overrides: Partial<AccountBalanceInsert> = {},
): AccountBalanceInsert => ({
id: "test-id",
accountId: VALID_ADDRESS,
tokenId: TOKEN_ID,
balance: 1200000000000000000n,
Expand All @@ -44,6 +45,7 @@
const createTransferRow = (
overrides: Partial<TransferInsert> = {},
): TransferInsert => ({
id: "test-id",
transactionHash:
"0xabc1230000000000000000000000000000000000000000000000000000000001",
daoId: "ENS",
Expand Down Expand Up @@ -153,7 +155,7 @@
});

it("should accept orderBy=variation", async () => {
await db.insert(accountBalance).values([

Check failure on line 158 in apps/api/src/controllers/account-balance/listing.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/listing.integration.test.ts > Account Balances Controller > GET /balances > should accept orderBy=variation

Error: Failed query: insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10) params: test-id,0x1234567890123456789012345678901234567890,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,1000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa,test-id,0x2222222222222222222222222222222222222222,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,2000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/listing.integration.test.ts:158:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 2000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ] } Caused by: Caused by: error: duplicate key value violates unique constraint "AccountBalance_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'AccountBalance', dataType: undefined, constraint: 'AccountBalance_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 2000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createAccountBalanceRow({ accountId: VALID_ADDRESS, balance: 1000n }),
createAccountBalanceRow({
accountId: SECOND_ADDRESS,
Expand Down Expand Up @@ -219,7 +221,7 @@
});

it("should accept orderDirection=asc", async () => {
await db.insert(accountBalance).values([

Check failure on line 224 in apps/api/src/controllers/account-balance/listing.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/listing.integration.test.ts > Account Balances Controller > GET /balances > should accept orderDirection=asc

Error: Failed query: insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10) params: test-id,0x1234567890123456789012345678901234567890,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,1000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa,test-id,0x2222222222222222222222222222222222222222,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,2000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/listing.integration.test.ts:224:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 2000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ] } Caused by: Caused by: error: duplicate key value violates unique constraint "AccountBalance_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'AccountBalance', dataType: undefined, constraint: 'AccountBalance_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 2000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createAccountBalanceRow({ accountId: VALID_ADDRESS, balance: 1000n }),
createAccountBalanceRow({
accountId: SECOND_ADDRESS,
Expand Down Expand Up @@ -268,7 +270,7 @@
});

it("should accept addresses filter", async () => {
await db.insert(accountBalance).values([

Check failure on line 273 in apps/api/src/controllers/account-balance/listing.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/listing.integration.test.ts > Account Balances Controller > GET /balances > should accept addresses filter

Error: Failed query: insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10) params: test-id,0x1234567890123456789012345678901234567890,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,1200000000000000000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa,test-id,0x2222222222222222222222222222222222222222,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,1200000000000000000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/listing.integration.test.ts:273:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1200000000000000000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1200000000000000000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ] } Caused by: Caused by: error: duplicate key value violates unique constraint "AccountBalance_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'AccountBalance', dataType: undefined, constraint: 'AccountBalance_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1200000000000000000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1200000000000000000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createAccountBalanceRow({ accountId: VALID_ADDRESS }),
createAccountBalanceRow({
accountId: SECOND_ADDRESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
const createAccountBalanceRow = (
overrides: Partial<AccountBalanceInsert> = {},
): AccountBalanceInsert => ({
id: "test-id",
accountId: VALID_ADDRESS,
tokenId: TOKEN_ID,
balance: 1200000000000000000n,
Expand All @@ -39,6 +40,7 @@
const createTransferRow = (
overrides: Partial<TransferInsert> = {},
): TransferInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
tokenId: TOKEN_ID,
Expand Down Expand Up @@ -128,7 +130,7 @@
});

it("should accept pagination parameters", async () => {
await db.insert(accountBalance).values([

Check failure on line 133 in apps/api/src/controllers/account-balance/variations.integration.test.ts

View workflow job for this annotation

GitHub Actions / test

src/controllers/account-balance/variations.integration.test.ts > Account Balance Variations Controller > GET /balances/variations > should accept pagination parameters

Error: Failed query: insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10) params: test-id,0x1234567890123456789012345678901234567890,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,1000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa,test-id,0x2222222222222222222222222222222222222222,0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72,2000,0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa ❯ PglitePreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.1_@electric-sql+pglite@0.3.16_@opentelemetry+api@1.9.0_@types+pg@8.18._b94e5ebeec29745e30d4f37b7a10f465/node_modules/src/pg-core/session.ts:73:11 ❯ src/controllers/account-balance/variations.integration.test.ts:133:7 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 2000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ] } Caused by: Caused by: error: duplicate key value violates unique constraint "AccountBalance_pkey" ❯ ye.Ve ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:432:11 ❯ ye.nt ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:210:16 ❯ ye.parse ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pg-protocol/src/parser.ts:102:25 ❯ ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/src/pglite.ts:398:28 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2619374 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:2620261 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:5289011 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:371988 ❯ invoke_v ../../node_modules/.pnpm/@electric-sql+pglite@0.3.16/node_modules/@electric-sql/pglite/release/pglite.js:9:426905 ❯ null.<anonymous> wasm:/wasm/021d3ac6:1:374105 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 213, severity: 'ERROR', code: '23505', detail: 'Key (id)=(test-id) already exists.', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'AccountBalance', dataType: undefined, constraint: 'AccountBalance_pkey', file: 'nbtinsert.c', routine: '_bt_check_unique', query: 'insert into "AccountBalance" ("id", "accountId", "tokenId", "balance", "delegate") values ($1, $2, $3, $4, $5), ($6, $7, $8, $9, $10)', params: [ 'test-id', '0x1234567890123456789012345678901234567890', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 1000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa', 'test-id', '0x2222222222222222222222222222222222222222', '0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72', 2000n, '0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa' ], queryOptions: { rowMode: 'object', parsers: { '1082': 'Function<1082>', '1114': 'Function<1114>', '1115': 'Function<1115>', '1182': 'Function<1182>', '1184': 'Function<1184>', '1185': 'Function<1185>', '1186': 'Function<1186>', '1187': 'Function<1187>', '1231': 'Function<1231>' } } }
createAccountBalanceRow({ accountId: VALID_ADDRESS, balance: 1000n }),
createAccountBalanceRow({
accountId: SECOND_ADDRESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ type MetricInsert = typeof daoMetricsDayBucket.$inferInsert;
const TEST_DATE = 1699920000n;

const createMetric = (overrides: Partial<MetricInsert> = {}): MetricInsert => ({
id: "test-id",
date: TEST_DATE,
daoId: "UNI",
tokenId: "uni",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const TX_HASH =
const createAccountBalanceRow = (
overrides: Partial<AccountBalanceInsert> = {},
): AccountBalanceInsert => ({
id: "test-id",
accountId: VALID_ADDRESS,
tokenId: "uni",
balance: 1000000000000000000n,
Expand All @@ -37,6 +38,7 @@ const createAccountBalanceRow = (
const createDelegationRow = (
overrides: Partial<DelegationInsert> = {},
): DelegationInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
delegateAccountId: VALID_ADDRESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const DAO_ID = "uni";
const createDelegationRow = (
overrides: Partial<DelegationInsert> = {},
): DelegationInsert => ({
id: "test-id",
transactionHash:
"0xaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccddaabbccdd",
daoId: DAO_ID,
Expand All @@ -48,6 +49,7 @@ const createDelegationRow = (
const createAccountBalanceRow = (
overrides: Partial<AccountBalanceInsert> = {},
): AccountBalanceInsert => ({
id: "test-id",
accountId: DELEGATOR_1,
tokenId: "uni",
balance: 1000000000000000000n,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const TX_HASH_2 =
const createDelegationRow = (
overrides: Partial<DelegationInsert> = {},
): DelegationInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
delegatorAccountId: VALID_ADDRESS,
Expand Down
22 changes: 12 additions & 10 deletions apps/api/src/controllers/feed/feed.integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,18 @@ type FeedEventInsert = typeof feedEvent.$inferInsert;
const nounsThresholds = getDaoRelevanceThreshold(DaoIdEnum.NOUNS);

const createEvent = (
overrides: Partial<FeedEventInsert> = {},
): FeedEventInsert => ({
txHash: "0xabc123def456abc1",
logIndex: 0,
type: "VOTE" as const,
value: nounsThresholds[FeedEventType.VOTE][FeedRelevance.MEDIUM],
timestamp: 1700000000,
metadata: null,
...overrides,
});
overrides: Partial<Omit<FeedEventInsert, "type"> & { type: string }> = {},
): FeedEventInsert =>
({
id: "test-id",
txHash: "0xabc123def456abc1",
logIndex: 0,
type: "VOTE",
value: nounsThresholds[FeedEventType.VOTE][FeedRelevance.MEDIUM],
timestamp: 1700000000,
metadata: null,
...overrides,
}) as FeedEventInsert;

let client: PGlite;
let db: Drizzle;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ describe("GovernanceActivity Controller", () => {

it("should return 200 with activeSupply when recent voters exist", async () => {
await db.insert(accountPower).values({
id: "test-id-1",
accountId: "0x1111111111111111111111111111111111111111",
daoId: "TEST",
votingPower: 1000000000000000000n,
Expand All @@ -121,6 +122,7 @@ describe("GovernanceActivity Controller", () => {

it("should use default days=90d when not provided", async () => {
await db.insert(accountPower).values({
id: "test-id-2",
accountId: "0x1111111111111111111111111111111111111111",
daoId: "TEST",
votingPower: 500n,
Expand Down Expand Up @@ -203,6 +205,7 @@ describe("GovernanceActivity Controller", () => {
it("should return 200 with data and calculated changeRate", async () => {
await db.insert(votesOnchain).values([
{
id: "vote-1",
txHash: "0xv1",
daoId: "TEST",
voterAccountId: "0x1111111111111111111111111111111111111111",
Expand All @@ -212,6 +215,7 @@ describe("GovernanceActivity Controller", () => {
timestamp: RECENT_TS,
},
{
id: "vote-2",
txHash: "0xv2",
daoId: "TEST",
voterAccountId: "0x2222222222222222222222222222222222222222",
Expand All @@ -221,6 +225,7 @@ describe("GovernanceActivity Controller", () => {
timestamp: RECENT_TS,
},
{
id: "vote-3",
txHash: "0xv3",
daoId: "TEST",
voterAccountId: "0x3333333333333333333333333333333333333333",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { lastUpdate } from "./index";
type MetricInsert = typeof daoMetricsDayBucket.$inferInsert;

const createMetric = (overrides: Partial<MetricInsert> = {}): MetricInsert => ({
id: "test-id",
date: 1700000000n,
daoId: "UNI",
tokenId: "uni",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ const createProposal = (
});

const createVote = (overrides: Partial<VoteInsert> = {}): VoteInsert => ({
id: "0xvote123",
txHash: "0xvote123",
daoId: "ENS",
voterAccountId: VALID_ADDRESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { tokenMetrics } from "./index";
type MetricInsert = typeof daoMetricsDayBucket.$inferInsert;

const createMetric = (overrides: Partial<MetricInsert> = {}): MetricInsert => ({
id: "test-id",
date: 1700000000n,
daoId: "UNI",
tokenId: "uni",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ let repo: DrizzleRepository;
let app: Hono;

const createMetric = (overrides: Partial<MetricInsert> = {}): MetricInsert => ({
id: "test-id",
date: BigInt(NOW - 10),
daoId: "ENS",
tokenId: "ens",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type DelegationInsert = typeof delegation.$inferInsert;
const createTransaction = (
overrides: Partial<TransactionInsert> = {},
): TransactionInsert => ({
id: "test-id",
transactionHash: TX_HASH,
fromAddress: getAddress("0x1111111111111111111111111111111111111111"),
toAddress: getAddress("0x2222222222222222222222222222222222222222"),
Expand All @@ -33,6 +34,7 @@ const createTransaction = (
const createTransfer = (
overrides: Partial<TransferInsert> = {},
): TransferInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: "UNI",
tokenId: "uni",
Expand All @@ -51,6 +53,7 @@ const createTransfer = (
const createDelegation = (
overrides: Partial<DelegationInsert> = {},
): DelegationInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: "UNI",
delegateAccountId: getAddress("0x3333333333333333333333333333333333333333"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ type TransferInsert = typeof transfer.$inferInsert;
const createTransfer = (
overrides: Partial<TransferInsert> = {},
): TransferInsert => ({
id: "test-id",
transactionHash: "0xabc",
daoId: "UNI",
tokenId: "uni",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ const createProposal = (
});

const createVote = (overrides: Partial<VoteInsert> = {}): VoteInsert => ({
id: "test-id",
txHash: "0xabc123",
daoId: "ENS",
voterAccountId: VOTER_ADDRESS,
Expand All @@ -63,6 +64,7 @@ const createVote = (overrides: Partial<VoteInsert> = {}): VoteInsert => ({
const createAccountPower = (
overrides: Partial<AccountPowerInsert> = {},
): AccountPowerInsert => ({
id: "test-id",
accountId: VOTER_ADDRESS,
daoId: "ENS",
votingPower: 1000000000000000000n,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const DAO_ID = "ENS";
const createHistoryRow = (
overrides: Partial<VotingPowerHistoryInsert> = {},
): VotingPowerHistoryInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
accountId: VALID_ADDRESS,
Expand All @@ -43,6 +44,7 @@ const createHistoryRow = (
const createDelegationRow = (
overrides: Partial<DelegationInsert> = {},
): DelegationInsert => ({
id: "test-id",
transactionHash: TX_HASH,
daoId: DAO_ID,
delegateAccountId: VALID_ADDRESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const DAO_ID = "test-dao";
const createAccountPowerRow = (
overrides: Partial<AccountPowerInsert> = {},
): AccountPowerInsert => ({
id: "test-id",
accountId: TEST_ACCOUNT_1,
daoId: DAO_ID,
votingPower: 1000n,
Expand All @@ -38,6 +39,7 @@ const createAccountPowerRow = (
const createHistoryRow = (
overrides: Partial<VotingPowerHistoryInsert> = {},
): VotingPowerHistoryInsert => ({
id: "test-id",
transactionHash:
"0xabc1230000000000000000000000000000000000000000000000000000000000",
daoId: DAO_ID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ const TX_4 =
const createHistoryRow = (
overrides: Partial<VotingPowerHistoryInsert> = {},
): VotingPowerHistoryInsert => ({
id: "test-id",
transactionHash:
"0xabc1230000000000000000000000000000000000000000000000000000000000",
daoId: DAO_ID,
Expand All @@ -45,6 +46,7 @@ const createHistoryRow = (
const createAccountPowerRow = (
overrides: Partial<AccountPowerInsert> = {},
): AccountPowerInsert => ({
id: "test-id",
accountId: VALID_ADDRESS,
daoId: DAO_ID,
votingPower: 1200000000000000000n,
Expand Down
Loading
Loading