1
0
mirror of https://github.com/tcgdex/cards-database.git synced 2025-07-29 11:09:51 +00:00

feature: Implement new Server infrastructure with GraphQL. (#132)

* Added new compiler to db

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Add compiled DB to artifacts

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Fixed space error

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Fixed?

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Update node.js.yml

* Update node.js.yml

* Made change so the db is no longer dependent on the SDK

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* f

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Fixed artifact

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* U

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* \Changed folder

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Fixede?

Signed-off-by: Avior <florian.bouillon@delta-wings.net>

* Try with everything

* saved the file ;)

* ignore compiler

* Fixed prebuild being run again

* Fixed public folder

Signed-off-by: Avior <github@avior.me>

* fixed graphql file

Signed-off-by: Avior <github@avior.me>

* fixed?

Signed-off-by: Avior <github@avior.me>

* Check tree because life is potato

Signed-off-by: Avior <github@avior.me>

* this is harder

Signed-off-by: Avior <github@avior.me>

* f

Signed-off-by: Avior <github@avior.me>

* Fixed?

Signed-off-by: Avior <github@avior.me>

* r

Signed-off-by: Avior <github@avior.me>

* fd

Signed-off-by: Avior <github@avior.me>

* added back context

Signed-off-by: Avior <github@avior.me>

* ah

Signed-off-by: Avior <github@avior.me>

* AAH

Signed-off-by: Avior <github@avior.me>

* AAAH

Signed-off-by: Avior <github@avior.me>

* ffffffffffffffffff

Signed-off-by: Avior <github@avior.me>

* fix: Changed the default builder

Signed-off-by: Avior <github@avior.me>

* Removed useless tree function

Signed-off-by: Avior <github@avior.me>
This commit is contained in:
2021-11-04 10:02:26 +01:00
committed by GitHub
parent c991193f4b
commit c4b4449fd4
37 changed files with 5038 additions and 70 deletions

View File

@ -0,0 +1,112 @@
import { objectLoop } from '@dzeio/object-util'
import { Card as SDKCard, CardResume, SupportedLanguages } from '@tcgdex/sdk'
import Set from './Set'
import { Pagination } from '../../interfaces'
type LocalCard = Omit<SDKCard, 'set'> & {set: () => Set}
interface variants {
normal?: boolean;
reverse?: boolean;
holo?: boolean;
firstEdition?: boolean;
}
export default class Card implements LocalCard {
illustrator?: string | undefined
rarity!: string
category!: string
variants?: variants | undefined
dexId?: number[] | undefined
hp?: number | undefined
types?: string[] | undefined
evolveFrom?: string | undefined
weight?: string | undefined
description?: string | undefined
level?: string | number | undefined
stage?: string | undefined
suffix?: string | undefined
item?: { name: string; effect: string } | undefined
abilities?: { type: string; name: string; effect: string }[] | undefined
attacks?: { cost?: string[] | undefined; name: string; effect?: string | undefined; damage?: string | number | undefined }[] | undefined
weaknesses?: { type: string; value?: string | undefined }[] | undefined
resistances?: { type: string; value?: string | undefined }[] | undefined
retreat?: number | undefined
effect?: string | undefined
trainerType?: string | undefined
energyType?: string | undefined
regulationMark?: string | undefined
legal!: { standard: boolean; expanded: boolean }
id!: string
localId!: string
name!: string
image?: string | undefined
public constructor(
private lang: SupportedLanguages,
private card: SDKCard
) {
objectLoop(card, (it, key) => {
if (key === 'set') {
return
}
this[key as 'id'] = it
})
}
public set(): Set {
return Set.findOne(this.lang, {id: this.card.set.id}) as Set
}
public static find(lang: SupportedLanguages, params: Partial<Record<keyof SDKCard, any>> = {}, pagination?: Pagination) {
let list : Array<SDKCard> = (require(`../../../generated/${lang}/cards.json`) as Array<SDKCard>)
.filter((c) => objectLoop(params, (it, key) => {
if (typeof it === "string") {
return c[key as 'localId'].toLowerCase().includes(it.toLowerCase())
}
return c[key as 'localId'].includes(it)
}))
if (pagination) {
list = list
.splice(pagination.count * pagination.page - 1, pagination.count)
}
return list.map((it) => new Card(lang, it))
}
public static raw(lang: SupportedLanguages): Array<SDKCard> {
return require(`../../generated/${lang}/cards.json`)
}
public static findOne(lang: SupportedLanguages, params: Partial<Record<keyof SDKCard, any>> = {}) {
const res = (require(`../../generated/${lang}/cards.json`) as Array<SDKCard>).find((c) => {
return objectLoop(params, (it, key) => {
if (key === 'set') {
return c['set'].id.includes(it) || c['set'].name.includes(it)
}
if (typeof it === "string") {
return c[key as 'localId'].toLowerCase().includes(it.toLowerCase())
}
return c[key as 'localId'].includes(it)
})
})
if (!res) {
return undefined
}
return new Card(lang, res)
}
public resume(): CardResume {
return {
id: this.id,
localId: this.localId,
name: this.name,
image: this.image
}
}
public full(): SDKCard {
return this.card
}
}

