1 import { config as dotenv } from 'dotenv';
2 import { db } from "../src/server/lib/db";
3 import Airtable from 'airtable';
8 apiKey: process.env.AIRTABLE_API_KEY
11 const base = Airtable.base('appDfPLPajPNog5Iw');
13 export async function createShopEquipment(): Promise<void> {
14 return new Promise(async (resolve) => {
15 base('Shop Equipment').select().eachPage(async (records, next) => {
16 await db('shop_equipment').insert(records.map(r => {
20 type: r.fields['Equipment Type'],
21 equipment_slot: r.fields['Equipment Slot'],
25 level: r.fields['Required Level'],
26 strength: r.fields['Required STR'],
27 constitution: r.fields['Required CON'],
28 dexterity: r.fields['Required DEX'],
29 intelligence: r.fields['Required INT']
32 strength: r.fields['Boost STR'],
33 constitution: r.fields['Boost CON'],
34 dexterity: r.fields['Boost DEX'],
35 intelligence: r.fields['Boost INT'],
36 damage: r.fields['Boost DMG'],
37 damage_mitigation: r.fields['Damage Mitigation']
39 currentAp: r.fields['Armour Points'],
40 maxAp: r.fields['Armour Points'],
41 affectedSkills: JSON.stringify(r.fields['Affected Skills']),
42 location_id: r.fields.location_id[0]
45 })).onConflict('id').merge();
47 }).finally(() => resolve());
51 export async function createShopItems(): Promise<void> {
52 return new Promise(async (resolve) => {
53 base('Items').select().eachPage(async (records, next) => {
54 const itemsForSale = [];
55 await db('items').insert(records.map(r => {
56 if(r.fields['location_id']) {
58 item_id: r.fields['Id'],
59 location_id: r.fields['location_id'][0],
60 amount: r.fields['Amount'],
61 price_per_unit: r.fields['Cost']
67 description: r.fields['Description'],
68 effect_name: r.fields['Effect Name'],
69 icon_name: r.fields['Icon Name']
71 })).onConflict('id').merge();
73 if(itemsForSale.length) {
74 await db('shop_items').insert(itemsForSale).onConflict(['item_id', 'location_id']).merge();
78 }).finally(() => resolve());
84 createShopEquipment().then(createShopItems).then(() => {
85 console.log('Complete');