{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":656371038,"defaultBranch":"master","name":"postgres-lock-explorer","ownerLogin":"alexander-jackson","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-06-20T20:18:12.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/17836947?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1687292294.916165","currentOid":""},"activityList":{"items":[{"before":"35c824ae030755c922ea98403322ac7a87448a56","after":"d779d36da22ffd5e0346d61f37b8078bab0a66ab","ref":"refs/heads/master","pushedAt":"2024-07-23T11:37:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: support multiple statements\n\nCurrently, trying to get the locks for a migration with multiple\nstatements such as the following doesn't work:\n\n```sql\n-- do something\nSELECT * FROM user;\nSELECT * FROM post;\n```\n\nThis is because prepared statements don't support having multiple\nqueries to parameterize so they just blow up instead with PostgreSQL\nreturning the following error message:\n\n```\ncannot insert multiple commands into a prepared statement\n```\n\nSince the user is already executing arbitrary SQL on the server side\n(we're already using prepared statements but without parameters) and\nwe're in a single transaction that gets rolled back at the end, we can\nswap to using `simple_query` instead. This doesn't use prepared\nstatements under the hood (all arguments need to be specified inline) so\nit doesn't suffer from the same issue.\n\nThis change:\n* Updates the server to use `simple_query` over `query`","shortMessageHtmlLink":"feat: support multiple statements"}},{"before":"204a04aa562738dc8397a8ee025e82b060de8c3c","after":"35c824ae030755c922ea98403322ac7a87448a56","ref":"refs/heads/master","pushedAt":"2024-07-15T07:51:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: support multi-argument locks\n\nWhen pasting from a pull request or migration, it's useful to do:\n\n```shell\npglx explain SHARE UPDATE EXCLUSIVE\n```\n\nHowever, this currently fails with an error message:\n\n```shell\nerror: unexpected argument 'UPDATE' found\n\nUsage: pglx explain \n\nFor more information, try '--help'.\n```\n\nThis is because we're passing 3 arguments (`SHARE`, `UPDATE` and\n`EXCLUSIVE`) instead of a singular argument (`SHARE UPDATE EXCLUSIVE`)\nwhich `clap` obviously doesn't like. Since it doesn't entirely support\nthis kind of behaviour, we can just take the \"free arguments\" and\nconcatenate them ourselves.\n\n`clap` was just using our own `from_str` method anyway, so this doesn't\nreally change the error outputs when you supply an invalid lock.\n\nThis change:\n* Swaps from `Lock` to `Vec` and parses the lock type in the\n handler instead","shortMessageHtmlLink":"feat: support multi-argument locks"}},{"before":"7cff65216321c7adccca987189644cb8ce3d236f","after":"204a04aa562738dc8397a8ee025e82b060de8c3c","ref":"refs/heads/master","pushedAt":"2024-07-15T07:44:53.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"deps: upgrade everything","shortMessageHtmlLink":"deps: upgrade everything"}},{"before":"ab3eac0718c9e607628645250a28eb53a15efce1","after":"7cff65216321c7adccca987189644cb8ce3d236f","ref":"refs/heads/master","pushedAt":"2024-03-09T18:57:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"deps: upgrade everything","shortMessageHtmlLink":"deps: upgrade everything"}},{"before":"502049b7d4afad6ce367043882bd71311c8d36db","after":"ab3eac0718c9e607628645250a28eb53a15efce1","ref":"refs/heads/master","pushedAt":"2024-01-17T15:12:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"docs: add `explain` subcommand\n\n`explain` will give you some documentation on a given lock type such as\nwhat it conflicts with, what sort of queries will acquire it and the\nqueries that will be blocked by it.\n\nThis change:\n* Adds some more subheadings to the README file\n* Adds a section on lock explanations","shortMessageHtmlLink":"docs: add explain subcommand"}},{"before":"0a085f5e978d22280f6d0d1a40da5222bddd65ab","after":"502049b7d4afad6ce367043882bd71311c8d36db","ref":"refs/heads/master","pushedAt":"2024-01-17T11:39:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"docs: add more example for various locks","shortMessageHtmlLink":"docs: add more example for various locks"}},{"before":"f4140d069035d97ee49e5d09a95d3c3401458a15","after":"0a085f5e978d22280f6d0d1a40da5222bddd65ab","ref":"refs/heads/master","pushedAt":"2024-01-17T11:32:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"chore: fix typo","shortMessageHtmlLink":"chore: fix typo"}},{"before":"8724ff9c0f5e75aef16edb30d31f3c71fe6d1fe7","after":"f4140d069035d97ee49e5d09a95d3c3401458a15","ref":"refs/heads/master","pushedAt":"2024-01-17T11:05:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"deps: upgrade everything\n\nMight as well have the latest versions of all the dependencies.\n\nThis change:\n* Manually bumps versions in `Cargo.toml`\n* Runs `cargo update`","shortMessageHtmlLink":"deps: upgrade everything"}},{"before":"ca1b5b10a46dd99050892212a784dc5709997198","after":"8724ff9c0f5e75aef16edb30d31f3c71fe6d1fe7","ref":"refs/heads/master","pushedAt":"2024-01-17T08:49:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: add better templating and more detail\n\nThe current solution to producing `explain` pages isn't great since it\nrequires manual manipulation of the `Display` implementation. Ideally\nwe'd just have a template that we render.\n\nAdditionally, we display the conflicting locks but it's useful to show\nsome sample queries for these lock types.\n\nThis change:\n* Adds `tera` and uses it to write a template for the explanations\n* Includes some sample queries that would be blocked for lock types","shortMessageHtmlLink":"feat: add better templating and more detail"}},{"before":"2493d9229545015e2204d5c7dd9d85194eb64780","after":"ca1b5b10a46dd99050892212a784dc5709997198","ref":"refs/heads/master","pushedAt":"2024-01-16T20:52:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"docs: update README file\n\nThe output of some of the commands is slightly different now, so let's\nupdate the documentation.\n\nThis change:\n* Adds the schema name to various bits of output\n* Shows that you can filter by schema","shortMessageHtmlLink":"docs: update README file"}},{"before":"bf197b72a11cde205a95317cb468b2925366fb81","after":"2493d9229545015e2204d5c7dd9d85194eb64780","ref":"refs/heads/master","pushedAt":"2024-01-16T20:50:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: remove unnecessary generics\n\nThis was useful when there were multiple endpoints and they returned\ndifferent things, but there's now one endpoint which returns a specified\ntype so the generic is not really doing anything.\n\nThis change:\n* Updates `make_request` to return a static type instead of being\n generic","shortMessageHtmlLink":"refactor: remove unnecessary generics"}},{"before":"66be82ade277efbde78e6a6e2b9076f8f88fb820","after":"bf197b72a11cde205a95317cb468b2925366fb81","ref":"refs/heads/master","pushedAt":"2024-01-16T20:49:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: make some types make more sense\n\nAll of the `run` methods can take their `Args` parameter by move instead\nof by reference, which makes a little more sense. The `query` we pass\ninto the CLI also doesn't need to be re-used so can be moved as well.\n\nThis change:\n* Tidies up the code a little","shortMessageHtmlLink":"refactor: make some types make more sense"}},{"before":"36cbc27cf8d44d6ad7e5acf3a50a161c3118b788","after":"66be82ade277efbde78e6a6e2b9076f8f88fb820","ref":"refs/heads/master","pushedAt":"2024-01-16T20:45:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: consolidate endpoints\n\nThrough adding a `schema` filter parameter to the CLI, it turns out we\nprobably don't need 2 separate endpoints on the server. Instead, we can\npass both the `relation` and `schema` alongside the query and then use a\nsingle statement on the server to filter everything down.\n\nThis change:\n* Adds the various parameters\n* Updates the server to have a single endpoint\n* Implements filtering by `schema`","shortMessageHtmlLink":"refactor: consolidate endpoints"}},{"before":"384bb381038f565a5b35ba0f73c55e9e73c5ef76","after":"36cbc27cf8d44d6ad7e5acf3a50a161c3118b788","ref":"refs/heads/master","pushedAt":"2024-01-16T20:20:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: move `Lock` somewhere common\n\n`Lock` is useful in the server as well, as we currently just read a\n`String` back from the database but really it is an enum.\n\nThis change:\n* Moves it to a new module\n* Implements `FromSql` for it\n* Uses it in the server","shortMessageHtmlLink":"refactor: move Lock somewhere common"}},{"before":"4ee70eea5251208f38b034518d7494b4c3c0bb82","after":"384bb381038f565a5b35ba0f73c55e9e73c5ef76","ref":"refs/heads/master","pushedAt":"2024-01-16T14:27:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"chore: update example for `RowExclusiveLock`","shortMessageHtmlLink":"chore: update example for RowExclusiveLock"}},{"before":"3cc93ba58e556c543652a2646f719383418a0ffe","after":"4ee70eea5251208f38b034518d7494b4c3c0bb82","ref":"refs/heads/master","pushedAt":"2024-01-16T14:22:35.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: add basic lock explanations\n\nIt would be nice to avoid looking at the Postgres documentation for\nvarious lock types, so let's begin moving some of it in here.\n\nThis change:\n* Adds a YAML file, baked into the binary, explaining each of the\n different lock types","shortMessageHtmlLink":"feat: add basic lock explanations"}},{"before":"95bb71232ebe73bbe11f6ce2706e39147ae39abc","after":"3cc93ba58e556c543652a2646f719383418a0ffe","ref":"refs/heads/master","pushedAt":"2024-01-08T15:26:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: make `host` optional\n\n`host` in regular `psql` defaults to `localhost` so there's no reason\nnot to do the same here. This makes it easier from a user perspective.\n\nThis change:\n* Updates the README file and the code","shortMessageHtmlLink":"feat: make host optional"}},{"before":"9bd8516eab9b0baa330f38b11e523cb8721d2f84","after":"95bb71232ebe73bbe11f6ce2706e39147ae39abc","ref":"refs/heads/master","pushedAt":"2024-01-08T15:19:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: add some logging\n\nThe server is suspiciously quiet at the moment so it can be quite\ndifficult to tell what it is doing or whether it is actually responding\nto requests. While logging is usually reserved for the unhappy path, it\nwould be nice to see it doing _something_.\n\nThis change:\n* Adds dependencies on `tracing` and `tracing-subscriber`\n* Adds some basic logging output to `pglx`","shortMessageHtmlLink":"feat: add some logging"}},{"before":"445af1fa6296e6b02dcbaa3ee8cc274f689cda40","after":"9bd8516eab9b0baa330f38b11e523cb8721d2f84","ref":"refs/heads/master","pushedAt":"2024-01-08T15:00:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"fix: remove short `host` argument\n\nThe `-h` clashes with the `help` command, which causes a failure in\ndebug builds.\n\nThis change:\n* Removes it","shortMessageHtmlLink":"fix: remove short host argument"}},{"before":"c0097153011e1ad3d2b82b60ce8076a8591e9d6f","after":"445af1fa6296e6b02dcbaa3ee8cc274f689cda40","ref":"refs/heads/master","pushedAt":"2024-01-08T14:34:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"docs: update README\n\nThe documentation here is out of date with what the command actually\ndoes now.\n\nThis change:\n* Updates it with the new output","shortMessageHtmlLink":"docs: update README"}},{"before":"cfecc45fd4cef6d39fcd203f61aceaa610972ae2","after":"c0097153011e1ad3d2b82b60ce8076a8591e9d6f","ref":"refs/heads/master","pushedAt":"2024-01-08T14:32:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: allow customising the server port\n\nPort `5430` may not always be free, so we should allow the user to pick\nwhich port they'd like to run the server on and for the client to\nconnect to.\n\nThis change:\n* Makes `--server-port` an argument in the server and command line","shortMessageHtmlLink":"feat: allow customising the server port"}},{"before":"26fd7769517a0f8d37a254c6d46ce221a699853c","after":"cfecc45fd4cef6d39fcd203f61aceaa610972ae2","ref":"refs/heads/master","pushedAt":"2024-01-08T14:26:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"deps: upgrade all dependencies\n\nWe're somewhat behind on our `axum` and `tokio` versions so let's get\nthose up to speed. We can also run `cargo update` to get all the minor\npatches as well.","shortMessageHtmlLink":"deps: upgrade all dependencies"}},{"before":"bf07fc09e7b742d3c843d841ca2fb6735539ecfa","after":"26fd7769517a0f8d37a254c6d46ce221a699853c","ref":"refs/heads/master","pushedAt":"2024-01-05T18:45:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"docs: update guidance for `serve`\n\nIt's not immediately obvious from the documentation that there is a\n`--password` argument, so let's show the `--help` output in the README\nfile alongside an example invocation.","shortMessageHtmlLink":"docs: update guidance for serve"}},{"before":"300015b97ddead0603f8451db4b46e8d242953f3","after":"bf07fc09e7b742d3c843d841ca2fb6735539ecfa","ref":"refs/heads/master","pushedAt":"2023-12-11T16:05:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: remove `dialoguer` usage\n\nNow that we are using `clap`, it's nicer to specify everything on the\ncommand line to allow for repeating the same command with tweaked\narguments more easily.\n\nThis change:\n* Removes the last usage of `dialoguer` and removes the dependency\n* Updates the README with the new instructions","shortMessageHtmlLink":"refactor: remove dialoguer usage"}},{"before":"8d481a224be276770e436f4119b6066fa0fe2809","after":"300015b97ddead0603f8451db4b46e8d242953f3","ref":"refs/heads/master","pushedAt":"2023-12-11T15:58:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: improve CLI experience\n\nThe CLI help currently doesn't explain the arguments provided for each\noption. We're also not taking the `query` as an argument and instead\nusing `dialoguer` for it. In the future we should probably remove the\nusage of that library and prefer everything going through `clap` for\nreproducability.\n\nThis change:\n* Adds `help` parameters to all CLI arguments\n* Updates `query` to be a CLI argument\n* Updates the documentation for the new approach","shortMessageHtmlLink":"feat: improve CLI experience"}},{"before":"2fc380c5124d488a8ff7407b3441c0056d98decb","after":"8d481a224be276770e436f4119b6066fa0fe2809","ref":"refs/heads/master","pushedAt":"2023-12-11T15:17:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"chore: fix `clippy` lints\n\nTurns out not having any CI means you miss `clippy` lints all over the\nplace.\n\nThis change:\n* Resolves all the warnings","shortMessageHtmlLink":"chore: fix clippy lints"}},{"before":"e6a832181389cecc6e5894cb0dc66d313aeb3e87","after":"2fc380c5124d488a8ff7407b3441c0056d98decb","ref":"refs/heads/master","pushedAt":"2023-12-11T15:15:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: house a single binary\n\nIt's not a great user experience to have to run `cargo run --bin ...`\nall the time and it means we're running debug binaries all over the\nplace. It also makes the examples more difficult to read and feels less\npolished.\n\nInstead, we can move all the code under a single binary (now called\n`pglx`) that has 2 subcommands:\n\n* `pglx serve` runs the server component\n* `pglx query` runs the CLI component\n\nThis allows us to provide better help messages and argument references\nas we're using `clap` over `pico-args` for a better experience.\n\nThis change:\n* Restructures all the code back into a single binary with subcommands","shortMessageHtmlLink":"refactor: house a single binary"}},{"before":"5280fc0f54f7e1b4c2206fa1b0126f5e479a5c61","after":"e6a832181389cecc6e5894cb0dc66d313aeb3e87","ref":"refs/heads/master","pushedAt":"2023-12-09T16:51:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"refactor: add better error messages\n\nAdd some more context to some of the error messages, remove a single\n`to_string` operation for better memory usage and avoid passing `Agent`\nif it's not required for ownership.","shortMessageHtmlLink":"refactor: add better error messages"}},{"before":"6f29a69066415fa31a7389f3747b56dcc260a98d","after":"5280fc0f54f7e1b4c2206fa1b0126f5e479a5c61","ref":"refs/heads/master","pushedAt":"2023-11-20T11:57:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"feat: show better error messages\n\nWhen the server returns a 500 (usually because the SQL provided is\ninvalid), neither it nor the client display any messages about what just\nhappened (the CLI just displays a generic error message). This is\nbecause `ureq` hasn't read the response body yet necessarily, so it just\nsays it got back a 500.\n\nInstead, we can format the error messages a little more nicely\nourselves.\n\nThis change:\n* Adds some handling to `make_request` to provide better error messages\n from the CLI","shortMessageHtmlLink":"feat: show better error messages"}},{"before":"2c58f8106380b54c31b0c6c52ef2ff3e0aca3680","after":"6f29a69066415fa31a7389f3747b56dcc260a98d","ref":"refs/heads/master","pushedAt":"2023-11-20T11:24:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"alexander-jackson","name":"Alexander Jackson","path":"/alexander-jackson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17836947?s=80&v=4"},"commit":{"message":"docs: add Rust installation instructions","shortMessageHtmlLink":"docs: add Rust installation instructions"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNy0yM1QxMTozNzowMS4wMDAwMDBazwAAAASGx65I","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNy0yM1QxMTozNzowMS4wMDAwMDBazwAAAASGx65I","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMS0yMFQxMToyNDoyMy4wMDAwMDBazwAAAAOzOi8n"}},"title":"Activity ยท alexander-jackson/postgres-lock-explorer"}