View File

@ -0,0 +1,66 @@
import { objectLoop } from '@dzeio/object-util'
import { Serie as SDKSerie, SerieResume, SupportedLanguages } from '@tcgdex/sdk'
import Set from './Set'
import { Pagination } from '../../interfaces'
type LocalSerie = Omit<SDKSerie, 'sets'> & {sets: () => Array<Set>}
export default class Serie implements LocalSerie {
id!: string
name!: string
logo?: string | undefined
public constructor(
private lang: SupportedLanguages,
private serie: SDKSerie
) {
objectLoop(serie, (it, key) => {
if (key === 'sets') {
return
}
this[key as 'id'] = it
})
}
public sets(): Array<Set> {
return this.serie.sets.map((s) => Set.findOne(this.lang, {id: s.id}) as Set)
}
public static find(lang: SupportedLanguages, params: Partial<Record<keyof SDKSerie, any>> = {}, pagination?: Pagination) {
let list = (require(`../../generated/${lang}/series.json`) as Array<SDKSerie>)
.filter((c) => objectLoop(params, (it, key) => {
return c[key as 'id'].includes(it)
}))
if (pagination) {
list = list
.splice(pagination.count * pagination.page - 1, pagination.count)
}
return list.map((it) => new Serie(lang, it))
}
public static findOne(lang: SupportedLanguages, params: Partial<Record<keyof Serie, any>> = {}): Serie | undefined {
const res = (require(`../../../generated/${lang}/series.json`) as Array<SDKSerie>)
.find((c) => {
return objectLoop(params, (it, key) => {
return c[key as 'id'].includes(it)
})
})
if (!res) {
return undefined
}
return new Serie(lang, res)
}
public resume(): SerieResume {
return {
id: this.id,
name: this.name,
logo: this.logo
}
}
public full(): SDKSerie {
return this.serie
}
}

View File

@ -0,0 +1,89 @@
import { objectLoop } from '@dzeio/object-util'
import { Set as SDKSet, SetResume, SupportedLanguages } from '@tcgdex/sdk'
import Card from './Card'
import { Pagination } from '../../interfaces'
import Serie from './Serie'
interface variants {
normal?: boolean;
reverse?: boolean;
holo?: boolean;
firstEdition?: boolean;
}
type LocalSet = {serie: () => Serie, cards: () => Array<Card>} & Omit<SDKSet, 'serie' | 'cards'>
export default class Set implements LocalSet {
public constructor(
private lang: SupportedLanguages,
private set: SDKSet
) {
objectLoop(set, (it, key) => {
if (key === 'serie' || key === 'cards') {
return
}
this[key as 'id'] = it
})
}
tcgOnline?: string | undefined
variants?: variants | undefined
releaseDate!: string
legal!: { standard: boolean; expanded: boolean }
cardCount!: { total: number; official: number; normal: number; reverse: number; holo: number; firstEd?: number | undefined }
id!: string
name!: string
logo?: string | undefined
symbol?: string | undefined
public serie(): Serie {
return Serie.findOne(this.lang, {id: this.set.serie.id}) as Serie
}
public cards(): Array<Card> {
return this.set.cards.map((s) => Card.findOne(this.lang, {id: s.id}) as Card)
}
public static find(lang: SupportedLanguages, params: Partial<Record<keyof SDKSet, any>> = {}, pagination?: Pagination) {
let list = (require(`../../../generated/${lang}/sets.json`) as Array<SDKSet>)
.filter((c) => objectLoop(params, (it, key) => {
return c[key as 'id'].includes(it)
}))
if (pagination) {
list = list
.splice(pagination.count * pagination.page - 1, pagination.count)
}
return list.map((it) => new Set(lang, it))
}
public static findOne(lang: SupportedLanguages, params: Partial<Record<keyof Set, any>> = {}) {
const res = (require(`../../../generated/${lang}/sets.json`) as Array<SDKSet>).find((c) => {
return objectLoop(params, (it, key) => {
return c[key as 'id'].includes(it)
})
})
if (!res) {
return undefined
}
return new Set(lang, res)
}
public resume(): SetResume {
return {
id: this.id,
name: this.name,
logo: this.logo,
symbol: this.symbol,
cardCount: {
total: this.cardCount.total,
official: this.cardCount.official
}
}
}
public full(): SDKSet {
return this.set
}
}