/** * 创建 wecom_report_push(若不存在)并写入日/周/月默认行。 * 不依赖 Prisma Client 新 model,可在 generate 之前执行。 */ import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); const PLACEHOLDER = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=PENDING'; async function main() { await prisma.$executeRawUnsafe(` CREATE TABLE IF NOT EXISTS wecom_report_push ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, kind VARCHAR(16) NOT NULL, name VARCHAR(64) NOT NULL, webhook_url VARCHAR(512) NOT NULL, enabled TINYINT(1) NOT NULL DEFAULT 0, mention_wecom_user_id VARCHAR(64) NULL, send_hour INT NOT NULL DEFAULT 20, send_minute INT NOT NULL DEFAULT 0, send_weekday INT NOT NULL DEFAULT 1, send_month_day INT NOT NULL DEFAULT 1, last_sent_period VARCHAR(16) NULL, last_sent_at DATETIME(3) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), UNIQUE KEY wecom_report_push_kind_key (kind) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci `); const seeds: Array<[string, string, number]> = [ ['daily', '经营日报', 20], ['weekly', '经营周报', 9], ['monthly', '经营月报', 9], ]; for (const [kind, name, hour] of seeds) { await prisma.$executeRawUnsafe( `INSERT IGNORE INTO wecom_report_push (kind, name, webhook_url, enabled, send_hour, send_minute, send_weekday, send_month_day, created_at, updated_at) VALUES (?, ?, ?, 0, ?, 0, 1, 1, CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3))`, kind, name, PLACEHOLDER, hour, ); } console.log('migrate-wecom-report done'); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });