this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 58 lines 1.6 kB view raw
1import { readFileSync } from "node:fs"; 2import { dirname, resolve } from "node:path"; 3import { fileURLToPath } from "node:url"; 4import { env } from "~/env.js"; 5import { drizzle } from "drizzle-orm/postgres-js"; 6import postgres from "postgres"; 7import * as schema from "./schema.js"; 8import { relations } from "./relations.js"; 9 10type SeedData = { 11 pokemon: Array<{ 12 id: number; 13 name: string; 14 dexId: number; 15 }>; 16 types: Array<{ 17 id: number; 18 name: string; 19 }>; 20 pokemonTypes: Array<{ 21 id: number; 22 pokemonId: number; 23 typeId: number; 24 }>; 25}; 26 27const currentDir = dirname(fileURLToPath(import.meta.url)); 28const seedDataPath = resolve(currentDir, "./seed-data.json"); 29 30const seedData = JSON.parse(readFileSync(seedDataPath, "utf8")) as SeedData; 31 32const client = postgres(env.DATABASE_URL, { prepare: false }); 33const db = drizzle({ 34 client, 35 relations, 36}); 37 38const BATCH_SIZE = 500; 39 40await db.delete(schema.pokemon); 41await db.delete(schema.types); 42await db.delete(schema.pokemonTypes); 43 44for (let index = 0; index < seedData.pokemon.length; index += BATCH_SIZE) { 45 await db.insert(schema.pokemon).values(seedData.pokemon.slice(index, index + BATCH_SIZE)); 46} 47 48await db.insert(schema.types).values(seedData.types); 49 50for (let index = 0; index < seedData.pokemonTypes.length; index += BATCH_SIZE) { 51 await db 52 .insert(schema.pokemonTypes) 53 .values(seedData.pokemonTypes.slice(index, index + BATCH_SIZE)); 54} 55 56console.log( 57 `Seeded: ${seedData.pokemon.length} pokemon, ${seedData.types.length} types, ${seedData.pokemonTypes.length} pokemon_types`, 58);