fix(mining-wallet): fix province/city creation and add seed on startup
- Use provinceCode directly instead of inferring from cityCode - Use code as name for province/city records - Add ts-node to production for seed execution - Run prisma db seed on container startup Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e6e44d9a43
commit
7588d18fff
|
|
@ -30,14 +30,15 @@ WORKDIR /app
|
|||
USER nestjs
|
||||
|
||||
COPY --chown=nestjs:nodejs package*.json ./
|
||||
RUN npm ci --only=production && npm cache clean --force
|
||||
COPY --chown=nestjs:nodejs tsconfig*.json ./
|
||||
RUN npm ci --only=production && npm install ts-node typescript @types/node --save-dev && npm cache clean --force
|
||||
|
||||
COPY --chown=nestjs:nodejs prisma ./prisma/
|
||||
RUN DATABASE_URL="postgresql://user:pass@localhost:5432/db" npx prisma generate
|
||||
|
||||
COPY --chown=nestjs:nodejs --from=builder /app/dist ./dist
|
||||
|
||||
RUN printf '#!/bin/sh\nset -e\necho "Running database migrations..."\nnpx prisma migrate deploy\necho "Starting application..."\nexec node dist/main.js\n' > /app/start.sh && chmod +x /app/start.sh
|
||||
RUN printf '#!/bin/sh\nset -e\necho "Running database migrations..."\nnpx prisma migrate deploy\necho "Running database seed..."\nnpx prisma db seed || echo "Seed skipped or already applied"\necho "Starting application..."\nexec node dist/main.js\n' > /app/start.sh && chmod +x /app/start.sh
|
||||
|
||||
ENV NODE_ENV=production
|
||||
ENV TZ=Asia/Shanghai
|
||||
|
|
|
|||
|
|
@ -39,6 +39,9 @@
|
|||
"rxjs": "^7.8.1",
|
||||
"swagger-ui-express": "^5.0.0"
|
||||
},
|
||||
"prisma": {
|
||||
"seed": "ts-node prisma/seed.ts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cli": "^10.2.1",
|
||||
"@nestjs/schematics": "^10.0.3",
|
||||
|
|
|
|||
|
|
@ -313,7 +313,7 @@ export class ContributionWalletService {
|
|||
province = await tx.province.create({
|
||||
data: {
|
||||
code: provinceCode,
|
||||
name: `${provinceCode}省`, // 默认名称,后续可更新
|
||||
name: provinceCode,
|
||||
status: 'ACTIVE',
|
||||
},
|
||||
});
|
||||
|
|
@ -342,36 +342,32 @@ export class ContributionWalletService {
|
|||
|
||||
if (!city) {
|
||||
// 城市不存在,需要先有省份
|
||||
// 尝试从 cityCode 推断省份(如 GD-SZ 中的 GD)
|
||||
const parts = cityCode.split('-');
|
||||
const inferredProvinceCode = parts.length > 1 ? parts[0] : null;
|
||||
|
||||
if (!inferredProvinceCode) {
|
||||
this.logger.warn(`Cannot infer province from city code: ${cityCode}`);
|
||||
if (!provinceCode) {
|
||||
this.logger.warn(`Cannot create city without provinceCode: ${cityCode}`);
|
||||
return null;
|
||||
}
|
||||
|
||||
// 找或创建省份
|
||||
let province = await tx.province.findUnique({
|
||||
where: { code: inferredProvinceCode },
|
||||
where: { code: provinceCode },
|
||||
});
|
||||
|
||||
if (!province) {
|
||||
province = await tx.province.create({
|
||||
data: {
|
||||
code: inferredProvinceCode,
|
||||
name: `${inferredProvinceCode}省`,
|
||||
code: provinceCode,
|
||||
name: provinceCode,
|
||||
status: 'ACTIVE',
|
||||
},
|
||||
});
|
||||
this.logger.log(`Auto-created province: ${inferredProvinceCode}`);
|
||||
this.logger.log(`Auto-created province: ${provinceCode}`);
|
||||
}
|
||||
|
||||
// 创建城市
|
||||
city = await tx.city.create({
|
||||
data: {
|
||||
code: cityCode,
|
||||
name: `${cityCode}市`, // 默认名称
|
||||
name: cityCode,
|
||||
provinceId: province.id,
|
||||
status: 'ACTIVE',
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue