Skip to content

Commit 7fa5850

Browse files
cointracker transactions src changes
1 parent 4d8bf49 commit 7fa5850

5 files changed

Lines changed: 21 additions & 17 deletions

File tree

src/apps/hdb/commands/coinbase/balances/coinbase-balances-handlers.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -177,20 +177,6 @@ function getSignedDelta(row: CoinbaseTransactionRow): { asset: string; delta: nu
177177
case "Withdrawal":
178178
case "Send":
179179
return { asset, delta: unsigned * -1 };
180-
case "Retail Staking Transfer":
181-
case "Retail Unstaking Transfer":
182-
// Paired internal transfers (+X and -X legs) that net to zero; exclude from balance
183-
return { asset, delta: 0 };
184-
case "Wrap Asset":
185-
// ETH/ETH2 being wrapped into CBETH — reduces ETH holdings
186-
if (asset === "ETH") {
187-
return { asset: "ETH", delta: unsigned * -1 };
188-
}
189-
// CBETH received from wrapping — increases CBETH holdings
190-
if (asset === "CBETH") {
191-
return { asset: "CBETH", delta: unsigned };
192-
}
193-
throw new Error(`Unsure how to quantify delta for Wrap Asset of ${row.asset}`);
194180
case "Unwrap":
195181
if (asset === "ETH") {
196182
return { asset: "ETH", delta: unsigned };

src/apps/hdb/commands/cointracker/transactions/cointracker-transactions-handlers.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ function toOptionalString(value: unknown): string | null {
3737
}
3838

3939
function toRequiredString(value: unknown, field: string): string {
40+
if (value instanceof Date) {
41+
return value.toISOString();
42+
}
4043
if (typeof value !== "string") {
4144
throw new Error(`cointracker transaction row missing ${field}`);
4245
}

src/apps/hdb/db/coinbase/transactions/coinbase-transactions-repository.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ export async function insertCoinbaseTransactionsBatch(
203203
const sql = `
204204
INSERT INTO ${COINBASE_TRANSACTIONS_TABLE}
205205
(${INSERT_COLUMNS.join(", ")})
206-
VALUES ${placeholders.join(", ")}
207-
ON CONFLICT (id) DO NOTHING;
206+
VALUES ${placeholders.join(", ")};
208207
`;
209208
await client.query(sql, values);
210209
}

src/apps/hdb/db/cointracker/balances/cointracker-balances-sql.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ export const REBUILD_COINTRACKER_BALANCES_LEDGER_SQL = `
106106
1 AS row_order
107107
FROM ${COINTRACKER_TRANSACTIONS_TABLE} t
108108
WHERE t.sent_currency IS NOT NULL
109+
110+
UNION ALL
111+
112+
SELECT
113+
t.fee_currency AS currency,
114+
t.date,
115+
t.transaction_id AS cointracker_transaction_id,
116+
(0::numeric - COALESCE(t.fee_amount, 0)::numeric) AS delta,
117+
0::numeric AS received_quantity,
118+
0::numeric AS sent_quantity,
119+
2 AS row_order
120+
FROM ${COINTRACKER_TRANSACTIONS_TABLE} t
121+
WHERE t.fee_currency IS NOT NULL
122+
AND t.fee_amount IS NOT NULL
123+
AND t.fee_amount::numeric > 0
109124
),
110125
seeded AS (
111126
SELECT

src/apps/hdb/db/cointracker/transactions/cointracker-transactions-repository.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ export async function insertCointrackerTransactionsBatch(
129129
const sql = `
130130
INSERT INTO ${COINTRACKER_TRANSACTIONS_TABLE}
131131
(${INSERT_COLUMNS.join(", ")})
132-
VALUES ${placeholders.join(", ")};
132+
VALUES ${placeholders.join(", ")}
133+
ON CONFLICT (transaction_id) DO NOTHING;
133134
`;
134135
await client.query(sql, values);
135136
}

0 commit comments

Comments
 (0)