chore(release): 0.0.2
[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           },
38           currentAp: r.fields['Armour Points'],
39           maxAp: r.fields['Armour Points'],
40           affectedSkills: JSON.stringify(r.fields['Affected Skills']),
41           location_id: r.fields.location_id[0]
42         };
43
44       })).onConflict('id').merge();
45       next();
46     }).finally(() => resolve());
47   });
48 }
49
50 if(!module.parent) {
51   createShopItems().then(() => {
52     console.log('Complete');
53     process.exit(0);
54   }).catch(e => {
55     console.log(e);
56     process.exit(1);
57   });
58 }