Skip to content

Releases: DeedleFake/sips

v0.3.0

27 Oct 18:37
c656160
Compare
Choose a tag to compare

This release has breaking changes. It drops support for the BoltDB-based database system in favor of Postgres and SQLite3. There is a manual migration that must be run in order to not lose data.

Replacement of BoltDB with Postgres/SQLite3

BoltDB had a lot of problems (#15, #17), along with just generally being more difficult to deal with. After some deliberation, it has been removed and support for Postgres and SQLite3 was added instead. The SQLite3 support is not enabled by default. In order to add that support, the various pieces of the project must be compiled with the sqlite3 build tag enabled. The new -dbdriver flag chooses which database driver to use, and the special list argument to that flag will print a list of available drivers in either of the command-line utilities.

With this change, a manual migration process must be run to move data from an old BoltDB database to one of the new ones. To run the migration to move to a Postgres instance, for example:

  1. Stop any existing SIPS instances.
  2. Run sipsctl migrate frombolt -db "$NEW_DATABASE_URL" -boltdb "$PATH_TO_OLD_DATABASE"

What's Changed

  • github: add action to build docker image by @DeedleFake in #14
  • switch database system over to Postgres by @DeedleFake in #18
  • docker, cmd/sips: update Go to 1.17 and standardize logging format a bit by @DeedleFake in #19
  • all: add SQLite3 support by @DeedleFake in #21
  • doc, docker: some minor changes to the README and Dockerfile by @DeedleFake in #22

Full Changelog: v0.2.0...v0.3.0

v0.2.0

22 Jun 15:34
c9eec02
Compare
Choose a tag to compare

Migrations (#13)

This version adds database migrations. They run using a very, very simple custom-built system that can only migrate upwards. Hopefully these won't be necessary very often, but they should be useful when they are, such as in the next feature.

Pin Queue (#11)

Instead of doing all pinning operations while the client is hitting the appropriate endpoint, instead pins are now handled asynchronously by a queue that runs in the background. This means, among other things, that actually doing the pinning is no longer dependent on the client staying connected. Before this, if the client disconnected while the IPFS node was still trying to pin something, the pin would just fail completely. Not great for an HTTP API. Now that's not a problem anymore.

v0.1.4

10 Jun 04:09
Compare
Choose a tag to compare
cmd/sips: let the user configure the IPFS API timeout

v0.1.3: cmd/sips, cmd/sipsctl: fix signal handling in Docker (#7)

10 Jun 03:40
783c641
Compare
Choose a tag to compare
* internal/cli: add $GOOS-specific signal lists

* cmd/sips, cmd/sipsctl: use the new signal lists from `internal/cli`

v0.1.2: all: cleanup a number of things, including error handling and documen…

10 Jun 03:14
4148bc6
Compare
Choose a tag to compare
…tation (#6)

* sips: clean up error handling a bit

* internal/log: return an error from `Errorf()`

* cmd/sips: use new error handling stuff from `internal/log` and `sips`

* all: better documentation

v0.1.1: docker: add Dockerfile (#2)

09 Jun 21:44
87f5b78
Compare
Choose a tag to compare
* docker: add Dockerfile

* doc: add setup instructions to README.md

* docker: better database location handling

* cmd/sips: log the database location

* doc: add badges to README.md

* doc: add a disclaimer to README.md

v0.1.0: cmd/sips, cmd/sipsctl: implement (#1)

09 Jun 21:36
5fd044e
Compare
Choose a tag to compare
* internal/log: add package

* cmd/sips: begin implementation

* cmd/sips: remove `Error: ` prefix

* ipfsapi: finish implementation of `Client.PinLS()`

* go.mod: add some dependencies

* cmd/sips: open database and then fail at everything

* dbutil: create package for dealing with the database

* cmd/sips: try to authenticate users when adding pins

* dbutil: check if buckets are nil when recursing through them in `FindPath()`

* cmd/sips: add `AuthError.Unwrap()`

* go.mod: update some dependencies

* dbutil: overhaul pretty much everything

* internal/log: fix a misusage of a logger

* cmd/sips: fix API breakage

* dbutil: fix a few problems and start implementing some more stuff

* all: switch from raw `bbolt` to `storm`

* cmd/sips: better logging of errors

* cmd/sips: remove `AuthError`

* cmd/sipsctl: begin implementation

* internal/cli: move `$CONFIG` expansion to its own package

* cmd/sips: use new `internal/cli` package

* dbs: increment pin IDs

* cmd/sipsctl: implement `token add`

* cmd/sipsctl: begin working on user subcommands

* dbs: fix indices for the schema

* cmd/sipsctl: implement adding and listing users

* cmd/sips: fix incorrect function call

* cmd/sipsctl: add `token list`

* cmd/sipsctl: add `pins list`

* dbs: restructure to make pins just point to users

Why didn't I just do this before, I wonder?

* cmd/sips: partial implementation of adding a pin

* cmd/sipsctl: begin implementing `pins sync`

* cmd/sipsctl: remove `pins sync`

* dbs: add types for a job queue

* cmd/sips: fix API breakage and a few vet warnings

* dbs: more changes to the schema

* cmd/sipsctl: add creation time to stuff in the database

* dbs: init `Job` bucket

* cmd/sips: begin implementing the job queue

* ipfsapi: add a few more functions

* cmd/sips: finish basic implementation of adding a pin

* dbs: remove some more job-related stuff

* cmd/sips: partially implement getting a list of pins

* sips: fix handling of empty list of CIDs when listing pins

* cmd/sips: implement pin filtering when listing pins

* cmd/sips: handle authentication a bit better

* ipfsapi: add pin removal

* cmd/sips: implement pin deletion

* internal/ipfsapi: move from `ipfsapi`

* cmd/sips: fix API breakage

* internal/ipfsapi: add ability to update pins

* cmd/sips: implement the last two `PinHandler` methods

* sips: handle more error statuses

* sips: try not returning any results array if there aren't any pins

* Revert "sips: try not returning any results array if there aren't any pins"

This reverts commit a376f1d5bfd91cdb7f16d0ff74046df6dbc8fdf3.

* sips: fix `Content-Type` in responses and refactor token handling

* internal/ipfsapi: check response status

* internal/ipfsapi: add context support

* cmd/sips: fix API breakage

* sips: don't use `http.Error()`

* internal/ipfsapi: fix double slash in URL

* internal/ipfsapi: fix double slash in API URLs

* internal/ipfsapi: fix status code check

* internal/ipfsapi: disable progress streaming

* cmd/sipsctl: add `pins rm`

* cmd/sipsctl: add `pins add`

* cmd/sipsctl: add `tokens rm`

* cmd/sipsctl: add `users rm`

* cmd/sipsctl: more usage of transactions