* search patch for accurate loader/gv filtering
* backup
* basic search test
* finished test
* incomplete commit; backing up
* Working multipat reroute backup
* working rough draft v3
* most tests passing
* works
* search v2 conversion
* added some tags.rs v2 conversions
* Worked through warnings, unwraps, prints
* refactors
* new search test
* version files changes fixes
* redesign to revs
* removed old caches
* removed games
* fmt clippy
* merge conflicts
* fmt, prepare
* moved v2 routes over to v3
* fixes; tests passing
* project type changes
* moved files over
* fmt, clippy, prepare, etc
* loaders to loader_fields, added tests
* fmt, clippy, prepare
* fixed sorting bug
* reversed back- wrong order for consistency
* fmt; clippy; prepare
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* Move to SPDX licenses
Found a way to do this without breaking API compat, so here it is, instead of waiting for v3
Resolves MOD-129
Resolves#396
* License URL updates
* what was I thinking
* Do a thing
* Add open source filter
* Remove dead imports
* Borrow
* Update 20220910132835_spdx-licenses.sql
* Add license text route
* Update migration
* Address comments
Fixes#358
Adding project_id to the facets would allow the inclusion or exclusion of individual projects from search. For example, this would allow people to be able to exclude projects which they've already followed or are not interested in. My personal vision for this is to merge the [followed projects page](https://modrinth.com/settings/follows) into search itself.
* Move validators to seperate thread, other fixes
* Update rust version in Dockerfile
* Fix notifs not working
* Fix pack validator not enforcing files
* typos :help_me:
* (part 1/?) massive cleanup to make the code more Rust-ic and cut down heap allocations.
* (part 2/?) massive cleanup to make the code more Rust-ic and cut down heap allocations.
* (part 3/?) cut down some pretty major heap allocations here - more Bytes and BytesMuts, less Vec<u8>s
also I don't really understand why you need to `to_vec` when you don't really use it again afterwards
* (part 4/?) deduplicate error handling in backblaze logic
* (part 5/?) fixes, cleanups, refactors, and reformatting
* (part 6/?) cleanups and refactors
* remove loads of `as_str` in types that already are `Display`
* Revert "remove loads of `as_str` in types that already are `Display`"
This reverts commit 4f974310cfb167ceba03001d81388db4f0fbb509.
* reformat and move routes util to the util module
* use streams
* Run prepare + formatting issues
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Initial work for modpacks and project types
* Code cleanup, fix some issues
* Username route getting, remove pointless tests
* Base validator types + fixes
* Fix strange IML generation
* Multiple hash requests for version files
* Fix docker build (hopefully)
* Legacy routes
* Finish validator architecture
* Update rust version in dockerfile
* Added caching and fixed typo (#203)
* Added caching and fixed typo
* Fixed clippy error
* Removed log for cache
* Add final validators, fix how loaders are handled and add icons to tags
* Fix search module
* Fix parts of legacy API not working
Co-authored-by: Redblueflame <contact@redblueflame.com>
* Hotfixes for indexing
* Handles missing INDEX_CACHE_PATH environment variable
* Exits on startup if environment variables are missing. The flag
--allow-missing-vars disables this, but that is generally a bad
idea, since most environment variables are required (and the ones
that aren't should be marked as such).
* Disables the query loggers
* Upgrade meilisearch-sdk to 0.4.0 for MeiliSearch 0.16 support
* Fix swap of Forge and Fabric labeling
* Improve curseforge and local indexing
This should make curseforge indexing more efficient, and reuses
some of the normal local indexing for the queued indexing of
recently created mods.
* Unify impls for single and multiple routes for mods and versions
This uses the same backend for the single and multiple query
routes so that they no longer return inconsistent information.
* Cache valid curseforge mod ids to reduce request load
This caches the ids of minecraft mods and reuses them on indexing
to reduce the amount of unused addons that are returned.
* Support for using a master key
* Expand scope of PR, add wrapper struct, add files to intitial versions/mods
* Change changelog path, run formatter
* Split file changes into different PR
* Formatting, rename main variable
Co-authored-by: Aeledfyr <aeledfyr@gmail.com>
* Change header name
* Add default bio value
* Remove default
* Make name null
* Run prepare
* Add new API Routes for requesting multiple of an item
* Run formatter
* Simplify get mods query
* Run prepare
* Refactor to use one query for most routes, change version create route to have mod_id in data
* More fixes
This also adds a commandline argument library (gumdrop) for dealing
with indices - reseting, reconfiguring, and skipping them. I don't
know which library is best for this case, but gumdrop has shorter
compile times and many fewer dependencies than clap, which is why
I chose it.
* feat(indexing): Reindex curseforge & local database at an interval
* fix(indexing): Use strings for meilisearch primary key
Fixes#17 by prefixing curseforge ids with "curse-" and local ids
with "local-".
* feat(indexing): Add newly created mods to the index more quickly
* feat(indexing): Implement faceted search, update to meilisearch master
Fixes#9, but only uses faceted search for categories. It should
be reasonably simple to add support for versions, but it may not
be as useful due to the large number of versions and the large
number of supported versions for each mod.
* feat(indexing): Allow skipping initial indexing
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* WIP Switch to Postgres
* feat(postgres): more work on porting to postgres, now compiles
* feat(docker-compose): Changed the docker-compose.yml file to use postgres.
* Update docker, documentation, gh actions...
* Remove bson dependency
* Remove bson import
* feat: move mock filehost to trait rather than cargo feature
* feat(postgres): transactions for mod creation, multipart refactor
* fix: Add Cargo.lock so that sqlx functions
* Update sqlx offline build data
* fix: Use SQLX_OFFLINE to force sqlx into offline mode for CI
* Default release channels
* feat(postgres): refactor database models to fit postgres models
* fix: Fix sqlx prepare, fix double allocation in indexing
* Add dockerfile (#40)
Co-authored-by: Charalampos Fanoulis <charalampos.fanoulis@gmail.com>
Co-authored-by: Aeledfyr <aeledfyr@gmail.com>
Co-authored-by: redblueflame <contact@redblueflame.com>
Co-authored-by: Jai A <jai.a@tuta.io>
Co-authored-by: Valentin Ricard <redblueflame1@gmail.Com>
Co-authored-by: Charalampos Fanoulis <charalampos.fanoulis@gmail.com>
* refactor: improve error handling
* fix: specify bind address instead of port
* fix: remove temporary testing file
* fix(errors): change error names to snake_case
* refactor(errors): split indexing error types, remove unused errors
* feat: add env variable checking at program start
This just checks whether the enviroment variables exist and can
parse to the given type and gives a warning if they can't. This
should prevent cases where the program fails at runtime due to
checking an environment variable that doesn't exist.