Commit graph

471 commits

Author SHA1 Message Date
6dcb15f10d Configure Prosopite and remove CacheFreeLogger 2025-02-07 01:35:14 -08:00
2979ffb1e5 Configure Sidekiq
Create job for cleaning up party previews
2025-02-07 01:34:55 -08:00
8da912a2e4 Update Gemfile
Production:
- `newrelic_rpm`

Development:
- `pg_query`
- `prosopite`
2025-02-07 01:34:11 -08:00
58fd5db844 Update .gitignore 2025-02-07 01:31:11 -08:00
f914c1f16e Add migrations
* Update preview state default to pending
* Adds indexes
* Adds PgHero and PgStatements
2025-02-07 01:30:08 -08:00
8409fcabcf Update gitignore
There is a mystery postgres folder and we are going to ignore it
2025-02-07 01:29:17 -08:00
11d324efe9
Fix image embeds 3 (#176)
* Add default preview images

* Update application.rb

* Adds app assets path in API mode
* Cleans up file

* Create assets.rb

An initializer for font assets (for image generation)

* Updates to Canvas and Coordinator

* Update parties_controller.rb

* Adds retry header if generation is still in progress
* Streams S3 content instead of redirecting to prevent 302

* Update coordinator.rbs

* Create previews.rake

A rake task for generating images offline

* Add commands to build phase
2025-01-20 03:55:22 -08:00
ad2e2cc028
More embed image bandaids (#175)
* Only re-index search when records are updated

* Add logs and fixes

* Add preview_s3_key to Parties

* Add some extra packages to Nixfile

* Add logging around custom font use
2025-01-18 22:32:13 -08:00
1c1ed0dd9d
Work towards fixing embed images (#174)
* Add Redis and Sidekiq

* Rename PreviewGenerationMonitor

* Update production.rb

require master key

* Initialize AWS at application start

* Add fallbacks for credentials

* Add logging

* Create railway.toml
2025-01-18 11:46:41 -08:00
e3a44ca0d5
Implement embed images (#173)
* Add mini_magick and rufus-scheduler

* Expose attributes and add sigs to AwsService

* Get Party ready for preview state

* Added new fields for preview state and generated_at timestamp
* Add preview state enum to model
* Add preview_relevant_changes? after_commit hook

* Add jobs for generating and cleaning up party previews

* Add new endpoints to PartiesController

* `preview` shows the preview and queues it up for generation if it doesn't exist yet
* `regenerate_preview` allows the party owner to force regeneration of previews

* Schedule jobs

* Stalled jobs are checked every 5 minutes
* Failed jobs are retried every hour
* Old preview jobs are cleaned up daily

* Add the preview service

This is where the bulk of the work is. This service renders out the preview images bit by bit. Currently we render the party name, creator, job icon, and weapon grid.

This includes signatures and some fonts.
2025-01-18 09:08:15 -08:00
7ac5501da5
Update README.md (#171) 2025-01-18 03:25:40 -08:00
a5ad22b9c1
Create LICENSE (#172) 2025-01-18 03:25:32 -08:00
8708343b65
Create ENDPOINTS.md (#169) 2025-01-18 03:22:55 -08:00
d8cea9fd94
Update README.md (#170) 2025-01-18 03:22:34 -08:00
7d164b540c
Adds documentation to some lib functions (#168)
* Add sigs and docs to transformers

* Add sigs and docs to downloaders

* Adds sigs and docs to importers
2025-01-18 03:09:29 -08:00
0d5d4d5f59
Jedmund/import (#167)
* 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
2025-01-17 12:02:12 -08:00
97d811cc29
Update PULL_REQUEST_TEMPLATE.md (#166)
Remove double quotes
2025-01-16 00:34:58 -08:00
6a60b605b6
Fix issue with migrations in Rails 8 (#165) 2025-01-16 00:34:13 -08:00
bde8dffaa2
Update PR templates again (#164) 2025-01-15 21:52:20 -08:00
7b74105e63
Updates to Ruby 3.3.7 (#163)
* Update .ruby-version and Gemfile

* Update .ruby-gemset

* Update Gemfile.lock
2025-01-15 21:31:49 -08:00
d75e4a8448
Downloader fixes (#162)
* Fix summon data

* Update logic for downloaders

These are responsible for downloading variants (01, 02, etc)

* Update puts statement

* Simplify ImageDownloader

* Simplify DownloadManager
2025-01-15 19:15:58 -08:00
fa386511e1
Some final post-deploy fixes (#161)
* Fix track_record error

* Add newlines

* Update PR templates
2025-01-15 18:06:20 -08:00
52f213d4cb
Update importer (#160)
* Importer now displays validation errors

This will help people debug errors before submitting their PR.

* Fix errors in the outstanding updates
2025-01-15 17:46:14 -08:00
0fd3f0f801
Importer should no longer look for recruits_id (#159) 2025-01-15 16:21:10 -08:00
aac629debc
Update recruits_id to recruits (#158) 2025-01-15 16:13:05 -08:00
b454ce2785
Update 20250113-summons-002.csv (#157) 2025-01-15 16:04:32 -08:00
a8ca474e4c
Add second batch of new items to database (#153)
* 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
2025-01-15 15:57:47 -08:00
1ffd96633b
Try to fix data migration error in post-deploy script (#156) 2025-01-15 15:35:13 -08:00
d71b78e5f8
Update post-deploy script and Rails credentials (#155)
* 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.
2025-01-15 14:56:38 -08:00
0d46cb3833
Link Character and Weapon tables with granblue_id (#154)
* Add recruits column to weapons

* Populate recruits column with granblue_ids

* Remove recruits_id and index recruits
2025-01-15 02:11:06 -08:00
386515cd18
Rename data_update_request_template.md to pull_request_template.md (#152) 2025-01-15 01:28:56 -08:00
df7454af4e
Add migration to post-deploy script (#151) 2025-01-13 06:36:01 -08:00
1d6dff18de
Add the first batch of new items (#149) 2025-01-13 06:12:56 -08:00
a03b1bfe20
Create data_update_request_template.md (#150) 2025-01-13 05:54:09 -08:00
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
6809030b5a
Fix transcendence date column type (#144) 2024-01-25 19:35:21 -08:00
67b5959afb
Updated image downloader (#143)
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.
2024-01-25 02:25:08 -08: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