1 import { config as dotenv } from 'dotenv';
2 import { db } from "../src/server/lib/db";
3 import Airtable from 'airtable';
11 apiKey: process.env.AIRTABLE_API_KEY
14 const base = Airtable.base('appDfPLPajPNog5Iw');
16 export async function createFactions(): Promise<void> {
17 return new Promise(async (resolve, reject) => {
18 base('Factions').select().eachPage(async (records, next) => {
19 await db('factions').insert(records.map(r => {
20 console.log(`Creating faction ${r.fields.Name}`);
24 description: r.fields.Description
26 })).onConflict('id').merge();
37 export async function createMonsters(): Promise<void> {
38 return new Promise(async (resolve, reject) => {
39 await db('fight').delete();
41 base('Monsters').select().eachPage(async (records, next) => {
42 await db('monsters').insert(records.map(r => {
43 if(!stats.monsters[r.fields['Location Name'][0]]) {
44 stats.monsters[r.fields['Location Name'][0]] = 0;
46 stats.monsters[r.fields['Location Name'][0]]++;
48 const factionId = r.fields.faction_id ? r.fields.faction_id[0] : null;
53 strength: r.fields['STR_override'] || r.fields.STR,
54 constitution: r.fields['CON_override'] || r.fields.CON,
55 dexterity: r.fields['DEX_override'] || r.fields.DEX,
56 intelligence: r.fields['INT_override'] || r.fields.INT,
58 level: r.fields.Level,
62 helmAp: r.fields.helmAp,
63 chestAp: r.fields.chestAp,
64 legsAp: r.fields.legsAp,
65 armsAp: r.fields.armsAm,
66 location_id: r.fields.location_id[0],
67 faction_id: factionId,
68 time_period: r.fields.time_period ? r.fields.time_period : 'any'
70 })).onConflict('id').merge();
80 // run this script manually
82 createFactions().then(createMonsters).then(() => {
83 console.log(stats.monsters);
84 console.log('Complete');