* Move app/helpers/granblue_wiki to lib/parsers/wiki
This clears up the namespace beginning with "Granblue"
* Removed some top-level Granblue libs
DataImporter and DownloadManager exist inside of the PostDeployment namespace now so these files are redundant
* Fix Downloaders namespace
Our namespace was singular Downloader, now it is plural Downloaders to match the folder name
* Fix import paths
* DownloadManager was moved to downloaders/
* import_data task now uses the PostDeployment version of DataImporter
* Update application.rb
Eager-Load/Autoload the lib/ folder
* Update cors.rb
Add Granblue website and Extension ID to CORS
* Add transformers
Transformers take raw data from Granblue Fantasy and transforms them into hensei-compatible JSON. Transformers heavily borrow from vazkii/hensei-transfer.
* Add ImportController and route
This adds the controller that handles creating a full party from transformed Granblue Fantasy data
* Adds more new items to the database
* Updates to older migrations
These were manually updated in the database
* Adds more new items to the database
* Fixes misclassification of Grand Weapons
* Add the final new items
* Delete 20250115-summons-003.csv
* Updates weapons with granblue_id reference to Characters
* Remove extra empty lines
* Adds Orologia summon
* Modify deployment manager
Use - to make it easier to copy paste into Github PR
* Fresh credentials.yml.enc
* Update .ruby-gemset
* Made PostDeploymentManager modular
We broke PostDeploymentManager out into several files to make it easier to maintain.
We also added a "force" mode that forces the script to consider all CSV files. This is useful for testing the post-deploy script itself. This should only be used in test mode or you will dirty your database.
We also fine tuned some of the logging to make sure that both verbose and non-verbose modes are helpful.
* 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
At the expense of making database calls, the image downloader now only attempts to download images that will exist for the specific object based on how many uncaps it has.
* 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
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`
* 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
* 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.
* 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
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.
* 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
* 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.
* 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!
* 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
* 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
* 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