chore(release): 0.3.0
[risinglegends.git] / seeds / shop_items.ts
index e61773d612e7b659ce9d94561de93ebd336fd1bd..6fca12aee5f59ce5d329e6ecf4c6824e6d7d4d7e 100644 (file)
@@ -12,14 +12,15 @@ const base = Airtable.base('appDfPLPajPNog5Iw');
 
 export async function createShopEquipment(): Promise<void> {
   return new Promise(async (resolve) => {
-    base('Shop Items').select().eachPage(async (records, next) => {
-      await db('shop_items').insert(records.map(r => {
+    base('Shop Equipment').select().eachPage(async (records, next) => {
+      await db('shop_equipment').insert(records.map(r => {
         return {
           id: r.fields.id,
           name: r.fields.Name,
           type: r.fields['Equipment Type'],
           equipment_slot: r.fields['Equipment Slot'],
           cost: r.fields.Cost,
+          icon: r.fields.Icon,
           count: 1,
           requirements: {
             level: r.fields['Required Level'],
@@ -34,7 +35,8 @@ export async function createShopEquipment(): Promise<void> {
             dexterity: r.fields['Boost DEX'],
             intelligence: r.fields['Boost INT'],
             damage: r.fields['Boost DMG'],
-            damage_mitigation: r.fields['Damage Mitigation']
+            damage_mitigation: r.fields['Damage Mitigation'],
+            defence: r.fields['Defence'],
           },
           currentAp: r.fields['Armour Points'],
           maxAp: r.fields['Armour Points'],
@@ -51,8 +53,16 @@ export async function createShopEquipment(): Promise<void> {
 export async function createShopItems(): Promise<void> {
   return new Promise(async (resolve) => {
     base('Items').select().eachPage(async (records, next) => {
+      const itemsForSale = [];
       await db('items').insert(records.map(r => {
-        console.log(`Creating [${r.fields['Name']}]`);
+        if(r.fields['location_id']) {
+          itemsForSale.push({
+            item_id: r.fields['Id'],
+            location_id: r.fields['location_id'][0],
+            amount: r.fields['Amount'],
+            price_per_unit: r.fields['Cost']
+          });
+        }
         return {
           id: r.fields['Id'],
           name: r.fields.Name,
@@ -61,6 +71,11 @@ export async function createShopItems(): Promise<void> {
           icon_name: r.fields['Icon Name']
         };
       })).onConflict('id').merge();
+
+      if(itemsForSale.length) {
+        await db('shop_items').insert(itemsForSale).onConflict(['item_id', 'location_id']).merge();
+      }
+
       next();
     }).finally(() => resolve());
   });