Commit graph

409 commits

Author SHA1 Message Date
c0922203a7
Create pipeline for importing data via PRs (#148)
* Add table for data version and migrate

* Modify migration and re-migrate

* Create data_version.rb

Adds a model for DataVersion

* Add aws-sdk-s3 and create aws_service.rb

AwsService handles streaming game image files from the Granblue Fantasy server to our S3 instance.

* Add importers

The Importer libraries take CSV data and import them into the database for each type. We currently support characters, summons and weapons.

* Add downloaders

Downloaders take Granblue IDs and download images for those items from the Granblue Fantasy server in all relevant sizes.

Downloaders can download to disk or stream the file directly to S3.

* Create data_importer.rb

* Fetches a list of all CSV files present in the updates folder
* Checks which have already been imported
* Sends unimported data to the appropriate Importer to handle

* Create download_manager.rb

Creates an appropriate downloader for each Granblue ID it receives

* Update download_images.rake

Most of this task has been extracted into the Downloader libraries

* Update import_data.rake

* Create deploy.rake

This task is to be run as a post-deploy script. It checks for new unimported data, imports it, then downloads the relevant images to S3 or local disk depending on the parameters provided.

* Update credentials.yml.enc

* Began working on a README and added example CSVs

* Modify importer to handle updates

This way we can also add FLBs and other uncaps easier.

* Updates only require values that will change

When updating a row, fields that don't have a provided value will not be changed

* Rebuild search indices in post deploy

* Clean up logs with LoggingHelper

* More logging adjustments

Trying to get a nice-looking output

* Change some ASCII characters

* Final ASCII changes

* Fix issues with Summon and Weapon importers

* Finish README for contributing
2025-01-13 05:33:04 -08:00
0e490df113
Assorted updates (#146)
* Syntax updates

* Update rake task for image downloading

* Add endpoints for showing a single job
2025-01-08 12:19:19 -08:00
53760bf87a
Add raids#show (#145) 2024-02-21 23:25:11 -05:00
9cf8626752
Add support for weapon transcendence (#142)
* Add migrations

* Add weapon key 4 column

* Update schema.rb

* Add transcendence date to weapon

* Rename summon XLB to match weapon

* Update blueprints

* Update search

* Accept weapon transcendence step

* Update XLB to transcendence for summons

* Add logic for transcending weapons

* Add transcendence step to weapon blueprint
2024-01-15 14:05:17 -08:00
4cf6516fe5
Allow PartiesController to accept nested attributes (#141) 2024-01-13 09:56:55 -08:00
d465b87da6
Hotfix so weapon key search translates ints to arrays (#140) 2023-12-30 06:20:22 -08:00
10901a74da
Don't index on nicknames for now (#139)
This is causing us to be unable to re-index for some reason
2023-12-26 14:03:29 -08:00
00e5ec8c4b
API updates for Draconic Weapons Providence (#138)
* Make weapon key series an array

Draconic Weapons Providence can have original Draconic Weapon keys, but also have a new key that can only be equipped to them. Thanks, Cygames.

* Update weapon.rb

* Update to check key compatibility against an array instead of an int
* Add convenience function to check if the weapon is part of a Draconic Weapon series

* Update grid_weapon.rb

Update conflict detection to:
* Detect Draconic Weapons Providence
* Add multiple weapons to conflicting weapons instead of just one

* (WIP) Update conflict view rendering

Conflict blueprints should render multiple conflict weapons instead of just one.

Also adds Draconic Weapon Providence series to various places that check series by number

* Finish last bugs

We tested to ensure that conflict resolution appears for

* Opus and Draconic
* Draconic and Draconic 2
* Draconic 2 + Opus and Draconic 1
2023-12-26 03:21:06 -08:00
92f29dfa08
Set extra from raid party, not extra property (#137) 2023-11-05 14:30:08 -08:00
3356701671
Fix not_owner method (#136) 2023-10-11 11:25:02 +09:00
4945a82980
Nullify edit key when party is remixed (#135)
This stops logged in users from editing remixed parties
2023-09-26 07:53:14 +09:00
f8815043e6
Return the user's role in login and user blueprints (#133) 2023-09-09 02:29:32 -07:00
0cf1e629bf
Fix editing items without AX skills (#132)
Add & to check that the `ax_strength` keys exist before testing for `zero?`
2023-09-03 14:16:46 -07:00
2dd37d1a1e
Null out empty AX values before saving (#131) 2023-09-01 11:19:37 -07:00
5cd357be3f
Allow World Weapons in Extra slots (#130) 2023-08-31 18:42:20 -07:00
39b353d9bd
(Hotfix) Fix summon transcendence (#129)
Manually setting summon transcendence was not working due to a change that passed in the canonical object instead of the grid object to `max_uncap_level`
2023-08-26 15:38:54 -07:00
8381c668bc
Implement roles and visibility (#128)
* Add migrations to add user roles and party visibility.

* Update schema.rb

* Add admin check in User model

* Implement rudimentary visibility of teams

* Adds checks to Party model
* Hides parties from collection views depending on visibility
* Disallows viewing private parties if you're not the owner

* Add a party's visibility to blueprint

* Add admin mode

The API Controller checks if the user is logged in and whether they are an admin, and checks for the X-Admin-Mode header

* Implement admin mode overrides

* Add admin_mode to authorize

* Note to self: Implement user editing by admins

* Fix syntax error with equality in SQL

* Fix syntax error with method name

* Fix bug in who can see restricted parties

* Add privacy control to user profiles
2023-08-25 15:53:56 -07:00
c79d2717cc
Hotfix 20230821 (#127)
* Fix favorites page by fixing how query is built

* Set uncap level when GridSummon is created

If you don't, then NULL entries get sent to the database from the bookmarklet.
2023-08-24 20:41:31 -07:00
ac7f5ab80a
Send characters and summons in preview layout (#126) 2023-08-23 23:52:32 -07:00
af960d7a93
Fix favorites page by fixing how query is built (#125) 2023-08-21 20:42:54 -07:00
d2c5455120
Add support for inclusions/exclusions (#124)
* Remove ap call

* Fix remix render method

* Downcase username on db end

There was a bug where users with capital letters in their name could not access their profiles after we tried to make things case insensitive.

* Remove ap call and unused code

* Add granblue.team to cors

This works now!

* Implement all-entity search to support tagging objects (#117)

* Add table for multisearch

* Add new route for searching all entities

* Make models multisearchable

We're going to start with Character, Summon, Weapon and Jobs

* Add method to Search controller

This will search with trigram first, and then if there aren't enough results, search with prefixed text search

* Add support for Japanese all-entity search

* Update grid_summons_controller.rb

Set the proper uncap level for transcended summons

* Search is broken in Japanese!

* Grid model object updates

* Adds has_one association to canonical objects
* GridWeapon is_mainhand refactored
* GridCharacter add_awakening refactored

* (WIP) Add support for inclusion/exclusion + refactor

This commit adds basic support for including/excluding objects from collection filters. There is also a refactor of the filter logic as a whole. It is only implemented in `teams` for now and is a work in progress.

* Update multisearch for exclusions

* Add nicknames to the index for multisearchable
2023-08-21 20:01:15 -07:00
4ee7a3a644
Order search results by release or update date (#123)
The list of all items that shows up when you open the search modal will now list all items sorted latest first, whether the item is brand new or an item that recently got an uncap.
2023-08-20 01:56:15 -07:00
1646f3d555
Update item search with better fallbacks and nicknames (#122)
* Add migrations for nicknames

* Rename migrations to be after last migration

* Migrate database

* Update search in models

* Search against nickname columns
* Add dictionary search to EN search so its not only trigrams
2023-08-20 00:46:25 -07:00
0ccbb7ecfe
Implement wiki parsers (#121)
* Remove ap call

* Fix remix render method

* Downcase username on db end

There was a bug where users with capital letters in their name could not access their profiles after we tried to make things case insensitive.

* Remove ap call and unused code

* Add granblue.team to cors

This works now!

* Implement all-entity search to support tagging objects (#117)

* Add table for multisearch

* Add new route for searching all entities

* Make models multisearchable

We're going to start with Character, Summon, Weapon and Jobs

* Add method to Search controller

This will search with trigram first, and then if there aren't enough results, search with prefixed text search

* Add support for Japanese all-entity search

* Update grid_summons_controller.rb

Set the proper uncap level for transcended summons

* Search is broken in Japanese!

* Grid model object updates

* Adds has_one association to canonical objects
* GridWeapon is_mainhand refactored
* GridCharacter add_awakening refactored

* (WIP) Add support for inclusion/exclusion + refactor

This commit adds basic support for including/excluding objects from collection filters. There is also a refactor of the filter logic as a whole. It is only implemented in `teams` for now and is a work in progress.

* Revert "Grid model object updates"

This reverts commit 70e820b781.

* Revert "(WIP) Add support for inclusion/exclusion + refactor"

This reverts commit b5f9889c00.

* Add new dependencies

* Update database with new columns

* Create WikiError

This is modeled after the errors we might receive from the wiki

* Update GranblueWiki

This is an adaptation and cleanup of the original GranblueWiki class. We extracted the object-related code into a parser, and this class is now only responsible for requests and fetching common property maps.

* Create CharacterParser

The CharacterParser is responsible for taking the response from a wiki object and turning it into something usable. Most of the logic from the original GranblueWiki object ended up here.

To use, you can instantiate a CharacterParser with a Granblue ID. It will create the wiki object for you using the provided character and fetch data when you call `fetch` on the CharacterParser.

You can also fetch data for all characters with the static method `fetch_all`

Currently a specific subset of fields are persisted, but in the future more can and probably should be saved

* Add data tables for weapons and summons

This lets us store wiki data and release dates for weapons and summons

* Add mapping for bullets

* Properly pass props

* Update debug string

* Update character parser to use correct vars

* Add weapon parser

The weapon parser parses through weapon pages.

It has the ability to parse skills but that is not complete yet.

It can go through every weapon on the wiki with the aid of the new `wiki_en` column and parse basic data successfully

* Update code for FLB

If a weapon has ULB, it has FLB too

* Add summon parser

The summon parser parses through summon pages. Aura/Call parsing has not been added.

* Add XLB date column for summons

* Add fetch_from_list static method

This backports the `fetch_from_list` static method to CharacterParser and WeaponParser. This will let us fetch data for a specific set of items instead of having to fetch one-by-one or fetch the entire dataset again.
2023-08-19 23:05:32 -07:00
c7b0c48428
Search was broken in Japanese! (#120)
* Remove ap call

* Fix remix render method

* Downcase username on db end

There was a bug where users with capital letters in their name could not access their profiles after we tried to make things case insensitive.

* Remove ap call and unused code

* Add granblue.team to cors

This works now!

* Implement all-entity search to support tagging objects (#117)

* Add table for multisearch

* Add new route for searching all entities

* Make models multisearchable

We're going to start with Character, Summon, Weapon and Jobs

* Add method to Search controller

This will search with trigram first, and then if there aren't enough results, search with prefixed text search

* Add support for Japanese all-entity search

* Update grid_summons_controller.rb

Set the proper uncap level for transcended summons

* Search is broken in Japanese!
2023-07-06 18:08:08 -07:00
6d51033d0e
Fix summon update_uncap_level (#119)
* Remove ap call

* Fix remix render method

* Downcase username on db end

There was a bug where users with capital letters in their name could not access their profiles after we tried to make things case insensitive.

* Remove ap call and unused code

* Add granblue.team to cors

This works now!

* Implement all-entity search to support tagging objects (#117)

* Add table for multisearch

* Add new route for searching all entities

* Make models multisearchable

We're going to start with Character, Summon, Weapon and Jobs

* Add method to Search controller

This will search with trigram first, and then if there aren't enough results, search with prefixed text search

* Add support for Japanese all-entity search

* Update grid_summons_controller.rb

Set the proper uncap level for transcended summons
2023-07-06 17:10:18 -07:00
39a0d33bee
July 2023 Feature Release: Tagging objects (#118)
* Remove ap call

* Fix remix render method

* Downcase username on db end

There was a bug where users with capital letters in their name could not access their profiles after we tried to make things case insensitive.

* Remove ap call and unused code

* Add granblue.team to cors

This works now!

* Implement all-entity search to support tagging objects (#117)

* Add table for multisearch

* Add new route for searching all entities

* Make models multisearchable

We're going to start with Character, Summon, Weapon and Jobs

* Add method to Search controller

This will search with trigram first, and then if there aren't enough results, search with prefixed text search

* Add support for Japanese all-entity search
2023-07-05 21:51:36 -07:00
13a9644bb0
(Hotfix) Fixes a variety of small bugs (#115)
* Remove ap call

* Fix remix render method

* Downcase username on db end

There was a bug where users with capital letters in their name could not access their profiles after we tried to make things case insensitive.

* Remove ap call and unused code
2023-07-04 03:21:02 -07:00
78b5b063fc
Deploy July Quality Update (#114)
* Remove print statements from data migration

* (Hotfix) Fix data migration failing due to nil

* Fix stale migration errors

* Ensure new characters have Awakenings

Every character starts with Balanced Lv1 awakening

* Ensure weapons without awakenings do not expose key

* Updates database seeds (#109)

* Destroy favorites when a party is deleted

* Allow users to delete parties with remixes (#111)

There was a bug that prevented users from deleting parties with remixes, because the source party reference was not being nulled.

We fixed that with `dependent: :nullify` but also added a boolean key to the parties database to track if a party is a remix or not. This way, if a party is flagged as a remix but the source party is null, we know that the original party was deleted and can message this on the frontend.

* Fix deleting grid summons (#112)

A bad decision to try to reduce code in `set` made this fail with a 422 because `summon_params` was being tested against but... didn't exist? was nil?

I fixed it by not using `set` before calling `destroy`, and just finding the summon in the `destroy` method itself

* Usernames in URLs should not be case-sensitive (#113)

Amateur hour mistake

* Change default filters in users controller
2023-07-04 00:40:06 -07:00
293e94437b
Update seeds and fix deletion bug (#110)
* Remove print statements from data migration

* (Hotfix) Fix data migration failing due to nil

* Fix stale migration errors

* Ensure new characters have Awakenings

Every character starts with Balanced Lv1 awakening

* Ensure weapons without awakenings do not expose key

* Updates database seeds (#109)

* Destroy favorites when a party is deleted
2023-06-23 20:34:08 -07:00
e588b81d4a
(Hotfix) Fix awakening-related API errors (#108)
* Remove print statements from data migration

* (Hotfix) Fix data migration failing due to nil

* Fix stale migration errors

* Ensure new characters have Awakenings

Every character starts with Balanced Lv1 awakening

* Ensure weapons without awakenings do not expose key
2023-06-21 01:10:05 -07:00
7faa4883f0
June 2023 Update (#102)
* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add tables used for Siero's revival (#94)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Deploy unauthenticated profile fix (#93)

* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add guidebooks migration

* Implement business logic for reading Guidebooks

* Change to individual guidebook columns

* Properly output guidebook description

* Move to 1-index guidebooks

* Update party-related files for 1-index guidebooks

* Add tables for Siero

* Update download and export scripts

* Support for Siero, raids rework and edit party rework (#96)

* Add guidebooks migration

* Implement business logic for reading Guidebooks

* Change to individual guidebook columns

* Properly output guidebook description

* Move to 1-index guidebooks

* Update party-related files for 1-index guidebooks

* Add tables for Siero

* Add raid groups table

* Update raid model

To belong to the RaidGroup class

* Update job class

To have many job skills

* Add endpoint for raid groups

* Update Raid blueprint with views

* Added down for creating table

* Add guidebooks flag and auto summon flag

* Guidebooks → RaidGroup
* Auto summon → Party

* Add views to Raid blueprint

* Add views and guidebook flag to RaidGroup blueprint

* Add auto summon and Raid view to Party blueprint

* Add quick summons (#97)

* Adds quick summon migration
* Add route to update quick summon
* Add logic to update quick summon

* Remove ap call

* Add logic to updating summon uncap

You couldn't actually update summon transcendence on staging, maybe due to a bug?

Now you can. And it won't let you update outside of the bounds of what is defined on the canonical object.

* Fix summon logic

Updated logic for updating summon uncap and transcendence levels and quick summon status.

* Fix searching in Japanese (#99)

This was broken because we were using the browser-provided locale as a prefix to our method, but that is 'ja' and our methods were prefixed with 'jp'.

* Fix display of base skills (#100)

Base skills were not displaying due to a missing case in our search code. This is now fixed.

* Update awakenings (#101)

* Deploy unauthenticated profile fix (#93)

* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add tables used for Siero's revival (#94)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Deploy unauthenticated profile fix (#93)

* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add guidebooks migration

* Implement business logic for reading Guidebooks

* Change to individual guidebook columns

* Properly output guidebook description

* Move to 1-index guidebooks

* Update party-related files for 1-index guidebooks

* Add tables for Siero

* Adds guidebooks and gacha tables (#95)

* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add tables used for Siero's revival (#94)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Deploy unauthenticated profile fix (#93)

* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add guidebooks migration

* Implement business logic for reading Guidebooks

* Change to individual guidebook columns

* Properly output guidebook description

* Move to 1-index guidebooks

* Update party-related files for 1-index guidebooks

* Add tables for Siero

* Update download and export scripts

* Support for Siero, raids rework and edit party rework (#96)

* Add guidebooks migration

* Implement business logic for reading Guidebooks

* Change to individual guidebook columns

* Properly output guidebook description

* Move to 1-index guidebooks

* Update party-related files for 1-index guidebooks

* Add tables for Siero

* Add raid groups table

* Update raid model

To belong to the RaidGroup class

* Update job class

To have many job skills

* Add endpoint for raid groups

* Update Raid blueprint with views

* Added down for creating table

* Add guidebooks flag and auto summon flag

* Guidebooks → RaidGroup
* Auto summon → Party

* Add views to Raid blueprint

* Add views and guidebook flag to RaidGroup blueprint

* Add auto summon and Raid view to Party blueprint

* Remove ap call

* Add quick summons (#97)

* Adds quick summon migration
* Add route to update quick summon
* Add logic to update quick summon

* Add logic to updating summon uncap

You couldn't actually update summon transcendence on staging, maybe due to a bug?

Now you can. And it won't let you update outside of the bounds of what is defined on the canonical object.

* Fix summon logic

Updated logic for updating summon uncap and transcendence levels and quick summon status.

* Fix searching in Japanese (#99)

This was broken because we were using the browser-provided locale as a prefix to our method, but that is 'ja' and our methods were prefixed with 'jp'.

* Fix display of base skills (#100)

Base skills were not displaying due to a missing case in our search code. This is now fixed.

* Squash migrations into one file

* Add migrations

This adds migrations and data migrations for the awakening update.

* A new `Awakenings` table now exists that stores all possible awakenings, with a column for object type.
* GridCharacter and GridWeapon now have `awakening_id` and `awakening_level` fields. Their `awakening` and `awakening_type` fields were removed.
* Weapons have a mapping table, `WeaponAwakenings`, as not all weapons can be awakened.
* Data migrations are included to migrate existing user data. They should be run automatically when the migration is run with `rails db:migrate:with_data`

* Add and update models

This updates models for the awakening update.

* Awakening and WeaponAwakening models were added
* Weapon, GridWeapon and GridCharacter models get relationships to the new models defined
* GridCharacter had a validation on `awakening_level` that needed to be fixed

* Update controllers

This updates the GridCharacters and GridWeapons controllers to accept the new fields `awakening_id` and `awakening_level` from clients

* Update blueprints

This updates the blueprints to match the new schema. The new AwakeningBlueprint was accidentally added already, oops.

* Remove re-added migrations

* Implement removing job skills (#103)

This lets users remove job skills, for if they accidentally set them.

* Fix migration
2023-06-19 03:53:48 -07:00
af8b1aa9c1
Adds guidebooks and gacha tables (#95)
* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add tables used for Siero's revival (#94)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Deploy unauthenticated profile fix (#93)

* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth

* Add guidebooks migration

* Implement business logic for reading Guidebooks

* Change to individual guidebook columns

* Properly output guidebook description

* Move to 1-index guidebooks

* Update party-related files for 1-index guidebooks

* Add tables for Siero
2023-06-04 22:23:34 -07:00
037f74d86d
Deploy unauthenticated profile fix (#93)
* Implements advanced filters (#90)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix a bug where unauthenticated users couldn't view profiles (#92)

* Implements advanced filters (#90) (#91)

* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache

* Fix being unable to see profiles when unauth
2023-04-09 21:52:16 -07:00
6e81ffc7dd
Implements advanced filters (#90) (#91)
* Add advanced filters

Adds new filters to search:

* Full auto
* Charge attack
* Auto guard
* Number of weapons (user-selectable now)
* Number of summons
* Number of characters
* Maximum number of turns
* Maximum number of buttons
* Maximum clear time
* User quality (No anonymous users)
* Name quality (No untitled teams)
* Remixes (Only show original teams)

* Update advanced filter params

* Add default to party counter cache
2023-04-09 19:40:41 -07:00
6fd5aa8c27
Clear counter cache on remix (#87) (#88) 2023-03-17 09:07:51 -07:00
27441146ed
Re-implement latest PRs on a clean Git history (#86)
* Add granblue_id to WeaponKeys (#77)

Reimplementing #77

* Adds Ultimate Mastery and renames Master Level (#78)

* Render :created view on remix (#84)

This view is required as it shows the `edit_key` for unauth users
2023-03-17 05:03:50 -07:00
472fb6816b Allow adding EMP skills from prior rows to team
We let you search but didn't fix the server-side validation check for skills
2023-02-05 16:41:54 -08:00
158786b5a8 Show EMP skills for Row 5 classes
Row 4 EMP skills were not showing up, so you couldn't set Rage IV on Viking, for example
2023-02-05 16:32:57 -08:00
e2c1639d8f Remove log call 2023-02-05 15:49:09 -08:00
06f8d28874
February 2023 Update (#48) 2023-02-04 23:46:12 -08:00
78df1df683 Allow empty strong params 2023-01-08 01:30:12 -08:00
382b2e2a92 Enable extra if the GridWeapon is in position 9, 10, 11 2023-01-08 01:16:43 -08:00
beeeef3104 TEMP: Comment out problematic code
We don't ever send parameters when posting a party, so for now we don't need to worry about this.

We can't leave this like this though: You should be able to send a complete party in the future (for API creation via strings)
2023-01-08 01:16:25 -08:00
3226acdf4a Allow input of expanded details and output them 2023-01-03 08:05:47 -08:00
fb037b3249 Fix testing conflict_characters 2023-01-03 02:41:38 -08:00
5e4cb4fe2b Fix reference to weapon series 2023-01-03 02:41:30 -08:00
a5237d2fa0 Add AX type to blueprint 2023-01-02 21:32:11 -08:00
83c6b2397a Refactor weapon conflicts into model validations 2023-01-02 21:24:53 -08:00
c39abfe8d6 Fix AX reference
Was using int, now uses bool
2023-01-02 21:24:43 -08:00
1789dcee4b Move conflict detection code to GridWeapon 2023-01-02 16:25:35 -08:00
eaa6234714 Refactor skills_are_unique 2023-01-02 16:25:35 -08:00
9387bd321f Refactor GridCharactersController
This is a similar refactor to GridWeaponsController
2023-01-02 16:25:35 -08:00
ebbbdc174b Fix bug in GridCharactersController refactor
This would show a conflict modal for any weapon as long as one of the weapons was an opus or draconic
2023-01-02 16:25:35 -08:00
839be176ad Revert gridweaponscontroller refactor 2022-12-30 15:39:47 -08:00
7049e8e723 Fix bug introduced in last PR 2022-12-30 06:09:58 -08:00
3e77365635 Refactor #create
This method is humongous and very confusing, and often gives double render errors. This refactor breaks things up into smaller methods to help make it a bit more readable.
2022-12-30 05:08:40 -08:00
6f588386d0 Filter out grids that don't have more than two distinct weapons 2022-12-29 02:36:52 -08:00
1752081f3f Output theme 2022-12-25 20:17:20 -08:00
383d59703f Add theme to user table and blueprint 2022-12-25 16:01:40 -08:00
e2332f9652 Allow searching only for extra or subaura objects 2022-12-25 00:29:55 -08:00
adbb5b6c7d Disallow adding arbitrary weapons to Extra slots 2022-12-25 00:23:27 -08:00
ec25230bc5 Implement detecting and resolving weapon conflicts 2022-12-24 23:30:10 -08:00
7a8cf30ffb Fix series for Class Champion emblems 2022-12-24 04:55:11 -08:00
ae1da20f27 Fix fetching weapon keys so you dont need filters 2022-12-24 04:54:50 -08:00
4f4d9e27a7 Add slug to weapon key table 2022-12-23 23:31:34 -08:00
ddae480f48 Merge branch 'main' into awakening 2022-12-23 19:28:03 -08:00
f17be0ea03 Merge branch 'main' of github.com:jedmund/hensei-api 2022-12-23 19:24:12 -08:00
e0df40f035 Remove log 2022-12-23 19:22:45 -08:00
574d8e0b3e Normalize constants in ApiController 2022-12-23 19:08:36 -08:00
6ccc8fd338 Add awakenings to blueprints 2022-12-23 16:40:42 -08:00
13dae81737 Fix bug preventing selecting Row IV, V and EXII 2022-12-23 15:49:30 -08:00
8b69a44d83 Allow unsetting of jobs
Unsetting a job also removes all of its skills
2022-12-23 15:42:46 -08:00
464fe2f1aa Update output for GridObjects when uncapping 2022-12-22 23:41:04 -08:00
a837210029 Removed current job's subskills from search 2022-12-22 23:27:46 -08:00
874c20245d Refined selecting skills based on job
* Bugfix: You can now select a third subskill on Rows 1, 2 and 3
* Edgecase: When switching from a Row 1, 2 or 3 class to Row 4, 5 or EX2, the third EMP skill set is removed
2022-12-22 23:27:24 -08:00
8c1d51fb4f Updated getting skills assignable to a job
This endpoint isn't used though
2022-12-22 23:26:23 -08:00
b7a537f540 Fix token generation on signup 2022-12-22 21:27:38 -08:00
041f8ee189 Fix errors with error handling 2022-12-22 18:12:47 -08:00
e91e1664a6 Update blueprint for availability endpoints 2022-12-22 18:12:34 -08:00
153d36be5a We need to include the User in the Party 2022-12-22 01:40:02 -08:00
a397fc722d Pass root when rendering in SearchController 2022-12-22 01:01:03 -08:00
c5391a6683 Fix bug where now wasn't replaced 2022-12-22 00:44:39 -08:00
7ddc916216 Remove rabl views
Our work here is done
2022-12-21 23:29:20 -08:00
c0be03dcb6 Finish migrating ApiController error methods 2022-12-21 23:28:54 -08:00
415ef39158 Add per_page to methods that return collections 2022-12-21 23:15:17 -08:00
5c97488a20 Update UsersController to use blueprinter 2022-12-21 23:13:19 -08:00
41c031092e Update weapon_keys_controller.rb 2022-12-21 22:10:35 -08:00
89e666219a Update SearchController for blueprinter 2022-12-21 22:10:31 -08:00
9a27ac853d Update JobsController and JobSkillsController for blueprinter 2022-12-21 21:46:35 -08:00
349c42f839 Update blueprints to remove id field or identifier
This is built into ApiBlueprint
2022-12-21 21:07:26 -08:00
3b6edfae5d Update WeaponKey output for blueprinter 2022-12-21 21:04:42 -08:00
116ec9dbbc Refactor GridObjectControllers to use blueprinter 2022-12-21 20:53:48 -08:00
2a74b8aa4d Add minimal view to Party and use in GridObject 2022-12-21 20:53:34 -08:00
a15ba3c376 Correct ConflictBlueprint
ConflictBlueprint uses `options` to display arbitrary values, but I think those are only available behind conditional statements. This adds those statements and checks if the key that will be used exists on the hash.

ConflictBlueprint was also inheriting from ApiBlueprint which requires a real object (with an ID), so instead we inherit from Blueprinter::Base
2022-12-21 20:40:27 -08:00
747ffbc4ff Update GridObject blueprints with view 2022-12-21 20:39:17 -08:00
33775539cd Add ConflictBlueprint
This should be used for character conflicts (implemented) and weapon conflicts (to-do in a future PR)
2022-12-21 19:27:55 -08:00
bf04ddcbba Fix GridObject blueprints 2022-12-21 19:27:33 -08:00
979d28be75 Update party_blueprint.rb 2022-12-21 16:20:04 -08:00
af51869927 Fix build_conditions method
The method of assigning values was assigning nil if the value wasn't present in `params`, which is bad
2022-12-21 16:20:00 -08:00
5b37e480f8 Refactor FavoritesController for blueprinter 2022-12-21 16:10:53 -08:00
f86aa30791 GranblueError should not require input param 2022-12-21 15:50:06 -08:00
44e92733d3 Refactor RaidsController for blueprinter 2022-12-21 15:35:05 -08:00
290099e2f4 Refactor PartiesController for blueprinter
* Refactored and tried to simplify methods in PartiesController
* Implemented new error render methods in ApiController
* Removed parties/[weapons, summons, characters] routes
2022-12-21 15:34:54 -08:00
e541182e36 Add all blueprints and associate with models 2022-12-21 03:31:55 -08:00
a1ff18092d Create error_blueprint.rb 2022-12-21 01:20:55 -08:00
31e62e073c Create api_blueprint.rb 2022-12-21 01:20:13 -08:00
712c866296 Remove rabl 2022-12-21 01:16:34 -08:00
c1716c1e4f Run RuboCop on everything
yolo
2022-12-21 00:22:47 -08:00
9e2f9c0af1 Fix job creation 2022-12-03 20:13:48 -08:00
a8301019f5 Fix search for base skills
Before they didn't really show up at all, then they showed up on everything, then they showed up on EX1 and EX2, now they only show up on EX2.
2022-12-03 18:34:38 -08:00
fc7cde4c5a Fix race condition for base skill mismatch check 2022-12-03 18:21:15 -08:00
a08421722f Add GranblueError and move app errors to extend it 2022-12-03 18:21:01 -08:00
6ba5335668 Fix last bugs around adding skills with 0~3 existing 2022-12-03 16:39:38 -08:00
813c2ba202 Fix bug regarding finding old_position 2022-12-03 14:51:01 -08:00
243ba2de3e Fix bug when desired position is empty 2022-12-03 14:10:18 -08:00
27d31d61c0 Fix race condition 2022-12-03 13:55:41 -08:00
ec3b42101b Move logic to JobsController
It was getting too heavy to keep in PartiesController
2022-12-03 11:45:00 -08:00
bd33ee44fc Update Job model to reference base_job 2022-12-03 11:44:09 -08:00
4ee90f6c09 Add new errors and fix handling in ApiController 2022-12-03 11:43:56 -08:00
5c9a2b8d7a Refactor job skill assignment a bit 2022-12-02 20:46:51 -08:00
f6613d6e91 Add TooManySkillsOfTypeError 2022-12-02 20:45:46 -08:00
644ffd74e5 Added logic for swapping and replacing job skills 2022-12-02 11:20:43 -08:00
d1eba7aed8 Add == and update search 2022-12-02 11:20:22 -08:00
aa5d2451a8 Add skill uniqueness validation to Party 2022-12-02 11:20:11 -08:00
741d20aa70 Send job and skills when party is updated 2022-12-01 04:47:31 -08:00
296fa0187c Save base job skills on job change 2022-12-01 04:46:53 -08:00
1ba16a2c61 Export job skills in template 2022-12-01 04:46:44 -08:00
ae36ff59b4 Properly gate group conditions
The default group ("All Skills") is technically -1, not null
2022-11-30 05:17:40 -08:00
a69fda5ead Small refactor of handling groups
Using the `filters` key so we can hook into existing search infrastructure on the frontend
2022-11-30 02:51:58 -08:00
c0bdb47d43 Add scoped search for job skills 2022-11-30 02:03:28 -08:00
353db31ef7 Move to JobSkillsController
It makes more sense to pre-fetch all job skills and filter on the client, so we're consolidating into a JobSkillsController
2022-11-27 19:27:45 -08:00
5755aab240 Disable object root 2022-11-27 18:54:32 -08:00
5fe712c31a Add route to get skills for given job 2022-11-27 14:12:52 -08:00
b9bea3ecf4 Add model 2022-11-27 14:12:33 -08:00
559507977b Added logic for conflict resolution
* Conflict is detected when attempting to save a new GridCharacter
* New `resolve` method executes the replacement
* Template to render a decision on the frontend
2022-11-19 06:03:39 -08:00
c45a54e222 Added character_id to character template 2022-11-19 06:02:33 -08:00
9967d36f89 Fix race condition 2022-11-17 02:25:22 -08:00
ba632af5e7 Add gender to user database 2022-04-10 13:25:57 -07:00
cf132e20f5 Receive and output job data in templates 2022-04-04 23:41:00 -07:00
c3566944cd Add endpoint for fetching all jobs 2022-03-22 03:41:00 -07:00
698968dbfe Create job.rb 2022-03-22 02:56:34 -07:00
483e9fe226 Update templates 2022-03-21 03:54:13 -07:00
5d45b8898e Add favorites to parties 2022-03-21 03:53:59 -07:00
a99f0c31c5 Add pagination to favorites and teams 2022-03-21 03:53:52 -07:00
6756c24896 Remove duplicate current_user method 2022-03-21 03:53:34 -07:00
1f3ba2307f Add pagination for collections 2022-03-14 19:42:29 -07:00
e6a09ab29b Make has_many readable 2022-03-14 18:21:54 -07:00
c7196f7c79 Add a permanent weapon count condition to Teams
This way, Discover Teams will only show high quality parties
2022-03-14 18:21:40 -07:00
72c144ef65 Add counter_cache flag to GridWeapon 2022-03-14 18:20:29 -07:00
0561c11ebc Update path 2022-03-11 01:12:54 -08:00
6a2f5e1a5c Updated search templates 2022-03-11 01:12:45 -08:00
0584ac84e5 Added filters to summons and characters 2022-03-11 01:12:35 -08:00
14260e4ce0 Add filtering to weapon search 2022-03-09 11:02:51 -08:00
88f316d6a7 Implement JP search and trigram for EN 2022-03-08 17:43:40 -08:00
3fc09d9f12 Add slug to output 2022-03-07 18:25:38 -08:00
62543858bd Fix a small variable bug in GridWeapons Controller 2022-03-06 03:47:28 -08:00
b62465539e All canonical objects return "ja" instead of "jp" now 2022-03-04 17:59:05 -08:00
1c08d64b55 Fix grid_weapon not being able to be created 2022-03-04 14:54:36 -08:00
49e4a02150 Add update and info method on User 2022-03-04 05:14:36 -08:00
b5ba7725d2 Add picture node to user template 2022-03-04 03:57:35 -08:00
5e2a28c340 Add new fields to json template 2022-03-04 01:33:48 -08:00
b7500617e3 Trying to fix DoubleRenderError 2022-03-03 17:10:03 -08:00
1b28de1bda Add order to WeaponKey
There is a specific order for keys in game, so we want to mirror that.
2022-03-03 01:31:04 -08:00
92ef43abcd Add a rudimentary update method
We still need to do server-side validation since a lot of things can go wrong here if users get cheeky
2022-03-03 00:22:11 -08:00
5ef04f9d13 Make GridWeapon/WeaponKey association optional
Otherwise, we can't save a record without weapon keys, which is not ideal
2022-03-03 00:17:47 -08:00
0ee5fc765c Update weapon key method to have conditions
We never want all keys, only ever a subset for the weapon we're currently working on
2022-03-02 14:39:44 -08:00
cb4ff0e1f2 Add rendering for all the new stuff 2022-03-01 23:33:53 -08:00
45c4cc5af6 Create weapon_keys_controller.rb 2022-03-01 23:33:28 -08:00
82a6b0d598 Add WeaponKey associations to GridWeapon 2022-03-01 23:33:21 -08:00
c7d53d4ffd Remove print log 2022-03-01 12:51:11 -08:00
d5ed98f0cf Implement filters on profiles 2022-03-01 02:19:44 -08:00
96adcc9540 Don't run set_from_slug before destroying parties
This caused a 500 that caused parties to be unable to deleted
2022-02-28 16:55:42 -08:00
186fde79be Enable filtering list of favorite parties 2022-02-27 22:52:25 -08:00
86640d5986 Remove log 2022-02-27 22:28:42 -08:00
07dc8dd457 Refactor how we output favorite bool on parties 2022-02-27 22:28:17 -08:00
8d9b434d1e Add attr_accessor for favorited 2022-02-27 22:27:10 -08:00
e295df0fdd Remove log and unused parameter 2022-02-27 22:12:57 -08:00
6afe242abe Return a boolean indicating favorite in party object 2022-02-27 21:14:37 -08:00
57b6f2a7b4 Add back render call 2022-02-27 20:55:55 -08:00
09ef36cfe6 Update base.json.rabl 2022-02-27 20:00:33 -08:00
7feb5157c8 Add method for displaying a user's favorites 2022-02-27 20:00:29 -08:00
a45193d1b8 Association update and favorites method on User 2022-02-27 20:00:18 -08:00
b9140430e2 Add favorites controller and templates
Allows saving and deleting favorites
2022-02-27 19:05:25 -08:00
b2adbd0400 Add favorites model 2022-02-27 19:04:51 -08:00
438fc7294d Add custom errors 2022-02-27 19:03:04 -08:00
4907f7c584 Properly implement filtering 2022-02-27 00:33:00 -08:00
0c405d7f5a Add user object to JSON templates
instead of just user id
2022-02-27 00:32:50 -08:00
af8b9d3570 Implement filterable endpoint for all parties 2022-02-26 20:57:24 -08:00
2a40abf08f Save the party's element when the mainhand is changed 2022-02-26 20:47:09 -08:00
f5a4afc01d Begrudgingly adding an element field to parties
Also added it in the JSON template
2022-02-26 20:44:16 -08:00
3f979f6d62 Add endpoint for getting all parties
No filters yet
2022-02-26 19:29:19 -08:00
47d5de057c Remove ap call 2022-02-26 18:40:32 -08:00
a04a1cb5c8 Fix bug with wrong key when creating party 2022-02-26 18:25:54 -08:00
5338e83be3 Add timestamps to party json output 2022-02-26 17:45:17 -08:00
5dd25e1953 Add element to raid json template 2022-02-26 15:59:41 -08:00
374e294a33 Change permitted param for extra toggle 2022-02-23 19:22:42 -08:00
09a009ccfb Add team details to all existing templates 2022-02-23 19:04:54 -08:00
edf489ce31 Add route to get all raids 2022-02-23 19:04:34 -08:00
ace4fb8568 Permit detail attributes and update all attributes instead of just extra 2022-02-23 18:11:19 -08:00