Skip to content
This repository has been archived by the owner on Nov 24, 2023. It is now read-only.

Data would all be lowercase + fix setup + update data pipeline #86

Merged
merged 5 commits into from
Nov 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 79 additions & 79 deletions data/generated/csv/abilities.csv

Large diffs are not rendered by default.

268 changes: 134 additions & 134 deletions data/generated/json/abilities.json

Large diffs are not rendered by default.

158 changes: 79 additions & 79 deletions data/generated/txt/abilities.txt

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
"db:create": "bash ./scripts/run_db_create.sh",
"db:migrate": "rm -rf ./dist/migrations && npm run tsc && typeorm migration:run && npm run db:migrate-test;",
"db:migrate-test": "ts-node ./node_modules/typeorm/cli.js migration:run -c \"test\"",
"db:update-data": "bash ./scripts/run_save_data.sh",
"db:reset": "bash ./scripts/run_db_reset.sh",
"db:reset-data": "bash ./scripts/run_reset_data.sh",
"db:seed-json": "npm run tsc && node dist/seed/populate.js",
"db:drop": "bash ./scripts/run_db_cleanup.sh",
"test:resolver": "jest --testPathPattern=tests/resolvers --verbose",
Expand Down
22 changes: 11 additions & 11 deletions scripts/db_drop.sql
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
DROP TABLE ability CASCADE;
DROP TABLE "Towers" CASCADE;
DROP TABLE ability_level;
DROP TABLE main_stats;
DROP TABLE attack_stats;
DROP TABLE barracks_stats;
DROP TABLE build_sequence;
DROP TYPE "Towers_towertype_enum";
DROP TYPE "Towers_level_enum";
DROP TYPE "Towers_kingdom_enum";
DROP TABLE migrations;
DROP TABLE IF EXISTS ability CASCADE;
DROP TABLE IF EXISTS "Towers" CASCADE;
DROP TABLE IF EXISTS ability_level;
DROP TABLE IF EXISTS main_stats;
DROP TABLE IF EXISTS attack_stats;
DROP TABLE IF EXISTS barracks_stats;
DROP TABLE IF EXISTS build_sequence;
DROP TYPE IF EXISTS "Towers_towertype_enum";
DROP TYPE IF EXISTS "Towers_level_enum";
DROP TYPE IF EXISTS "Towers_kingdom_enum";
DROP TABLE IF EXISTS migrations;
14 changes: 7 additions & 7 deletions scripts/db_load_csv.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
\copy "Towers" FROM './data/generated/csv/towers.csv' DELIMITER ',' csv header;
\copy main_stats FROM './data/generated/csv/main-stats.csv' DELIMITER ',' csv header;
\copy attack_stats FROM './data/generated/csv/attacks-stats.csv' DELIMITER ',' csv header;
\copy barracks_stats FROM './data/generated/csv/barracks-stats.csv' DELIMITER ',' csv header;
\copy ability FROM './data/generated/csv/abilities.csv' DELIMITER ',' csv header;
\copy ability_level FROM './data/generated/csv/ability-levels.csv' DELIMITER ',' csv header;
\copy build_sequence FROM './data/generated/csv/build-sequences.csv' DELIMITER ',' csv header;
\COPY "Towers" FROM './data/generated/csv/towers.csv' DELIMITER ',' CSV HEADER;
\COPY main_stats FROM './data/generated/csv/main-stats.csv' DELIMITER ',' CSV HEADER;
\COPY attack_stats FROM './data/generated/csv/attacks-stats.csv' DELIMITER ',' CSV HEADER;
\COPY barracks_stats FROM './data/generated/csv/barracks-stats.csv' DELIMITER ',' CSV HEADER;
\COPY ability FROM './data/generated/csv/abilities.csv' DELIMITER ',' CSV HEADER;
\COPY ability_level FROM './data/generated/csv/ability-levels.csv' DELIMITER ',' CSV HEADER;
\COPY build_sequence FROM './data/generated/csv/build-sequences.csv' DELIMITER ',' CSV HEADER;
14 changes: 7 additions & 7 deletions scripts/db_save_csv.sql
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
\dt
\dT
\copy (SELECT * From "Towers" ORDER BY id ASC) To './data/generated/csv/towers.csv' With CSV HEADER
\copy (SELECT * From main_stats ORDER BY id ASC) To './data/generated/csv/main-stats.csv' With CSV HEADER
\copy (SELECT * From attack_stats ORDER BY id ASC) To './data/generated/csv/attacks-stats.csv' With CSV HEADER
\copy (SELECT * From barracks_stats ORDER BY id ASC) To './data/generated/csv/barracks-stats.csv' With CSV HEADER
\copy (SELECT * From ability ORDER BY id ASC) To './data/generated/csv/abilities.csv' With CSV HEADER
\copy (SELECT * From ability_level ORDER BY id ASC) To './data/generated/csv/ability-levels.csv' With CSV HEADER
\copy (SELECT * From build_sequence ORDER BY id ASC) To './data/generated/csv/build-sequences.csv' With CSV HEADER
\COPY (SELECT * From "Towers" ORDER BY id ASC) TO './data/generated/csv/towers.csv' With CSV HEADER
\COPY (SELECT * From main_stats ORDER BY id ASC) TO './data/generated/csv/main-stats.csv' With CSV HEADER
\COPY (SELECT * From attack_stats ORDER BY id ASC) TO './data/generated/csv/attacks-stats.csv' With CSV HEADER
\COPY (SELECT * From barracks_stats ORDER BY id ASC) TO './data/generated/csv/barracks-stats.csv' With CSV HEADER
\COPY (SELECT * From ability ORDER BY id ASC) TO './data/generated/csv/abilities.csv' With CSV HEADER
\COPY (SELECT * From ability_level ORDER BY id ASC) TO './data/generated/csv/ability-levels.csv' With CSV HEADER
\COPY (SELECT * From build_sequence ORDER BY id ASC) TO './data/generated/csv/build-sequences.csv' With CSV HEADER

