Create timer function to initialise card database from filesystem (#14)
- Create a new datasource for an in-memory sqlite database - Create a setup function to initialise the card database #13 Reviewed-on: https://gitea.vylpes.xyz/External/card-drop/pulls/14 Co-authored-by: Ethan Lane <ethan@vylpes.com> Co-committed-by: Ethan Lane <ethan@vylpes.com>
This commit is contained in:
parent
c2c2998fe8
commit
51d97bacd5
17 changed files with 813 additions and 28 deletions
111
src/Functions/CardSetupFunctions.ts
Normal file
111
src/Functions/CardSetupFunctions.ts
Normal file
|
@ -0,0 +1,111 @@
|
|||
import { existsSync, readdirSync } from "fs";
|
||||
import CardDataSource from "../database/dataSources/cardDataSource";
|
||||
import Card from "../database/entities/card/Card";
|
||||
import Series from "../database/entities/card/Series";
|
||||
import path from "path";
|
||||
import { CardRarity } from "../constants/CardRarity";
|
||||
|
||||
export default class CardSetupFunctions {
|
||||
public async Execute() {
|
||||
await this.ClearDatabase();
|
||||
await this.ReadSeries();
|
||||
await this.ReadCards();
|
||||
}
|
||||
|
||||
private async ClearDatabase() {
|
||||
const cardRepository = CardDataSource.getRepository(Card);
|
||||
await cardRepository.clear();
|
||||
|
||||
const seriesRepository = CardDataSource.getRepository(Series);
|
||||
await seriesRepository.clear();
|
||||
}
|
||||
|
||||
private async ReadSeries() {
|
||||
const seriesDir = readdirSync(path.join(process.cwd(), 'cards'));
|
||||
|
||||
const seriesRepository = CardDataSource.getRepository(Series);
|
||||
|
||||
const seriesToSave: Series[] = [];
|
||||
|
||||
for (let dir of seriesDir) {
|
||||
const dirPart = dir.split(' ');
|
||||
|
||||
const seriesId = dirPart.shift();
|
||||
const seriesName = dirPart.join(' ');
|
||||
|
||||
const series = new Series(seriesId!, seriesName, dir);
|
||||
|
||||
seriesToSave.push(series);
|
||||
}
|
||||
|
||||
await seriesRepository.save(seriesToSave);
|
||||
}
|
||||
|
||||
private async ReadCards() {
|
||||
const loadedSeries = await Series.FetchAll(Series);
|
||||
|
||||
const cardRepository = CardDataSource.getRepository(Card);
|
||||
|
||||
const cardsToSave: Card[] = [];
|
||||
|
||||
for (let series of loadedSeries) {
|
||||
const bronzeExists = existsSync(path.join(process.cwd(), 'cards', series.Path, 'BRONZE'));
|
||||
const goldExists = existsSync(path.join(process.cwd(), 'cards', series.Path, 'GOLD'));
|
||||
const legendaryExists = existsSync(path.join(process.cwd(), 'cards', series.Path, 'LEGENDARY'));
|
||||
const silverExists = existsSync(path.join(process.cwd(), 'cards', series.Path, 'SILVER'));
|
||||
|
||||
const cardDirBronze = bronzeExists ? readdirSync(path.join(process.cwd(), 'cards', series.Path, 'BRONZE')) : [];
|
||||
const cardDirGold = goldExists ? readdirSync(path.join(process.cwd(), 'cards', series.Path, 'GOLD')) : [];
|
||||
const cardDirLegendary = legendaryExists ? readdirSync(path.join(process.cwd(), 'cards', series.Path, 'LEGENDARY')) : [];
|
||||
const cardDirSilver = silverExists ? readdirSync(path.join(process.cwd(), 'cards', series.Path, 'SILVER')) : [];
|
||||
|
||||
for (let file of cardDirBronze) {
|
||||
const filePart = file.split('.');
|
||||
|
||||
const cardId = filePart[0];
|
||||
const cardName = filePart[0];
|
||||
|
||||
const card = new Card(cardId, cardName, CardRarity.Bronze);
|
||||
|
||||
cardsToSave.push(card);
|
||||
}
|
||||
|
||||
for (let file of cardDirGold) {
|
||||
const filePart = file.split('.');
|
||||
|
||||
const cardId = filePart[0];
|
||||
const cardName = filePart[0];
|
||||
|
||||
const card = new Card(cardId, cardName, CardRarity.Gold);
|
||||
|
||||
cardsToSave.push(card);
|
||||
}
|
||||
|
||||
for (let file of cardDirLegendary) {
|
||||
const filePart = file.split('.');
|
||||
|
||||
const cardId = filePart[0];
|
||||
const cardName = filePart[0];
|
||||
|
||||
const card = new Card(cardId, cardName, CardRarity.Legendary);
|
||||
|
||||
cardsToSave.push(card);
|
||||
}
|
||||
|
||||
for (let file of cardDirSilver) {
|
||||
const filePart = file.split('.');
|
||||
|
||||
const cardId = filePart[0];
|
||||
const cardName = filePart[0];
|
||||
|
||||
const card = new Card(cardId, cardName, CardRarity.Silver);
|
||||
|
||||
cardsToSave.push(card);
|
||||
}
|
||||
}
|
||||
|
||||
await cardRepository.save(cardsToSave);
|
||||
|
||||
console.log(`Loaded ${cardsToSave.length} cards to database`);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue