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 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-15 06:42:34 -08:00
parent fdff3a3119
commit 4440f40fba
1 changed files with 20 additions and 40 deletions

View File

@ -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!');