From 4440f40fba47560588c8e2cf08f51c135d00e900 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 15 Jan 2026 06:42:34 -0800 Subject: [PATCH] fix(mining-wallet-service): use upsert in seed for 100% overwrite Remove existence check, directly upsert pool accounts to ensure consistent state on every seed run. Co-Authored-By: Claude Opus 4.5 --- .../mining-wallet-service/prisma/seed.ts | 60 +++++++------------ 1 file changed, 20 insertions(+), 40 deletions(-) diff --git a/backend/services/mining-wallet-service/prisma/seed.ts b/backend/services/mining-wallet-service/prisma/seed.ts index 6a810962..d5204a7c 100644 --- a/backend/services/mining-wallet-service/prisma/seed.ts +++ b/backend/services/mining-wallet-service/prisma/seed.ts @@ -66,6 +66,7 @@ async function main() { // 积分股池A: 100亿 (10,000,000,000) - 用于销毁 // 积分股池B: 200万 (2,000,000) - 用于挖矿分配 // 总计: 100.02亿 (10,002,000,000) + // 直接 upsert 覆盖,不检查是否存在 const poolAccounts = [ { poolType: 'SHARE_POOL_A', @@ -95,49 +96,28 @@ async function main() { ]; for (const pool of poolAccounts) { - const existing = await prisma.poolAccount.findFirst({ + const created = await prisma.poolAccount.upsert({ where: { poolType: pool.poolType as any }, + update: { + name: pool.name, + balance: pool.balance, + targetBurn: pool.targetBurn, + remainingBurn: pool.targetBurn, + description: pool.description, + isActive: true, + }, + create: { + poolType: pool.poolType as any, + name: pool.name, + balance: pool.balance, + targetBurn: pool.targetBurn, + remainingBurn: pool.targetBurn, + description: pool.description, + isActive: true, + }, }); - if (!existing) { - const created = await prisma.poolAccount.create({ - data: { - poolType: pool.poolType as any, - name: pool.name, - balance: pool.balance, - targetBurn: pool.targetBurn, - remainingBurn: pool.targetBurn, - description: pool.description, - isActive: true, - }, - }); - - // 发布池账户创建事件到 Outbox - await prisma.outboxEvent.create({ - data: { - aggregateType: 'PoolAccount', - aggregateId: created.id, - eventType: 'WalletPoolAccountCreated', - topic: 'mining-wallet.pool-account.created', - key: created.poolType, - payload: { - id: created.id, - poolType: created.poolType, - name: created.name, - balance: created.balance.toString(), - totalInflow: 0, - totalOutflow: 0, - targetBurn: created.targetBurn?.toString() || null, - remainingBurn: created.remainingBurn?.toString() || null, - isActive: created.isActive, - }, - }, - }); - - console.log(`Created pool account: ${pool.poolType}`); - } else { - console.log(`Pool account already exists: ${pool.poolType}`); - } + console.log(`Upserted pool account: ${pool.poolType}`); } console.log('Seeding completed!');