Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 59 lines 1.8 kB view raw
1import { z } from "zod"; 2import { db, eq, schema } from "../src"; 3import { selectMonitorSchema } from "../src/schema"; 4import type { monitorRegionSchema } from "../src/schema/constants"; 5 6const rawMonitors = await db.select().from(schema.monitor); 7 8const monitors = z.array(selectMonitorSchema).parse(rawMonitors); 9for (const monitor of monitors) { 10 const regions = monitor.regions.slice(); 11 // Asia Pacific 12 updateRegion("hkg", "sin", regions); 13 14 // North America 15 updateRegion("atl", "dfw", regions); 16 updateRegion("mia", "dfw", regions); 17 updateRegion("gdl", "dfw", regions); 18 updateRegion("qro", "dfw", regions); 19 updateRegion("bos", "ewr", regions); 20 updateRegion("phx", "lax", regions); 21 updateRegion("sea", "sjc", regions); 22 updateRegion("yul", "yyz", regions); 23 updateRegion("den", "dfw", regions); 24 25 // Europe 26 updateRegion("waw", "ams", regions); 27 updateRegion("mad", "cdg", regions); 28 updateRegion("otp", "fra", regions); 29 30 // South America 31 updateRegion("bog", "gru", regions); 32 updateRegion("gig", "gru", regions); 33 updateRegion("scl", "gru", regions); 34 updateRegion("eze", "gru", regions); 35 const newRegions = regions.join(","); 36 // console.log("new regions:",newRegions) 37 await db 38 .update(schema.monitor) 39 .set({ regions: newRegions }) 40 .where(eq(schema.monitor.id, monitor.id)) 41 .execute(); 42} 43 44export function updateRegion( 45 oldRegion: z.infer<typeof monitorRegionSchema>, 46 newRegion: z.infer<typeof monitorRegionSchema>, 47 regions: z.infer<typeof monitorRegionSchema>[], 48) { 49 const regionIndex = regions.indexOf(oldRegion); 50 if (regionIndex !== -1) { 51 const newRegionIndex = regions.indexOf(newRegion); 52 if (newRegionIndex === -1) { 53 regions[regionIndex] = newRegion; 54 } 55 if (newRegionIndex !== -1) { 56 regions.splice(regionIndex, 1); 57 } 58 } 59}