\o ./data/generated/txt/towers.txt
SELECT * FROM "Towers" ORDER BY id ASC;
Expand Down
8 changes: 4 additions & 4 deletions scripts/json-abilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,15 @@ def get_abilities(path, kingdom):
})

cleaned_abilities.append({
"abilityName": ability["name"],
"description": ability["description"],
"abilityName": ability["name"].lower(),
"description": ability["description"].lower(),
"levels": cleaned_levels
})

tower_abilities = {
"towerName": tower["name"],
"towerName": tower["name"].lower(),
"kingdom": kingdom,
"abilities":cleaned_abilities
"abilities": cleaned_abilities
}

towers.append(tower_abilities)
Expand Down
4 changes: 2 additions & 2 deletions scripts/json-attack-stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def get_attack_stats(tower_type, kingdom):
fire_interval = tower["fire_rate_in_seconds"]

new_tower = {
"name": tower["name"],
"name": tower["name"].lower(),
"kingdom": kingdom_string,
"fireInterval": fire_interval,
"range": tower["range_magnitude"],
Expand Down Expand Up @@ -80,7 +80,7 @@ def get_attack_stats(tower_type, kingdom):
for i in [1, 2, 3, 4]:
stats = tower_raw["levels"][i]
tower = {
"name": f"{name}, {i}",
"name": f"{name}, {i}".lower(),
"kingdom": "kingdom rush: vengeance",
"fireInterval": stats["fire_rate"],
"range": stats["range"],
Expand Down
4 changes: 2 additions & 2 deletions scripts/json-barracks-stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def get_barracks_stats(kingdom):
for i, tower in enumerate(kr_towers):
number_of_units = 3 if "number_of_units" not in tower.keys() else tower["number_of_units"]
base_barracks_stats = {
"name": tower["name"],
"name": tower["name"].lower(),
"kingdom": KINGDOM_NAME[kingdom],
"health": tower["hp_magnitude"],
"armor": tower["armor_magnitude"],
Expand Down Expand Up @@ -84,7 +84,7 @@ def get_barracks_stats(kingdom):
number_of_units = 3 if "number_of_units" not in tower_raw.keys() else tower_raw["number_of_units"]
name = tower_raw["name"]
tower = {
"name": f"{name}, {i}",
"name": f"{name}, {i}".lower(),
"health": stats["health"],
"armor": stats["armor"],
"respawnInterval": stats["respawn"],
Expand Down
4 changes: 2 additions & 2 deletions scripts/json-build-sequence.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def get_build_sequence(tower_type, kingdom):
build_sequence = []
kr_towers = yaml.load_all(stream, yaml.Loader)
for i, tower in enumerate(kr_towers):
tower_names.append(tower["name"])
tower_names.append(tower["name"].lower())

name4a, name4b = tower_names[3:]

Expand Down Expand Up @@ -71,7 +71,7 @@ def get_build_sequence(tower_type, kingdom):
krv_towers_raw = yaml.load_all(stream, yaml.Loader)

for i, tower_raw in enumerate(krv_towers_raw):
name = tower_raw["name"]
name = tower_raw["name"].lower()
krv_build_sequences.append({
"kingdom": "kingdom rush: vengeance",
"levels": [
Expand Down
11 changes: 9 additions & 2 deletions scripts/json-image-urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,15 @@
stream = open(path, "r")
data = yaml.load_all(stream, yaml.Loader)

data_dict = [datum for datum in data]
json_data = { "data": data_dict }
data_dicts = [
{
"name": datum["name"].lower(),
"kingdom": datum["kingdom"],
"imageUrl": datum["imageUrl"]
} for datum in data
]

json_data = { "data": data_dicts }

with open("./data/generated/json/image-urls.json", 'w') as fout:
json_dumps_str = json.dumps(json_data, indent=4)
Expand Down
4 changes: 2 additions & 2 deletions scripts/json-towers.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def get_towers(tower_type, kingdom):
for i, tower in enumerate(kr_towers):
print(i, tower["name"], kingdom)
new_tower = {
"name": tower["name"],
"name": tower["name"].lower(),
"buildCost": tower["build_cost"],
"kingdom": kingdom_string,
"level": tower["level"],
Expand Down Expand Up @@ -84,7 +84,7 @@ def get_towers(tower_type, kingdom):
for i in [1, 2, 3, 4]:
stats = tower_raw["levels"][i]
tower = {
"name": f"{name}, {i}",
"name": f"{name}, {i}".lower(),
"level": i,
"buildCost": stats["build_cost"],
"towerType": tower_raw["type"],
Expand Down
8 changes: 4 additions & 4 deletions scripts/run_db_cleanup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ psql -c "SELECT rolname FROM pg_catalog.pg_roles";
psql kingdom_rush_user -h localhost -d kingdom_rush_db --pset=pager -f ./scripts/db_drop.sql;
psql kingdom_rush_user -h localhost -d test_db --pset=pager -f ./scripts/db_drop.sql;

psql -c "DROP DATABASE empty_test_db";
psql -c "DROP DATABASE test_db";
psql -c "DROP DATABASE kingdom_rush_db";
psql -c "DROP ROLE kingdom_rush_user";
psql -c "DROP DATABASE IF EXISTS empty_test_db";
psql -c "DROP DATABASE IF EXISTS test_db";
psql -c "DROP DATABASE IF EXISTS kingdom_rush_db";
psql -c "DROP ROLE IF EXISTS kingdom_rush_user";
echo "Current existing roles:"
psql -c "SELECT rolname FROM pg_catalog.pg_roles";

Expand Down
3 changes: 3 additions & 0 deletions scripts/run_db_reset.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
npm run db:drop;
npm run db:create;
npm run db:migrate;
4 changes: 4 additions & 0 deletions scripts/run_save_data.sh → scripts/run_reset_data.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Drop database if currently exists and make a new one from scratch
# including all the tables
npm run db:reset

# Generates json files from raw/yaml files
python ./scripts/json-towers.py;
python ./scripts/json-barracks-stats.py;
Expand Down
10 changes: 3 additions & 7 deletions scripts/run_setup.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
# install packages
npm install;

# Create databases: kingdom_rush_db, test_db, empty_test_db
npm run db:create;

# copy .env.sample to .env
cp .env.sample .env;

# Create databases: kingdom_rush_db, test_db, empty_test_db
# Run migrations for test_db and kingdom_rush_db
npm run db:migrate;

# Populate kingdom_rush_db from yaml to json to database tables to csv
# then populates test_db with csv data
npm run db:update-data;
npm run db:reset-data;

# Print the information about the test_db
# Print the information in the test_db
psql kingdom_rush_user -h localhost -d test_db --pset=pager -f ./scripts/db_gen_info.sql;
psql kingdom_rush_user -h localhost -d test_db --pset=pager -f ./scripts/db_table_info.sql;

Expand Down
4 changes: 2 additions & 2 deletions src/resolvers/AbilityResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export class AbilityResolver {

@Query(() => [Ability])
async abilitiesByTowerName(@Arg("name") name: String) {
return this.abilityService.abilitiesByTowerName(name)
return this.abilityService.abilitiesByTowerName(name.toLowerCase())
}

@Query(() => Ability, { nullable: true })
Expand All @@ -60,6 +60,6 @@ export class AbilityResolver {

@Query(() => Ability, { nullable: true })
async abilityByName(@Arg("name") name: String) {
return this.abilityService.abilityByName(name)
return this.abilityService.abilityByName(name.toLowerCase())
}
}
4 changes: 2 additions & 2 deletions src/resolvers/BuildSequenceResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ buildSequences(
onlyKingdoms: []
onlyTowerTypes: []
sortBy: [
tower4Name,
towerName,
towerType
kingdom
totalBuildCost
Expand Down Expand Up @@ -53,6 +53,6 @@ export class BuildSequenceResolver {

@Query(() => BuildSequence, { nullable: true })
async buildSequenceByTowerName(@Arg("name") name: String) {
return this.buildSequenceService.buildSequenceByTowerName(name)
return this.buildSequenceService.buildSequenceByTowerName(name.toLowerCase())
}
}
4 changes: 2 additions & 2 deletions tests/resolvers/__CASES__/ability/case01.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ const result = () => {
Object {
"data": Object {
"abilityById": Object {
"abilityDescription": "Fills a zone with powerful healing roots. Allies over it heal over 4 seconds. Each upgrade level increases HP healed",
"abilityDescription": "fills a zone with powerful healing roots. allies over it heal over 4 seconds. each upgrade level increases hp healed",
"abilityId": 85,
"abilityName": "Healing Roots",
"abilityName": "healing roots",
"kingdom": "KRV",
"levelCosts": Array [
130,
Expand Down
4 changes: 2 additions & 2 deletions tests/resolvers/__CASES__/ability/case04.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const result = () => {
"data": Object {
"abilitiesByTowerId": Array [
Object {
"abilityDescription": "Sends an automated mining drill towards an enemy, reducing it to a mound of gibs. Every upgrade level decreases cooldown.",
"abilityDescription": "sends an automated mining drill towards an enemy, reducing it to a mound of gibs. every upgrade level decreases cooldown.",
"abilityId": 33,
"abilityName": "core drill",
"kingdom": "KRF",
Expand All @@ -45,7 +45,7 @@ const result = () => {
"towerType": "ARTILLERY",
},
Object {
"abilityDescription": "Burns all enemies in close range over 4 seconds. Every upgrade level increases maximum damage and damage per second",
"abilityDescription": "burns all enemies in close range over 4 seconds. every upgrade level increases maximum damage and damage per second",
"abilityId": 34,
"abilityName": "furnace blast",
"kingdom": "KRF",
Expand Down
8 changes: 4 additions & 4 deletions tests/resolvers/__CASES__/ability/case07.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@ const result = () => {
"data": Object {
"abilitiesByTowerName": Array [
Object {
"abilityDescription": "Phases enemies out of the battlefield for 5 seconds, dealing magical damage. Every upgrade level increases maximum number of targets and damage dealt.",
"abilityDescription": "phases enemies out of the battlefield for 5 seconds, dealing magical damage. every upgrade level increases maximum number of targets and damage dealt.",
"abilityId": 49,
"abilityName": "Timelapse",
"abilityName": "timelapse",
"kingdom": "KRO",
"levelCosts": Array [
225,
Expand All @@ -45,9 +45,9 @@ const result = () => {
"towerType": "MAGE",
},
Object {
"abilityDescription": "Summons magic sentinels that seek and attack nearby enemies at long range. Every upgrade level increases damage per bolt and the number of sentinels.",
"abilityDescription": "summons magic sentinels that seek and attack nearby enemies at long range. every upgrade level increases damage per bolt and the number of sentinels.",
"abilityId": 50,
"abilityName": "Arcane Sentinel",
"abilityName": "arcane sentinel",
"kingdom": "KRO",
"levelCosts": Array [
300,
Expand Down
6 changes: 3 additions & 3 deletions tests/resolvers/__CASES__/ability/case08.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { DocumentNode } from "graphql"
const description = "abilityByName: When ability name exists"
const testQuery = gql`
{
abilityByName(name: "Biggarangs") {
abilityByName(name: "biggarangs") {
abilityDescription
abilityId
abilityName
Expand All @@ -26,9 +26,9 @@ const result = () => {
Object {
"data": Object {
"abilityByName": Object {
"abilityDescription": "Throws a massive boomerang which deals damage in an area of 70. In upgrade level increases the damage dealt.",
"abilityDescription": "throws a massive boomerang which deals damage in an area of 70. in upgrade level increases the damage dealt.",
"abilityId": 76,
"abilityName": "Biggarangs",
"abilityName": "biggarangs",
"kingdom": "KRV",
"levelCosts": Array [
200,
Expand Down
4 changes: 2 additions & 2 deletions tests/resolvers/__CASES__/tower/case05.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export const result = () => {
"towerById": Object {
"abilities": Array [
Object {
"abilityDescription": "creates a static field around the tower when attacking dealing explosive to all nearby enemies. Every upgrade level increases the damage dealt by the field.",
"abilityDescription": "creates a static field around the tower when attacking dealing explosive to all nearby enemies. every upgrade level increases the damage dealt by the field.",
"abilityId": 17,
"abilityName": "overcharge",
"kingdom": "KR",
Expand All @@ -102,7 +102,7 @@ export const result = () => {
"towerType": "ARTILLERY",
},
Object {
"abilityDescription": "increases the maximum number of targets that the bolt arcs to. base is 3 targets. Every upgrade level increase the number of maximum targets.",
"abilityDescription": "increases the maximum number of targets that the bolt arcs to. base is 3 targets. every upgrade level increase the number of maximum targets.",
"abilityId": 18,
"abilityName": "supercharged bolt",
"kingdom": "KR",
Expand Down