Update scripts
This commit is contained in:
@@ -1,12 +1,8 @@
|
||||
import { Collection, Dictionary } from '@freearhey/core'
|
||||
import { Region, Language } from '.'
|
||||
|
||||
type CountryData = {
|
||||
code: string
|
||||
name: string
|
||||
lang: string
|
||||
flag: string
|
||||
}
|
||||
import { Region, Language, Subdivision } from '.'
|
||||
import type { CountryData, CountrySerializedData } from '../types/country'
|
||||
import { SubdivisionSerializedData } from '../types/subdivision'
|
||||
import { RegionSerializedData } from '../types/region'
|
||||
|
||||
export class Country {
|
||||
code: string
|
||||
@@ -17,7 +13,9 @@ export class Country {
|
||||
subdivisions?: Collection
|
||||
regions?: Collection
|
||||
|
||||
constructor(data: CountryData) {
|
||||
constructor(data?: CountryData) {
|
||||
if (!data) return
|
||||
|
||||
this.code = data.code
|
||||
this.name = data.name
|
||||
this.flag = data.flag
|
||||
@@ -38,8 +36,8 @@ export class Country {
|
||||
return this
|
||||
}
|
||||
|
||||
withLanguage(languagesGroupedByCode: Dictionary): this {
|
||||
this.language = languagesGroupedByCode.get(this.languageCode)
|
||||
withLanguage(languagesKeyByCode: Dictionary): this {
|
||||
this.language = languagesKeyByCode.get(this.languageCode)
|
||||
|
||||
return this
|
||||
}
|
||||
@@ -55,4 +53,34 @@ export class Country {
|
||||
getSubdivisions(): Collection {
|
||||
return this.subdivisions || new Collection()
|
||||
}
|
||||
|
||||
serialize(): CountrySerializedData {
|
||||
return {
|
||||
code: this.code,
|
||||
name: this.name,
|
||||
flag: this.flag,
|
||||
languageCode: this.languageCode,
|
||||
language: this.language ? this.language.serialize() : null,
|
||||
subdivisions: this.subdivisions
|
||||
? this.subdivisions.map((subdivision: Subdivision) => subdivision.serialize()).all()
|
||||
: [],
|
||||
regions: this.regions ? this.regions.map((region: Region) => region.serialize()).all() : []
|
||||
}
|
||||
}
|
||||
|
||||
deserialize(data: CountrySerializedData): this {
|
||||
this.code = data.code
|
||||
this.name = data.name
|
||||
this.flag = data.flag
|
||||
this.languageCode = data.languageCode
|
||||
this.language = data.language ? new Language().deserialize(data.language) : undefined
|
||||
this.subdivisions = new Collection(data.subdivisions).map((data: SubdivisionSerializedData) =>
|
||||
new Subdivision().deserialize(data)
|
||||
)
|
||||
this.regions = new Collection(data.regions).map((data: RegionSerializedData) =>
|
||||
new Region().deserialize(data)
|
||||
)
|
||||
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user