73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
/**
|
|
* 一次性迁移:空表时从 .env / 旧 dev_plan_settings 写入默认消息推送。
|
|
* 也可由 WecomMessagePushService.ensureDefaults() 在 API 启动时执行。
|
|
*/
|
|
import { PrismaClient } from '@prisma/client';
|
|
import {
|
|
WECOM_PUSH_DEFAULT_ALERT_CONDITIONS,
|
|
WECOM_PUSH_DEFAULT_DEV_DISPATCH_CONDITIONS,
|
|
} from '@dukang/shared-types';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
async function main() {
|
|
const count = await prisma.wecomMessagePush.count();
|
|
if (count > 0) {
|
|
console.log(`wecom_message_push already has ${count} row(s), skip seed`);
|
|
return;
|
|
}
|
|
|
|
const alertUrl = (process.env.WECOM_ALERT_WEBHOOK_URL || '').trim();
|
|
if (alertUrl) {
|
|
await prisma.wecomMessagePush.create({
|
|
data: {
|
|
name: '运营告警',
|
|
webhookUrl: alertUrl,
|
|
enabled: process.env.WECOM_ALERT_ENABLED !== 'false',
|
|
pushConditions: JSON.stringify(WECOM_PUSH_DEFAULT_ALERT_CONDITIONS),
|
|
sortOrder: 0,
|
|
},
|
|
});
|
|
console.log('created push: 运营告警');
|
|
}
|
|
|
|
try {
|
|
const rows = await prisma.$queryRawUnsafe<
|
|
Array<{
|
|
task_dispatch_webhook_url: string | null;
|
|
task_dispatch_wecom_user_id: string | null;
|
|
task_dispatch_enabled: number | boolean | null;
|
|
}>
|
|
>(
|
|
'SELECT task_dispatch_webhook_url, task_dispatch_wecom_user_id, task_dispatch_enabled FROM dev_plan_settings LIMIT 1',
|
|
);
|
|
const row = rows[0];
|
|
if (row?.task_dispatch_webhook_url?.trim()) {
|
|
await prisma.wecomMessagePush.create({
|
|
data: {
|
|
name: '开发任务派发',
|
|
webhookUrl: row.task_dispatch_webhook_url.trim(),
|
|
enabled: !!row.task_dispatch_enabled,
|
|
mentionWecomUserId: row.task_dispatch_wecom_user_id?.trim() || null,
|
|
pushConditions: JSON.stringify(WECOM_PUSH_DEFAULT_DEV_DISPATCH_CONDITIONS),
|
|
sortOrder: 10,
|
|
},
|
|
});
|
|
console.log('created push: 开发任务派发');
|
|
}
|
|
} catch (e) {
|
|
console.log('dev_plan_settings task_dispatch columns not found, skip dev dispatch migration');
|
|
}
|
|
|
|
console.log('wecom message push seed done');
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|