chore(release): 0.0.3
[risinglegends.git] / seeds / shop_items.ts
1 import { config as dotenv } from 'dotenv';
2 import { db } from "../src/server/lib/db";
3 import Airtable from 'airtable';
4
5 dotenv();
6
7 Airtable.configure({
8   apiKey: process.env.AIRTABLE_API_KEY
9 });
10
11 const base = Airtable.base('appDfPLPajPNog5Iw');
12
13 export async function createShopItems(): Promise<void> {
14   return new Promise(async (resolve) => {
15     base('Shop Items').select().eachPage(async (records, next) => {
16       await db('shop_items').insert(records.map(r => {
17         return {
18           id: r.fields.id,
19           name: r.fields.Name,
20           type: r.fields['Equipment Type'],
21           equipment_slot: r.fields['Equipment Slot'],
22           cost: r.fields.Cost,
23           count: 1,
24           requirements: {
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']
30           },
31           boosts: {
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']
38           },
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]
43         };
44
45       })).onConflict('id').merge();
46       next();
47     }).finally(() => resolve());
48   });
49 }
50
51 if(!module.parent) {
52   createShopItems().then(() => {
53     console.log('Complete');
54     process.exit(0);
55   }).catch(e => {
56     console.log(e);
57     process.exit(1);
58   });
59 }