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'],
26 level: r.fields['Required Level'],
27 strength: r.fields['Required STR'],
28 constitution: r.fields['Required CON'],
29 dexterity: r.fields['Required DEX'],
30 intelligence: r.fields['Required INT']
33 strength: r.fields['Boost STR'],
34 constitution: r.fields['Boost CON'],
35 dexterity: r.fields['Boost DEX'],
36 intelligence: r.fields['Boost INT'],
37 damage: r.fields['Boost DMG'],
38 damage_mitigation: r.fields['Damage Mitigation'],
39 defence: r.fields['Defence'],
41 currentAp: r.fields['Armour Points'],
42 maxAp: r.fields['Armour Points'],
43 affectedSkills: JSON.stringify(r.fields['Affected Skills']),
44 location_id: r.fields.location_id[0]
47 })).onConflict('id').merge();
49 }).finally(() => resolve());
53 export async function createShopItems(): Promise<void> {
54 return new Promise(async (resolve) => {
55 base('Items').select().eachPage(async (records, next) => {
56 const itemsForSale = [];
57 await db('items').insert(records.map(r => {
58 if(r.fields['location_id']) {
60 item_id: r.fields['Id'],
61 location_id: r.fields['location_id'][0],
62 amount: r.fields['Amount'],
63 price_per_unit: r.fields['Cost']
69 description: r.fields['Description'],
70 effect_name: r.fields['Effect Name'],
71 icon_name: r.fields['Icon Name']
73 })).onConflict('id').merge();
75 if(itemsForSale.length) {
76 await db('shop_items').insert(itemsForSale).onConflict(['item_id', 'location_id']).merge();
80 }).finally(() => resolve());
86 createShopEquipment().then(createShopItems).then(() => {
87 console.log('Complete');