Compare commits

...
295 Commits
Author SHA1 Message Date
Lewis d51bfd59da fix(tranquil-store): exclude 0 refcount blocks from has()
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-14 08:40:21 +03:00
LewisandTangled 8ccdd30cb3 fix(repo): use mst diff instead of full tree walk for obsolete blocks
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-13 17:43:07 +00:00
Lewis 7a67361993 fix(tranquil-store): checkpoint-hint race & missing dedup hints
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-13 11:10:17 +03:00
isabelandTangled cdbbaaccdf fix(nix/frontend): add nodejs 2026-04-12 23:08:39 +00:00
isabelandTangled 55d3b7f83d fix(nix/module): don't import using self 2026-04-12 22:50:00 +00:00
Gavin MoganandTangled f00b0231fb fix(Dockerfile): duplicate named stage causes failure to build 2026-04-12 18:53:21 +00:00
LewisandTangled 1dfbd27cce fix(postgres): semaphore on car endpoint & more efficient query
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-12 17:18:45 +00:00
isabelandTangled bc5e0e0446 build(frontend): use pnpm
deno is evil
2026-04-12 16:01:21 +00:00
Lewis 1c87ef5536 fix(tranquil-store): blockstore tweaks
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-12 17:35:59 +03:00
Lewis 255c7135f9 fix(auth): no bsky chat access when not specifically privileged to have it
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-12 15:56:17 +03:00
LewisandTangled 34f050a1f0 feat(oauth): discoverable passkey authentication
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-12 11:16:58 +00:00
LewisandTangled 52c22060f3 fix(tranquil-store): preserve refcount in hint relocate records
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-12 11:16:58 +00:00
Lewis c250d51978 chore(readme): another small update
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-11 17:23:43 +03:00
Lewis 378cb7a7fb chore(readme): update with contributers and new description of project
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-11 16:40:32 +03:00
Bas van den WollenbergandTangled bf20b4a78f fix: use correct postgres container path for quadlet as well 2026-04-11 07:45:23 +00:00
Lewis 05246aec58 feat(tranquil-store): gc and hardening
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:47 +03:00
Lewis 8d0e0c6810 feat(tranquil-store): whole test suite working
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:44 +03:00
Lewis 1720de8650 feat(tranquil-store): repository traits on MetastoreClient
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:43 +03:00
Lewis a5c68a3506 feat(tranquil-store): metastore
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:43 +03:00
Lewis 9ea33def13 feat(tranquil-store): eventlog
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:54:41 +03:00
Lewis a9e3ec63e1 feat(tranquil-store): blockstore
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:54:41 +03:00
HigherOrderLogicandTangled dbc3c23c95 fix(nix): allow fetch Git deps 2026-04-09 21:30:03 +00:00
nekomimi.petandTangled 531ca7c1c0 fix(lexicon): wildcard mime type handling and case insensitivity 2026-04-09 21:28:37 +00:00
nelindandTangled add1ff176b fix(auth): keep lxm optional and dont default to * when no lxm is given in getServiceAuth 2026-04-04 08:52:42 +00:00
nelind bdb200a30c fix(ci): dont run it at all for now. it doesnt work with the currently spindles 2026-04-01 23:45:03 +02:00
nelind e5faba3e73 fix(ci): define CI event run correctly so it actually runs 2026-04-01 23:38:19 +02:00
IslaandTangled 5dc810ceef Further harden systemd service 2026-03-31 22:25:11 +00:00
juneandTangled 6abc0eaca2 feat(plc): support AtprotoLabeler service 2026-03-28 20:54:43 +00:00
nelindandTangled 696940f732 fix(sync): dont keep websockets arround indefinetly if client abruptly closes connection 2026-03-25 16:47:38 +00:00
nelindandTangled f777c288da fix(pds): do service identifier resolution for proxying correctly 2026-03-23 03:00:57 +00:00
teqandTangled 9039648705 fix(nix): generate-lockfile for fix/signal-nix-build-deps 2026-03-23 03:00:23 +00:00
teqandTangled 770a16b043 fix(nix): add hashes for git deps 2026-03-23 03:00:23 +00:00
teqandTangled d37f38e496 fix(nix): add protobuf for spqr 2026-03-23 03:00:23 +00:00
Lewis 282f08f207 feat(rfc): outline tranquil-store idea for comment
Lewis: May this revision serve well! <lu5a@proton.me>
2026-03-22 18:54:51 +02:00
LewisandTangled f07bcb82f7 refactor(sync): extract MST parsing and serialization utilities 2026-03-22 12:51:44 +00:00
LewisandTangled e38343ce09 refactor(oauth): split authorize.rs into domain modules 2026-03-22 12:51:44 +00:00
LewisandTangled e454e99b8a refactor(api): migrate all endpoints to repos accessor pattern 2026-03-22 12:51:44 +00:00
LewisandTangled 19b0ea19c6 refactor(tranquil-pds): consolidate repos, rate limits, validation, and auth helpers 2026-03-22 12:51:44 +00:00
LewisandTangled 318818ad51 feat(signal): add admin UI, frontend, and build changes 2026-03-22 07:14:20 +00:00
LewisandTangled 7c55a5ceb9 feat(signal): add admin endpoints, config, and server wiring 2026-03-22 07:14:20 +00:00
LewisandTangled 9d31ee9ace refactor(comms): extract HTTP retry combinator and integrate signal sender 2026-03-22 07:14:20 +00:00
LewisandTangled e3efcb43ba test(signal): add protocol store integration tests 2026-03-22 07:14:20 +00:00
LewisandTangled eb46824220 feat(signal): add presage client, newtypes, and slot management 2026-03-22 07:14:20 +00:00
LewisandTangled e6c8a44a42 feat(signal): add postgres-backed signal protocol store 2026-03-22 07:14:19 +00:00
Lewis aac6f2818b fix(oauth): fail properly on non-expanded include scopes 2026-03-21 11:36:37 +02:00
Lewis 1a80a33e12 fix(ci): small tweaks 2026-03-21 10:06:31 +02:00
HigherOrderLogicandTangled 00d71fd3d6 feat(ci): publish image on commit 2026-03-21 02:10:23 +00:00
LewisandTangled c8bb4c9076 refactor(api): update delegation, notification prefs, email, meta, and age assurance endpoints 2026-03-20 13:39:11 +00:00
LewisandTangled d123168787 refactor(api): update password, reauth, verify, account_status, and totp endpoints 2026-03-20 13:39:11 +00:00
LewisandTangled b337d2b154 refactor(api): simplify passkey account creation and auth-adjacent server endpoints 2026-03-20 13:39:11 +00:00
LewisandTangled 1e07d674dd refactor(api): rework session login flow to use common credential verification 2026-03-20 13:39:11 +00:00
LewisandTangled a3f96b6367 refactor(api): centralize DID document building, update admin endpoints 2026-03-20 13:39:11 +00:00
LewisandTangled 7b7936d539 refactor(api): extract account provisioning helpers, simplify create_account flow 2026-03-20 13:39:11 +00:00
LewisandTangled 7e3dca4026 refactor(api): update repo batch/delete to use repo_ops, clean up remaining repo endpoints 2026-03-20 13:39:11 +00:00
LewisandTangled 7bc90d5e23 refactor(api): extract repo write lifecycle to repo_ops 2026-03-20 13:39:11 +00:00
LewisandTangled 4d86f026df refactor(api): extract common helpers module, extend API error types with auth methods 2026-03-20 13:39:11 +00:00
LewisandTangled 5c8894d531 refactor: update routes, backend verification tweaks, and restyle 2026-03-19 14:26:26 +00:00
LewisandTangled 81fc03c705 refactor(frontend): refactor migration and registration lib 2026-03-19 14:26:26 +00:00
LewisandTangled f3f55e239f refactor(frontend): refactor migration components 2026-03-19 14:26:26 +00:00
LewisandTangled cf77354cde refactor(frontend): rewrite SecurityContent 2026-03-19 14:26:26 +00:00
LewisandTangled 467be99da3 refactor(frontend): extract dashboard sections 2026-03-19 14:26:26 +00:00
LewisandTangled 20212a413f refactor(frontend): simplify API client and delete obsolete auth routes 2026-03-19 14:26:26 +00:00
LewisandTangled 6225d2bc1d refactor(frontend): delete RegisterPassword and UiTest routes 2026-03-19 14:26:26 +00:00
LewisandTangled b990c239e6 refactor(frontend): delete OAuthRegister and OAuthSsoRegister routes 2026-03-19 14:26:26 +00:00
LewisandTangled 5b503c3f7f refactor(frontend): delete utility libraries and validation 2026-03-19 14:26:26 +00:00
LewisandTangled 7f66419036 refactor(frontend): delete type system boilerplate 2026-03-19 14:26:26 +00:00
Lewis c2b8253abe fix(api): always give xrpc error messages 2026-03-18 17:53:01 +02:00
LewisandTangled ebf5af4922 fix(backups): remove useless backups concept 2026-03-18 12:17:33 +00:00
LewisandTangled 938df6495d feat(frontend): add UI component test page 2026-03-18 10:43:03 +00:00
LewisandTangled 113bea7da3 refactor(frontend): extract migration component styles + migration.css 2026-03-18 10:43:03 +00:00
LewisandTangled da8b577408 refactor(frontend): extract auth and registration page styles + pages.css 2026-03-18 10:43:03 +00:00
LewisandTangled 6683d03a9e refactor(frontend): extract oauth secondary page styles 2026-03-18 10:43:03 +00:00
LewisandTangled 72f45bf6a3 refactor(frontend): extract oauth primary flow page styles 2026-03-18 10:43:03 +00:00
LewisandTangled 14bac09cb1 refactor(frontend): extract controllers, repo styles + dashboard.css 2026-03-18 10:43:02 +00:00
LewisandTangled 76dc3b125a refactor(frontend): extract admin, settings, app passwords styles 2026-03-18 10:43:02 +00:00
LewisandTangled c7d3dfbce0 refactor(frontend): extract security, sessions, DID document styles 2026-03-18 10:43:02 +00:00
LewisandTangled 154f9fae89 refactor(frontend): extract dashboard shell and lightweight component styles 2026-03-18 10:43:02 +00:00
LewisandTangled 331d843886 refactor(frontend): consolidate base stylesheet 2026-03-18 10:43:02 +00:00
LewisandTangled 79a3db8ff2 refactor(frontend): extract UI primitive component styles 2026-03-18 10:43:02 +00:00
LewisandTangled f95a1c7cfd feat(frontend): design tokens, app wiring, locales 2026-03-18 10:43:02 +00:00
LewisandTangled 60b4697b5a chore: inline delegation audit page 2026-03-17 19:22:34 +00:00
LewisandTangled 7926c798c6 feat: cross-pds delegation 2026-03-17 19:22:34 +00:00
LewisandTangled d5ed420dd7 fix: move code to more correct crates 2026-03-17 10:16:36 +00:00
Not HerselfandTangled 92e609d367 fix: handle AT Protocol $bytes type in json_to_ipld
json_to_ipld handled $link (→ Ipld::Link) but treated $bytes objects
as regular maps, producing a CBOR map (major type 5) instead of a byte
string (major type 2). This caused downstream consumers expecting
spec-compliant CBOR — notably Jetstream's atdata.UnmarshalCBOR — to
fail with "decoding $byte value: illegal base64 data".

Decode $bytes from standard base64 (RFC 4648 §4, padding optional)
into Ipld::Bytes, matching the existing $link handling pattern.
2026-03-15 07:15:07 +00:00
Lewis 546d342136 fix(auth): use authextractor for serviceauth too now 2026-03-14 13:04:14 +02:00
Lewis c680f3c419 fix(homepage): favicon should render in title
# I am sorry I forgot this.

Now pds.ls will show beautiful icons when showing Tranquil PDSes.
2026-03-14 11:57:01 +02:00
Lewis 806cb4b8c5 chore(build): optimize container cache layers 2026-03-14 11:53:25 +02:00
LewisandTangled 458b9b7e0d refactor(pds): integrate tranquil-lexicon for record validation 2026-03-13 19:53:18 +00:00
LewisandTangled 83fda8b57a test(lexicon): test schemas and resolution integration tests 2026-03-13 19:53:18 +00:00
LewisandTangled dab347cc83 feat(lexicon): record validation engine 2026-03-13 19:53:18 +00:00
LewisandTangled 08f0e67bf7 feat(lexicon): schema reference resolution 2026-03-13 19:53:18 +00:00
LewisandTangled 421b35ff9c feat(lexicon): dynamic value types and schema registry 2026-03-13 19:53:18 +00:00
LewisandTangled 33e96665b8 feat(lexicon): add crate with schema types and format validators 2026-03-13 19:53:18 +00:00
Skyler GreyandTangled 559cbc1001 feat: allow setting up SSO with environment
This is particularly useful in nix to avoid having to put secrets in
your configuration (or use some workaround) - but is probably quite
useful in other environments too and is a nice part of allowing either
environment or toml configuration.

To do this, I've had to split up the providers so as to provide
individual environment keys - I'm sure there's some clever macro that
could do this in fewer lines and more complexity
2026-03-13 10:10:46 +00:00
LewisandTangled 18cdb612f6 fix: signal cli in containers 2026-03-10 15:26:54 +00:00
LewisandTangled 2c8568b207 fix: did:web also uses handle domains not hostname 2026-03-09 19:23:35 +00:00
lewisandTangled f78b004df3 fix: user handle domains upgrade 2026-03-08 12:25:04 +00:00
nelind e02e8c9e8c fix(config): remove unused duplicate custom handle url config key 2026-03-08 00:05:38 +01:00
lewisandTangled 5450467011 fix: container build should use all-in-one backend+frontend 2026-03-07 21:06:25 +00:00
isabelandTangled 6200697ce0 fix(nix): typo 2026-03-07 19:59:19 +00:00
nelindandTangled 4005041ee2 fix(test): update test_server_basics to reflect new health endpoint format 2026-03-07 15:20:21 +00:00
nelindandTangled 1c75668b18 feat(nix): remove mold from the dev shell and add cargo nextest 2026-03-07 15:20:21 +00:00
lewis 2c470f77a5 fix: lewis shameful mistake on prod compose vol 2026-03-07 17:19:01 +02:00
nelindandTangled 844ba0eb70 refactor(nix): update nix module to use the built-in frontend server 2026-03-06 20:21:10 +00:00
nelindandTangled 34beff2553 feat: add back built-in frontend hosting to the backend 2026-03-06 20:21:10 +00:00
lewisandTangled 898c6a2c6e fix: no 2fa needed if passkey 2026-03-06 09:32:36 +00:00
lewisandTangled dcdef508de fix: first user invite code 2026-03-04 12:27:14 +00:00
pennyandTangled 1e02c5803f feat: add version information to _health endpoint 2026-03-01 21:00:53 +00:00
nelind e2f26c259f fix(sync): dont sequence sync events on *every* repo update 2026-02-28 18:52:41 +01:00
isabelandTangled 4e277eb7b2 fix(nix): use correct openssl command 2026-02-28 11:12:10 +00:00
lewisandTangled 28ca66624a fix: ability to send more verifications 2026-02-24 10:13:11 +00:00
lewisandTangled 3913bf5c1a fix: trusted device save 2026-02-23 10:40:36 +00:00
lewisandTangled dd53262a03 fix: update docs for toml env 2026-02-23 10:36:58 +00:00
nelind 61a60a3163 fix: only include timestamp in the build version if built in debug mode so release stays reproducible 2026-02-22 00:30:43 +01:00
nelindandTangled 09f8040135 fix: minor format cleanup and description fixing in the module 2026-02-21 20:51:03 +00:00
isabelandTangled dfc1ce3ddf refactor(nix): toml conf 2026-02-21 20:51:03 +00:00
lewisandTangled 5964601a11 fix: set env vars of paths for sendmail & signal from nix pkg not manual 2026-02-21 20:51:03 +00:00
lewisandTangled 1521f98b2e feat: actual good config from Isabel 2026-02-21 20:51:03 +00:00
lewisandTangled a7840e2ac5 fix: better defaults, add in pg & nginx 2026-02-21 20:51:03 +00:00
lewisandTangled a2cea49b0f feat: nix module 2026-02-21 20:51:03 +00:00
isabelandTangled 66eb9b7dbb refactor: toml config 2026-02-21 18:00:55 +00:00
lewisandTangled cbd3b79f41 fix: service token case sensitivity regression 2026-02-15 19:54:28 +00:00
lewisandTangled a83a67d219 chore: small md file updates 2026-02-11 16:17:21 +00:00
lewisandTangled 91cfc536c6 fix: bulk type safety improvements, added a couple of tests 2026-02-10 15:25:35 +00:00
lewis 1ff22c3dee fix: removed some bs 2026-02-08 18:31:03 +02:00
lewisandTangled ea27772a47 fix: smaller docker img 2026-02-08 13:49:53 +00:00
lewisandTangled ec36b8ddc7 feat: cache locks less 2026-02-08 10:03:53 +00:00
lewisandTangled 326aadcdb6 feat: initial in-house cache distribution 2026-02-08 10:03:53 +00:00
lewisandTangled 240f24718e feat: fun handle resolution during migration 2026-02-05 20:37:08 +00:00
lewisandTangled cd7400bc8b fix: improved discord & signal comms 2026-02-05 16:13:45 +00:00
lewisandTangled b104dc938a fix: telegram comms ux improvements 2026-02-04 19:08:44 +00:00
lewisandTangled dbc81a6416 fix: concurrent perf improvement 2026-02-04 19:08:44 +00:00
lewisandTangled 442ca1434f fix: better dashboard UX 2026-02-02 19:29:03 +00:00
lewis b73c91b561 fix: account creation bug & frontend style improvements 2026-01-30 20:53:31 +01:00
lewisandTangled bee0bba6f4 fix: some small bugs 2026-01-30 12:18:19 +00:00
lewis a9a7159d00 chore: update readme 2026-01-28 21:51:31 +02:00
lewisandTangled 190f1a3430 feat: legacy 2fa impl 2026-01-28 18:40:08 +00:00
nelindandTangled afc1db95e0 feat(nix): derivation for frontend 2026-01-28 17:42:13 +00:00
nelindandTangled f6a14467d6 remove local references from .gitignore 2026-01-28 17:42:13 +00:00
nelindandTangled a1b3d8fd11 fix: nix pds build 2026-01-28 17:42:13 +00:00
lewisandTangled 2b31a288a9 fix: no preference dedup needed 2026-01-27 15:12:15 +00:00
lewisandTangled c19904f6d6 fix: make frontend more type-safe 2026-01-26 20:31:20 +00:00
lewisandTangled d7b96773fd fix: better type-safety 2026-01-26 17:15:51 +00:00
lewisandTangled 8eb4b5516f fix: match ref pds permission-levels for some endpoints 2026-01-25 13:07:32 +00:00
lewisandTangled 6c5b5996b7 fix: consolidate auth extractors & standardize usage 2026-01-25 13:07:32 +00:00
lewisandTangled 8af0cfe0af fix: oauth consolidation, include-scope improvements 2026-01-25 13:07:32 +00:00
lewisandTangled 2d10dc0983 Sharded filesystem subdirs 2026-01-21 17:53:59 +00:00
lewisandTangled 230d90262e fix: delegated acc passkey auth 2026-01-21 17:53:59 +00:00
lewisandTangled a18be8c6fd feat: filesystem blob storage 2026-01-21 17:53:59 +00:00
lewisandTangled 12a189cb2b feat: oauth prompt=create, other frontend fixes 2026-01-19 17:44:24 +00:00
lewisandTangled 158628f1a7 feat: docs tweaks & standalone frontend 2026-01-18 16:41:41 +00:00
lewis b3ec7feb96 sso signup & login 2026-01-18 01:15:13 +02:00
lewis 4e29861990 migration improvements 2026-01-15 21:17:35 +02:00
lewis 505dc169eb small bug fixes, code dedup 2026-01-15 19:10:05 +02:00
lewis e09567f5cf sqlx cache regenerated for new query locations 2026-01-14 22:23:03 +02:00
lewis 9a87de939d pds uses repository pattern, delete inline db code 2026-01-14 22:22:30 +02:00
lewis 1a916aa30e migrations for repo_rev tracking and backlinks table 2026-01-14 22:22:07 +02:00
lewis 71d9ed7d38 tranquil-db crates, repository pattern for db access 2026-01-14 22:21:38 +02:00
lewis 0bad085ead delayed loading spinner in frontend, more functional-style code 2026-01-12 08:46:52 +02:00
lewis 16fb4dbd03 oauth error msg improvement, general code quality 2026-01-11 22:33:41 +02:00
lewis d1902506a5 oauth jti fix, more code quality 2026-01-11 18:59:49 +02:00
lewis 7985f76c0d Streamplace oauth compatibility, mock plc dir in tests 2026-01-11 17:05:38 +02:00
lewis 8f595b5ffb Separate crates for separate concerns 2026-01-10 21:13:41 +02:00
lewis cae667d219 Better repo action code quality 2026-01-10 18:38:03 +02:00
lewis fbc2477771 Passkey-only accounts can opt into a password 2026-01-10 11:10:17 +02:00
lewis bbb650ffdb Update TODO, more logging during blob migration 2026-01-08 21:29:07 +02:00
lewis 648a9fe05c Remove alpine & openbsd instructions
Tested them both out and hated the experience.
Gonna double down on containers to make that the best
devex possible.
2026-01-07 19:13:55 +02:00
lewis d0aefd2a8e Better auth extractor use 2026-01-06 22:02:28 +02:00
lewis 2466a9d3f4 experiment: deconstructing include oauth 2026-01-06 20:31:42 +02:00
lewis 9b9c273b59 fix: oauth regression (at least I think it's a regression) 2026-01-06 17:28:16 +02:00
lewis 8f600b6691 DPoP in frontend, why not 2026-01-06 19:58:04 +02:00
lewis 767f89ae76 fix: Bad scope parsing 2026-01-06 23:41:20 +02:00
lewis 3d0939c038 Frontend UX improvements 2026-01-06 19:10:12 +02:00
lewis 2fd72ab150 Send user agent as tranquil 2026-01-06 23:33:13 +02:00
lewis 9a516a012d Remove old user blocks 2026-01-06 19:49:42 +02:00
lewis 7faec624d1 General linting, document react-native-streamplace-oauth-problem 2026-01-05 23:08:25 +02:00
lewis df30e0253f Typechecks and linting 2026-01-05 00:48:18 +02:00
lewis a331f5e56f More functional and typesafe frontend 2026-01-04 23:43:11 +02:00
lewis 938a9841b6 More local methods to not proxy 2026-01-04 18:38:15 +02:00
lewis 3954189c22 Functional typesafe backend 2026-01-04 15:18:26 +02:00
lewis 1724a0792f docker email fix from scan 2026-01-04 15:03:42 +02:00
nelindandTangled 5461f03de5 add xrpc fallback 2026-01-04 13:00:27 +00:00
nelindandTangled e61021feee extract proxying into a middleware instead of a fallback handler 2026-01-04 13:00:27 +00:00
nelindandTangled b4e2b5d300 clean up routing 2026-01-04 13:00:27 +00:00
nelindandTangled f789acddd1 add mold to the devshell 2026-01-04 13:00:27 +00:00
lewis 0f32cc3faa Performance improvements 2026-01-03 00:58:28 +02:00
lewis 4375d795a0 Frontend on /app path for easy custom homepage 2026-01-02 21:54:27 +02:00
lewis df2135b5e1 Backups, adversarial migrations 2026-01-02 00:24:32 +02:00
scanash00andTangled 2fb59b41ef fix hardcoded host and port 2026-01-01 23:55:57 +00:00
lewis a46d2d6f8d Age assurance override env var 2025-12-31 17:01:20 +02:00
lewis 3bf974a705 TODOfile update 2025-12-31 22:28:11 +02:00
lewis b37b379c36 OAuth inbound migration 2025-12-31 19:13:59 +02:00
lewis 4d6e21b00d pds-hosted did migrates away 2025-12-30 21:16:49 +02:00
lewis ea55590b6c Misc fixes for blobs and invites 2025-12-30 18:46:31 +02:00
lewis 7be60ea2d1 Fixed migration problem 2025-12-30 23:45:44 +02:00
lewis 76506511a1 Migration for did:webs specifically 2025-12-30 23:07:26 +02:00
lewis 70fce2f1f9 misc genesis fixes 2025-12-30 22:46:26 +02:00
lewis 452d553887 Reserved handles & misc fixes 2025-12-30 21:24:44 +02:00
lewis a839c7d7b3 Moderation conf. vs ref 2025-12-29 21:30:23 +02:00
lewis 6027e9517a Admin endoints vs ref 2025-12-29 20:58:04 +02:00
lewis 3b52a42156 Invite codes conf. vs ref 2025-12-29 20:00:58 +02:00
lewis 8cfc13fccc App password conf. vs ref 2025-12-29 19:36:01 +02:00
lewis 5aceed2ab3 Email conf. vs ref 2025-12-29 18:08:12 +02:00
lewis c302d2aea1 Account lifecycle conf. vs ref 2025-12-29 21:51:09 +02:00
lewis c58255daa1 Session conf. vs ref 2025-12-29 20:08:42 +02:00
lewis 1c35e1ce37 Repo conf. vs ref 2025-12-29 22:29:23 +02:00
lewis 98b4a33447 Identity endpoint conformance vs ref 2025-12-29 21:55:49 +02:00
lewis cd4780af41 Sync conformance fixes vs ref 2025-12-28 23:41:17 +02:00
lewis 013b80adc2 Investigation/warning about inbound migration 2025-12-28 19:28:40 +02:00
nelindandTangled 613a65b393 source .env in devshell if one is pressent 2025-12-28 13:09:01 +00:00
nelindandTangled 2e3fd6b0c1 add sqlx-cli to dev shell 2025-12-28 13:09:01 +00:00
nelindandTangled 91398090fb move PgPool creation into AppState::new 2025-12-28 13:09:01 +00:00
lewis e90308ba9e No slur handles allowed 2025-12-28 13:01:50 +02:00
lewis 8cb82abc82 Store rev properly like a good boy 2025-12-28 02:24:09 +02:00
lewis f6d7d65ef8 Three-quarter-done in-house migration flow 2025-12-27 22:52:53 +02:00
lewis 77a67f3554 Misc fixes 2025-12-26 18:10:54 +02:00
lewis ff59c29147 Delegated accounts 2025-12-26 20:15:45 +02:00
lewis 3f727b1c9d App password scopes 2025-12-25 21:17:09 +02:00
nelindandTangled a3b5f6135a add license information 2025-12-25 18:57:18 +00:00
lewis d1dcf02c00 JWT token refresh good error 2025-12-25 18:23:19 +02:00
lewis bbc9d14216 Use jacquard commit signing 2025-12-25 17:45:02 +02:00
lewis 6d840da3fa Frontend style updates 2025-12-25 19:59:32 +02:00
nelindandTangled ad4dd08c9b actually fix localhost client support 2025-12-25 21:04:32 +00:00
nelindandTangled 3af1b7ee44 add LSPs for the frontend to devshell and fix default.nix formatting 2025-12-25 21:04:32 +00:00
lewis d8451f3219 'Clever' stateless token verification. We could revert later if it sucks. 2025-12-24 23:57:49 +02:00
nelindandTangled 1280f8044d fix "localhost client" support and use in frontend when in dev mode 2025-12-24 19:07:14 +00:00
lewis 014d4b57f0 Fixed up did:web account creation 2025-12-23 20:27:17 +02:00
lewis 217a3f1197 Attempt at better byod did:web registration 2025-12-23 21:50:56 +02:00
lewis 11fc081971 Generic cosmetic per-server config 2025-12-23 20:35:17 +02:00
nelindandTangled ac792fdd75 add nix package, devshell and an .envrc 2025-12-23 21:38:19 +00:00
lewis 091d6d96a0 Fix genesis commit stuff, update deps 2025-12-23 22:37:44 +02:00
lewis cb98398494 Some actual styling 2025-12-23 03:08:03 +02:00
lewis 097ca28879 Finnish & Swedish translations 2025-12-22 21:46:33 +02:00
lewis 9037d6bfa3 Locales in frontend, why not 2025-12-22 18:02:32 +02:00
lewis d80247ba43 Security improvements 2025-12-22 21:09:09 +02:00
lewis fa6c4cc177 Passkey-only accounts 2025-12-21 23:16:39 +02:00
lewis adfa9a3812 Better handles 2025-12-21 17:53:25 +02:00
lewis 45b6b58ad6 Security key & totp support 2025-12-20 21:41:29 +02:00
lewis 3177dc42f5 did:web support, including our own internal kind 2025-12-20 17:36:33 +02:00
lewis adfde3bc1e A little more text in the README.md 2025-12-20 13:49:52 +02:00
lewis faea661917 OAuth scopes full impl. 2025-12-20 13:05:43 +02:00
lewis bfa7fb243e Outbound migration perfected 2025-12-19 19:20:46 +02:00
lewis 80a3e04ec6 Rename to tranquil PDS, sounds better than bullshit PDS 2025-12-18 23:17:51 +02:00
lewis 95958bb119 Inbound migrations work 2025-12-18 21:20:41 +02:00
lewis d695135a4d Rename notifications to comms, add handle changing to own domain ability 2025-12-18 20:35:15 +02:00
lewis 27d794d46f Fix regression with appview proxying 2025-12-18 21:30:10 +02:00
lewis e929cf5af5 Remove a bunch of unnecessary tests & endpoints 2025-12-18 22:13:25 +02:00
lewis 2cf87e2cfb Better oauth, appview groundwork 2025-12-17 23:29:48 +02:00
lewis dea6c09aa0 Add admin functionality 2025-12-16 18:28:20 +02:00
lewis e2bfcdb74f More work on the pds notifs 2025-12-16 18:00:44 +02:00
lewis c24a942a28 Cargo clippy typeshit 2025-12-16 21:23:11 +02:00
lewis 6da77b6565 Clean up installation instructions 2025-12-16 22:15:50 +02:00
lewis 524b99445d General fixes to make more things work 2025-12-15 23:41:25 +02:00
lewis 0b45807c32 Add back some whitespaces 2025-12-15 19:02:10 +02:00
lewis c6f9062979 Creating & posting records works. Also messed up newlines but will fix later. 2025-12-14 23:55:04 +02:00
lewis 86db6617af Fixing my whoopsies 2025-12-13 21:41:53 +02:00
lewis b981799357 Quick fixes and debugging 2025-12-13 19:45:27 +02:00
lewis bf0a57cd47 Some theoretical installation instructions, for me to verify 2025-12-13 17:37:49 +02:00
lewis 43c18beb51 Performance enhancements, overengineering 2025-12-13 15:10:53 +02:00
lewis 7b6807c316 First UI idea done 2025-12-12 23:52:52 +02:00
lewis 10ba422e36 auth page css update 2025-12-12 20:42:58 +02:00
lewis 36e31d7ef9 My misc TODOs 2025-12-12 20:28:34 +02:00
lewis 9b75db2ede Update TODO.md 2025-12-12 23:32:02 +02:00
lewis b66e4fe291 Remaining endpoints for MVP 2025-12-12 19:20:39 +02:00
lewis 2ededf32a6 Half-ass attempt at the local-first appview endpoints like ref impl 2025-12-12 00:28:57 +02:00
lewis e90488fbad Idk. Code quality in general? 2025-12-11 23:02:37 +02:00
lewis ea7837fcec First version of pds migration 2025-12-11 17:10:19 +02:00
lewis 2eb67eb688 Actor preferences 2025-12-11 23:23:55 +02:00
lewis 17a7f1dc2b Initial oauth impl 2025-12-11 20:05:59 +02:00
lewis 0944ecf5bf Nice things that make the repo a little more legit 2025-12-10 18:53:27 +02:00
lewis 44c3d4129e Updated TODO with more stuff, added user delete endpoint 2025-12-10 17:22:22 +02:00
Lewis f19dac454e More ref PDSes 2025-12-10 20:04:52 +02:00
Lewis cd641a8029 Other health endpoint 2025-12-10 20:42:33 +02:00
Lewis c09f0e9982 Initial firehose connections 2025-12-10 19:24:10 +02:00
lewis 8cfea3b480 Gearing up for migration endpoints 2025-12-09 23:35:06 +02:00
lewis 0c57965638 Files were getting too large, logically split them 2025-12-09 23:15:19 +02:00
Lewis 264e61eb14 More email-related endpoints 2025-12-09 22:52:22 +02:00
lewis 39096a217e Add more email-centric endpoints 2025-12-09 19:39:49 +02:00
lewis 50da4c403e Initial notification sender service 2025-12-09 18:37:10 +02:00
Lewis abe1307673 Initial account deletion request endpoint 2025-12-09 21:09:08 +02:00
Lewis 7559378fa8 Rest of lifecycle tests split out to other files 2025-12-09 19:54:05 +02:00
lewis 04a70e590c More endpoints, split out some tests to smaller files 2025-12-09 23:41:53 +02:00
Lewis 85eb0108fb Add some nice env vars 2025-12-09 23:28:32 +02:00
lewis 80cee7e6f8 More endpoints baybee 2025-12-09 21:50:07 +02:00
Lewis 48477d8ea3 SQLx query macro the remaining ones 2025-12-08 20:14:23 +02:00
lewis b19013c6ab SQLx raw text queries to yummy query macro 2025-12-08 19:44:11 +02:00
Lewis 93422875ab Come back to some functions I made as stubs earlier 2025-12-08 17:58:53 +02:00
lewis a2b2c5b4c9 More endpoints 2025-12-08 17:04:00 +02:00
lewis 7ec4861cde Add endpoints & improve tests 2025-12-08 19:20:59 +02:00
lewis 16549ddcf7 Fix MST persistence & add an appview endpoint for no reason 2025-12-07 22:04:26 +02:00
Lewis e2cc51f0b1 Format and split big files into smaller ones 2025-12-07 11:47:38 +02:00
Lewis 7b90694066 Check did:web on account create 2025-12-06 15:18:57 +02:00
Lewis 9da8823d18 Initial did:web and objsto impl 2025-12-06 12:55:28 +02:00
Lewis db272e9f4f Per-user JWT stuffs 2025-12-05 22:30:55 +02:00
Lewis 7fb8e15b96 Proxying requests 2025-12-05 00:30:32 +02:00
1119 changed files with 247861 additions and 4279 deletions
+105
View File
@@ -0,0 +1,105 @@
[store]
dir = "target/nextest"
[profile.default]
retries = 0
fail-fast = true
test-threads = "num-cpus"
slow-timeout = { period = "30s", terminate-after = 4 }
[profile.ci]
retries = 2
fail-fast = false
test-threads = "num-cpus"
slow-timeout = { period = "30s", terminate-after = 4 }
[profile.sim-pr]
retries = 0
fail-fast = true
test-threads = "num-cpus"
slow-timeout = { period = "60s", terminate-after = 4 }
[profile.sim-nightly]
retries = 0
fail-fast = false
test-threads = "num-cpus"
slow-timeout = { period = "300s", terminate-after = 2 }
[test-groups]
serial-env-tests = { max-threads = 1 }
heavy-load-tests = { max-threads = 4 }
io-heavy-sim = { max-threads = 2 }
[[profile.default.overrides]]
filter = "test(/import_with_verification/) | test(/plc_migration/)"
test-group = "serial-env-tests"
[[profile.default.overrides]]
filter = "binary(handle_domains)"
test-group = "serial-env-tests"
[[profile.default.overrides]]
filter = "binary(ripple_cluster)"
test-group = "serial-env-tests"
[[profile.default.overrides]]
filter = "package(tranquil-signal)"
test-group = "serial-env-tests"
[[profile.default.overrides]]
filter = "binary(whole_story)"
test-group = "heavy-load-tests"
[[profile.default.overrides]]
filter = "test(/two_node_stress_concurrent_load/)"
test-group = "heavy-load-tests"
[[profile.default.overrides]]
filter = "binary(repo_lifecycle)"
test-group = "heavy-load-tests"
[[profile.default.overrides]]
filter = "binary(sim_soak)"
slow-timeout = { period = "300s", terminate-after = 10 }
test-group = "io-heavy-sim"
[[profile.default.overrides]]
filter = "binary(metastore_crash) | binary(sim_cross_store) | binary(sim_gc_concurrent) | binary(sim_reachability) | binary(sim_eventlog) | test(/sim_/)"
slow-timeout = { period = "120s", terminate-after = 8 }
test-group = "io-heavy-sim"
[[profile.default.overrides]]
filter = "test(/test_scale_/) | test(/full_backup_and_restore/)"
slow-timeout = { period = "120s", terminate-after = 4 }
[[profile.default.overrides]]
filter = "binary(compaction_restart) | binary(mst_refcount_integrity) | binary(gc_compaction_restart)"
slow-timeout = { period = "120s", terminate-after = 4 }
[[profile.ci.overrides]]
filter = "test(/import_with_verification/) | test(/plc_migration/)"
test-group = "serial-env-tests"
[[profile.ci.overrides]]
filter = "binary(handle_domains)"
test-group = "serial-env-tests"
[[profile.ci.overrides]]
filter = "binary(ripple_cluster)"
test-group = "serial-env-tests"
[[profile.ci.overrides]]
filter = "package(tranquil-signal)"
test-group = "serial-env-tests"
[[profile.ci.overrides]]
filter = "binary(whole_story)"
test-group = "heavy-load-tests"
[[profile.ci.overrides]]
filter = "test(/two_node_stress_concurrent_load/)"
test-group = "heavy-load-tests"
[[profile.ci.overrides]]
filter = "binary(repo_lifecycle)"
test-group = "heavy-load-tests"
-17
View File
@@ -1,17 +0,0 @@
SERVER_HOST=127.0.0.1
SERVER_PORT=3000
DATABASE_URL=postgres://postgres:postgres@localhost:5432/pds
OBJECT_STORAGE_ENDPOINT=
OBJECT_STORAGE_REGION=us-east-1
OBJECT_STORAGE_BUCKET=pds-blobs
OBJECT_STORAGE_ACCESS_KEY=
OBJECT_STORAGE_SECRET_KEY=
# Set to 'true' for MinIO or other services that need path-style addressing
OBJECT_STORAGE_FORCE_PATH_STYLE=false
JWT_SECRET=your-super-secret-jwt-key-please-change-me
PDS_HOSTNAME=localhost:3000 # The public-facing hostname of the PDS
PLC_URL=plc.directory
+2
View File
@@ -0,0 +1,2 @@
use flake path:.;
+4 -4
View File
@@ -1,6 +1,6 @@
/target
src_old
.sqlx
.env
.direnv
result
frontend/node_modules/
frontend/dist/
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO blocks (cid, data) VALUES ($1, $2) ON CONFLICT (cid) DO NOTHING",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Bytea",
"Bytea"
]
},
"nullable": []
},
"hash": "00452ebb198c69e6b83cb5f805007eb92d87b64f1c8c28cf908f695ed82f3408"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET telegram_verified = TRUE WHERE id = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": []
},
"hash": "00e2443c853791978e20e590a54721e44bbf7df1285acc27b0b658841fb55c7e"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "\n DELETE FROM oauth_2fa_challenge WHERE request_uri = $1\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "01045b0bc6f09db8731041fdc90379bd25efbcca0363842f387ca655232f1b09"
}
@@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO account_preferences (user_id, name, value_json) VALUES ($1, $2, $3)\n ON CONFLICT (user_id, name) DO NOTHING",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Text",
"Jsonb"
]
},
"nullable": []
},
"hash": "01af5ede5b1c7d8a957f5b9f27e0bb4f58e8b0cc5d8f829b2ce35cce7ff57fb6"
}
@@ -0,0 +1,46 @@
{
"db_name": "PostgreSQL",
"query": "SELECT ic.code, ic.available_uses, ic.disabled, ic.created_by_user, ic.created_at\n FROM invite_codes ic\n ORDER BY created_at DESC\n LIMIT $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "code",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "available_uses",
"type_info": "Int4"
},
{
"ordinal": 2,
"name": "disabled",
"type_info": "Bool"
},
{
"ordinal": 3,
"name": "created_by_user",
"type_info": "Uuid"
},
{
"ordinal": 4,
"name": "created_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Int8"
]
},
"nullable": [
false,
false,
true,
false,
false
]
},
"hash": "01e56fffc3ca615c5da3cc8edd363700bd2f8c05167fa1100dd504d01f9f1d23"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE oauth_device SET trusted_until = $1 WHERE id = $2 AND trusted_until IS NOT NULL",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Timestamptz",
"Text"
]
},
"nullable": []
},
"hash": "0236504c0d6096dcdab0d5143737ef762de989fb560247e2540f611e28362507"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_kyber_pre_keys",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "0295414146e4ddacad638486443fd1036609ab8443390820be8696f708be3812"
}
@@ -0,0 +1,113 @@
{
"db_name": "PostgreSQL",
"query": "SELECT seq, did, created_at, event_type as \"event_type: RepoEventType\", commit_cid, prev_cid, prev_data_cid,\n ops, blobs, block_cids, block_data, blocks_cids, handle, active, status, rev\n FROM repo_seq\n WHERE seq > $1\n ORDER BY seq ASC\n LIMIT $2",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "seq",
"type_info": "Int8"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 3,
"name": "event_type: RepoEventType",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "commit_cid",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "prev_cid",
"type_info": "Text"
},
{
"ordinal": 6,
"name": "prev_data_cid",
"type_info": "Text"
},
{
"ordinal": 7,
"name": "ops",
"type_info": "Jsonb"
},
{
"ordinal": 8,
"name": "blobs",
"type_info": "TextArray"
},
{
"ordinal": 9,
"name": "block_cids",
"type_info": "ByteaArray"
},
{
"ordinal": 10,
"name": "block_data",
"type_info": "ByteaArray"
},
{
"ordinal": 11,
"name": "blocks_cids",
"type_info": "TextArray"
},
{
"ordinal": 12,
"name": "handle",
"type_info": "Text"
},
{
"ordinal": 13,
"name": "active",
"type_info": "Bool"
},
{
"ordinal": 14,
"name": "status",
"type_info": "Text"
},
{
"ordinal": 15,
"name": "rev",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Int8",
"Int8"
]
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "0349b2af4d21105029ecc2bf81ad7be9987ec17ac088730596849d7a45558e57"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET\n signal_username = $1,\n signal_verified = CASE WHEN LOWER(signal_username) = LOWER($1) THEN signal_verified ELSE FALSE END,\n updated_at = NOW()\n WHERE id = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Uuid"
]
},
"nullable": []
},
"hash": "0350df76ef1a934f5262ae05856a921017a2dc02fe73513dc1243e219ebc3b76"
}
@@ -0,0 +1,27 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET preferred_comms_channel = $1, updated_at = NOW() WHERE did = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
{
"Custom": {
"name": "comms_channel",
"kind": {
"Enum": [
"email",
"discord",
"telegram",
"signal"
]
}
}
},
"Text"
]
},
"nullable": []
},
"hash": "03fc2ba947ee547e000b044fafb486e71b9b65a7dd923b5354c5a4dde98332eb"
}
@@ -0,0 +1,28 @@
{
"db_name": "PostgreSQL",
"query": "SELECT did, password_hash FROM users WHERE handle = $1 OR did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "password_hash",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
true
]
},
"hash": "053c971024b0d29a441c3597d760b3e21db2383442c3e6f09de4eb49ea437e7c"
}
@@ -0,0 +1,76 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id, did, credential_id, public_key, sign_count, created_at, last_used,\n friendly_name, aaguid, transports\n FROM passkeys WHERE did = $1 ORDER BY created_at DESC",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "credential_id",
"type_info": "Bytea"
},
{
"ordinal": 3,
"name": "public_key",
"type_info": "Bytea"
},
{
"ordinal": 4,
"name": "sign_count",
"type_info": "Int4"
},
{
"ordinal": 5,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 6,
"name": "last_used",
"type_info": "Timestamptz"
},
{
"ordinal": 7,
"name": "friendly_name",
"type_info": "Text"
},
{
"ordinal": 8,
"name": "aaguid",
"type_info": "Bytea"
},
{
"ordinal": 9,
"name": "transports",
"type_info": "TextArray"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false,
false,
false,
false,
true,
true,
true,
true
]
},
"hash": "055263cf26afc6d74411dc380ccefb25b70cf5b06b71257890f82d2d45a104ee"
}
@@ -0,0 +1,61 @@
{
"db_name": "PostgreSQL",
"query": "SELECT did, handle, email, created_at, email_verified, deactivated_at, invites_disabled\n FROM users\n WHERE ($1::text IS NULL OR did > $1)\n AND ($2::text IS NULL OR email ILIKE $2)\n AND ($3::text IS NULL OR handle ILIKE $3)\n ORDER BY did ASC\n LIMIT $4",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "handle",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 4,
"name": "email_verified",
"type_info": "Bool"
},
{
"ordinal": 5,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 6,
"name": "invites_disabled",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Int8"
]
},
"nullable": [
false,
false,
true,
false,
false,
true,
true
]
},
"hash": "0559f53385a1549551c920fa19dcf55d5f0f880cd040f2b6ccfe3cfed89daacb"
}
@@ -0,0 +1,30 @@
{
"db_name": "PostgreSQL",
"query": "SELECT rkey, record_cid FROM records\n WHERE repo_id = $1 AND collection = $2\n ORDER BY rkey ASC LIMIT $3",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "rkey",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "record_cid",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid",
"Text",
"Int8"
]
},
"nullable": [
false,
false
]
},
"hash": "05cee7c1d1d95126895a8fa6d603d323c50214a827c37786dfc533e5d3e2f4ae"
}
@@ -0,0 +1,122 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, did, email, password_hash, password_required, two_factor_enabled,\n preferred_comms_channel as \"preferred_comms_channel!: CommsChannel\",\n deactivated_at, takedown_ref,\n email_verified, discord_verified, telegram_verified, signal_verified,\n account_type as \"account_type!: AccountType\"\n FROM users\n WHERE handle = $1 OR did = $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "password_hash",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "password_required",
"type_info": "Bool"
},
{
"ordinal": 5,
"name": "two_factor_enabled",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "preferred_comms_channel!: CommsChannel",
"type_info": {
"Custom": {
"name": "comms_channel",
"kind": {
"Enum": [
"email",
"discord",
"telegram",
"signal"
]
}
}
}
},
{
"ordinal": 7,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 8,
"name": "takedown_ref",
"type_info": "Text"
},
{
"ordinal": 9,
"name": "email_verified",
"type_info": "Bool"
},
{
"ordinal": 10,
"name": "discord_verified",
"type_info": "Bool"
},
{
"ordinal": 11,
"name": "telegram_verified",
"type_info": "Bool"
},
{
"ordinal": 12,
"name": "signal_verified",
"type_info": "Bool"
},
{
"ordinal": 13,
"name": "account_type!: AccountType",
"type_info": {
"Custom": {
"name": "account_type",
"kind": {
"Enum": [
"personal",
"delegated"
]
}
}
}
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
true,
true,
false,
false,
false,
true,
true,
false,
false,
false,
false,
false
]
},
"hash": "060c285c93a05252aab7d474df0186e7b5083fafedc582b8eac9916983e8fc2d"
}
@@ -0,0 +1,17 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO account_delegations (delegated_did, controller_did, granted_scopes, granted_by)\n VALUES ($1, $2, $3, $4)",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Text"
]
},
"nullable": []
},
"hash": "06e01e990db7c698041a3ee49399c8960e80ca2a1a14de136c57ac062e62b962"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE oauth_device SET trusted_at = NULL, trusted_until = NULL WHERE id = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "0819ec49e0f3b97eb7eff0a1ef0bbc6683442938b657e82da283bc07ceec4c80"
}
@@ -0,0 +1,20 @@
{
"db_name": "PostgreSQL",
"query": "SELECT COALESCE(SUM(size_bytes), 0)::BIGINT as \"total!\" FROM blobs",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "total!",
"type_info": "Int8"
}
],
"parameters": {
"Left": []
},
"nullable": [
null
]
},
"hash": "0890b2c7c921005f58ed0e57b6e062b2085ce804a4cccb27b4ae2ba6711f24c4"
}
@@ -0,0 +1,34 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id, password_hash, handle FROM users WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "password_hash",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "handle",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
true,
false
]
},
"hash": "08c08b0644d79d5de72f3500dd7dbb8827af340e3c04fec9a5c28aeff46e0c97"
}
@@ -0,0 +1,17 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO records (repo_id, collection, rkey, record_cid)\n VALUES ($1, $2, $3, $4)\n ON CONFLICT (repo_id, collection, rkey) DO UPDATE SET record_cid = $4\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Text",
"Text",
"Text"
]
},
"nullable": []
},
"hash": "09257ba4ee5b626292699b761acd02c8c1a9637b39b52930beae18c28049ae4a"
}
@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "SELECT state_json FROM webauthn_challenges\n WHERE did = $1 AND challenge_type = $2 AND expires_at > NOW()\n ORDER BY created_at DESC LIMIT 1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "state_json",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": [
false
]
},
"hash": "0a0fc458b8952955bf133ffcc6d7867102f7df2bc8ed56c261c1a0eef404901a"
}
@@ -0,0 +1,18 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO signal_sender_keys\n (address, device_id, identity, distribution_id, record)\n VALUES ($1, $2, $3, $4, $5)\n ON CONFLICT (address, device_id, identity, distribution_id) DO UPDATE SET record = $5",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Int4",
"Text",
"Uuid",
"Bytea"
]
},
"nullable": []
},
"hash": "0a3eaf432e99ef22aa6b3b43978740b085f6416a058ea2da6d639ea1cf276eda"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM backlinks WHERE uri = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "0a5b26cc18e08a6dd4d5b1df729087d132d16a3f4e199ea71f5a00d2ac1a6364"
}
@@ -0,0 +1,28 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT DISTINCT u.id as user_id, u.did\n FROM users u\n JOIN records r ON r.repo_id = u.id\n WHERE NOT EXISTS (SELECT 1 FROM record_blobs rb WHERE rb.repo_id = u.id)\n LIMIT $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "user_id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Int8"
]
},
"nullable": [
false,
false
]
},
"hash": "0b512f2a736e63ac92e4c83b261ede3597538b8536975893f7d7823f145c0a4c"
}
@@ -0,0 +1,52 @@
{
"db_name": "PostgreSQL",
"query": "SELECT\n ic.code,\n ic.available_uses,\n ic.created_at,\n ic.disabled,\n ic.for_account,\n (SELECT COUNT(*) FROM invite_code_uses icu WHERE icu.code = ic.code)::int as \"use_count!\"\n FROM invite_codes ic\n WHERE ic.for_account = $1\n ORDER BY ic.created_at DESC",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "code",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "available_uses",
"type_info": "Int4"
},
{
"ordinal": 2,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 3,
"name": "disabled",
"type_info": "Bool"
},
{
"ordinal": 4,
"name": "for_account",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "use_count!",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false,
true,
false,
null
]
},
"hash": "0d6fc740f9e18aa4310309c27676899a3651a4e6b95a424bf522eb72b4a0b7ba"
}
@@ -0,0 +1,94 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, did, access_jti, refresh_jti, access_expires_at, refresh_expires_at,\n legacy_login, mfa_verified, scope, controller_did, app_password_name,\n created_at, updated_at\n FROM session_tokens\n WHERE access_jti = $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "access_jti",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "refresh_jti",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "access_expires_at",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "refresh_expires_at",
"type_info": "Timestamptz"
},
{
"ordinal": 6,
"name": "legacy_login",
"type_info": "Bool"
},
{
"ordinal": 7,
"name": "mfa_verified",
"type_info": "Bool"
},
{
"ordinal": 8,
"name": "scope",
"type_info": "Text"
},
{
"ordinal": 9,
"name": "controller_did",
"type_info": "Text"
},
{
"ordinal": 10,
"name": "app_password_name",
"type_info": "Text"
},
{
"ordinal": 11,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 12,
"name": "updated_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
false,
false
]
},
"hash": "0d9ed8e58da07670b6b9bb106d0efbe0a4a6a221a19e8647f49ef5d5bde972d8"
}
@@ -0,0 +1,24 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET discord_id = $2, discord_verified = TRUE, updated_at = NOW() WHERE LOWER(discord_username) = LOWER($1) AND discord_username IS NOT NULL AND handle = $3 RETURNING id",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
}
],
"parameters": {
"Left": [
"Text",
"Text",
"Text"
]
},
"nullable": [
false
]
},
"hash": "0f80177bbdffb0186895e7f000462ecd3b34e50c3604d7b48664a9f85058eb70"
}
@@ -0,0 +1,28 @@
{
"db_name": "PostgreSQL",
"query": "SELECT name, value_json FROM account_preferences WHERE user_id = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "value_json",
"type_info": "Jsonb"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
false,
false
]
},
"hash": "12351a50c151a1a4b0b74dcd2604427aed5e8e3ccc067f253c9e342a9b505941"
}
@@ -0,0 +1,61 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO oauth_2fa_challenge (did, request_uri, code, expires_at)\n VALUES ($1, $2, $3, $4)\n RETURNING id, did, request_uri, code, attempts, created_at, expires_at\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "request_uri",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "code",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "attempts",
"type_info": "Int4"
},
{
"ordinal": 5,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 6,
"name": "expires_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Timestamptz"
]
},
"nullable": [
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "1246cb951783bc8005b21fd505c67c89eca657a07f6c481f6f9d6aed18f42891"
}
@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "SELECT 1 as \"one!\" FROM oauth_device od\n JOIN oauth_account_device oad ON od.id = oad.device_id\n WHERE oad.did = $1 AND od.id = $2",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "one!",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": [
null
]
},
"hash": "12651543314fd16261bbe150ff60b2e98db6fa772e71e94a9150b375e474aaf4"
}
@@ -0,0 +1,19 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO passkeys (id, did, credential_id, public_key, sign_count, friendly_name, aaguid)\n VALUES ($1, $2, $3, $4, 0, $5, $6)",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Text",
"Bytea",
"Bytea",
"Text",
"Bytea"
]
},
"nullable": []
},
"hash": "12e9311f7e28117f2ec17cc7b92aa792413460617b68e3546c4a70fb42b49a8a"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT r.repo_root_cid FROM repos r JOIN users u ON r.user_id = u.id WHERE u.did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "repo_root_cid",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "1407d741caf7e074347e6cfdff07b3f72f02571976d875d5c75542c69f0fcdfe"
}
@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET allow_legacy_login = $1 WHERE did = $2 RETURNING did",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "did",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Bool",
"Text"
]
},
"nullable": [
false
]
},
"hash": "14693ba213bd4faff6aca2584a250a5bc1908b447b0dbba2b18de09a4e0c0e09"
}
@@ -0,0 +1,31 @@
{
"db_name": "PostgreSQL",
"query": "SELECT rkey, record_cid FROM records\n WHERE repo_id = $1 AND collection = $2 AND rkey <= $3\n ORDER BY rkey ASC LIMIT $4",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "rkey",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "record_cid",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid",
"Text",
"Text",
"Int8"
]
},
"nullable": [
false,
false
]
},
"hash": "14dd868ab2818f007ef596f956f3ae292d963fe3f1dd1656e689dedde51f1f14"
}
@@ -0,0 +1,52 @@
{
"db_name": "PostgreSQL",
"query": "SELECT od.id, od.user_agent, od.friendly_name, od.trusted_at, od.trusted_until, od.last_seen_at\n FROM oauth_device od\n JOIN oauth_account_device oad ON od.id = oad.device_id\n WHERE oad.did = $1 AND od.trusted_until IS NOT NULL AND od.trusted_until > NOW()\n ORDER BY od.last_seen_at DESC",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "user_agent",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "friendly_name",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "trusted_at",
"type_info": "Timestamptz"
},
{
"ordinal": 4,
"name": "trusted_until",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "last_seen_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
true,
true,
true,
true,
false
]
},
"hash": "1585bb52c48268a7a5bf8ef4a63afad23d2def70d2c877e8f423be116c31932e"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id FROM users WHERE LOWER(discord_username) = LOWER($1) AND discord_username IS NOT NULL AND deactivated_at IS NULL FOR UPDATE NOWAIT",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "15e75af384c9d948b655a4ec2442e345ee8d30ab4b4aa71656d0e47d0dc36693"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_kv",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "166ee5a554e3ddc75496616d9fba75a15cc0c072f493f579b881a4f2300f38c8"
}
@@ -0,0 +1,64 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, user_id, name, password_hash, created_at, privileged, scopes, created_by_controller_did\n FROM app_passwords\n WHERE user_id = $1\n ORDER BY created_at DESC\n LIMIT 20\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "user_id",
"type_info": "Uuid"
},
{
"ordinal": 2,
"name": "name",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "password_hash",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "privileged",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "scopes",
"type_info": "Text"
},
{
"ordinal": 7,
"name": "created_by_controller_did",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
false,
false,
false,
false,
false,
false,
true,
true
]
},
"hash": "177d1b15ff66b08e5ffb0d06e1348234db5b98fd644db7172c472bc9470053c5"
}
@@ -0,0 +1,58 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id, handle, email, email_verified, discord_verified, telegram_verified, signal_verified\n FROM users WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "handle",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "email_verified",
"type_info": "Bool"
},
{
"ordinal": 4,
"name": "discord_verified",
"type_info": "Bool"
},
{
"ordinal": 5,
"name": "telegram_verified",
"type_info": "Bool"
},
{
"ordinal": 6,
"name": "signal_verified",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
true,
false,
false,
false,
false
]
},
"hash": "1787139bffdfd15c1fc1f94cacfc914a2077c29a7b27c327eaa7aea8a0ba6b0f"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM session_tokens WHERE did = $1 AND access_jti != $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": []
},
"hash": "19f43fbf60b2eb137c0f90942c06d5d909958b0ee6da1ecdad9d8977fad1cf26"
}
@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "SELECT record FROM signal_signed_pre_keys WHERE id = $1 AND identity = $2",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "record",
"type_info": "Bytea"
}
],
"parameters": {
"Left": [
"Int4",
"Text"
]
},
"nullable": [
false
]
},
"hash": "1a061c261518573c29aa55c5d8e2181f1728034e723ed0bc836e928b4c69128f"
}
@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "SELECT record FROM signal_kyber_pre_keys WHERE id = $1 AND identity = $2",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "record",
"type_info": "Bytea"
}
],
"parameters": {
"Left": [
"Int4",
"Text"
]
},
"nullable": [
false
]
},
"hash": "1aac5ab7dbc29f0d0937767ae174e8b47d236b3cdc973974cec413dc65198d64"
}
@@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "\n UPDATE external_identities\n SET provider_username = COALESCE($2, provider_username),\n provider_email = COALESCE($3, provider_email),\n last_login_at = NOW(),\n updated_at = NOW()\n WHERE id = $1\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Text",
"Text"
]
},
"nullable": []
},
"hash": "1abfd9ff7ae1de0ca048b6a67a60a7ba5cfca75af5cc4e7280fea230cf46af7e"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET signal_verified = TRUE WHERE id = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": []
},
"hash": "1baf4c087c31d0e2af8f607fb3476db6b34925a0c8902fdd9c9a5a607f19b3af"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT handle FROM users WHERE LOWER(email) = LOWER($1) AND deactivated_at IS NULL ORDER BY created_at DESC",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "handle",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "1bed07000aff39b721c84bfa415f1891605f6561953374e6cae6af66dcecca66"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT access_jti FROM session_tokens WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "access_jti",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "1c831cb6f3b8d01b18feec900148278c2b491418b622da9e75fe1792089e4409"
}
@@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO signal_kyber_pre_keys (id, identity, record, is_last_resort)\n VALUES ($1, $2, $3, FALSE)\n ON CONFLICT (id, identity) DO UPDATE SET record = $3, is_last_resort = FALSE",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Int4",
"Text",
"Bytea"
]
},
"nullable": []
},
"hash": "1d4459863eeddea9ccb5ce5c0eaffd39d56a763728ce5b1f76871265e704e241"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET password_reset_code = NULL, password_reset_code_expires_at = NULL WHERE id = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": []
},
"hash": "1dfc53ab016cfc704e94aa2cfd9fec2d1f3591bb0e141231506dc76f9da30c4a"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "\n DELETE FROM oauth_authorization_request\n WHERE expires_at < NOW()\n ",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "1e24acf94eb27bbdabc425e14f0da62557d54cc3fa8f73c7151227d16bcadc35"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET is_admin = $1 WHERE did = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Bool",
"Text"
]
},
"nullable": []
},
"hash": "1e63d287c619a14e5c07d80e8e54193d2964c8b5e6a855256cb80c4d0cd2c6ea"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT repo_root_cid FROM repos WHERE user_id = $1 FOR UPDATE NOWAIT",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "repo_root_cid",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
false
]
},
"hash": "1ed53dde97706d6da36a49d2a8d39f14da4a8dbfe54c9f1ee70c970adde80be8"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE invite_codes SET available_uses = available_uses - 1 WHERE code = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "1ee6eda3e44660e7f14fcfe56adc2d41c72901b9c701fc7b992314e5370b32dc"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_sessions WHERE address = $1 AND identity = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": []
},
"hash": "1f464d947e93274cbc974f8a6f31d8a47eb676df857fa83f08ed1937cf8a6d9d"
}
@@ -0,0 +1,28 @@
{
"db_name": "PostgreSQL",
"query": "SELECT available_uses, COALESCE(disabled, false) as \"disabled!\" FROM invite_codes WHERE code = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "available_uses",
"type_info": "Int4"
},
{
"ordinal": 1,
"name": "disabled!",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
null
]
},
"hash": "200ecf153f1433ae8f6fbe81ab888a04ddd035ec9e88ef5f207e2487a02a1224"
}
@@ -0,0 +1,47 @@
{
"db_name": "PostgreSQL",
"query": "SELECT u.did, u.deactivated_at, u.takedown_ref, r.repo_root_cid, r.repo_rev\n FROM repos r\n JOIN users u ON r.user_id = u.id\n WHERE u.did > $1\n ORDER BY u.did ASC\n LIMIT $2",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 2,
"name": "takedown_ref",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "repo_root_cid",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "repo_rev",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text",
"Int8"
]
},
"nullable": [
false,
true,
true,
false,
true
]
},
"hash": "21972fb9b0f6048feb7659779fd1a42b477e79a01890bc11ea5357b474123ea3"
}
@@ -0,0 +1,52 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT st.id, st.did, st.scope, st.controller_did, k.key_bytes, k.encryption_version\n FROM session_tokens st\n JOIN users u ON st.did = u.did\n JOIN user_keys k ON u.id = k.user_id\n WHERE st.refresh_jti = $1 AND st.refresh_expires_at > NOW()\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "scope",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "controller_did",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "key_bytes",
"type_info": "Bytea"
},
{
"ordinal": 5,
"name": "encryption_version",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
true,
true,
false,
true
]
},
"hash": "219f1c038a89e98c557967241c773ffeeff55c4676d1716aa71fc188b9d76e75"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO invite_code_uses (code, used_by_user) VALUES ($1, $2)",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Uuid"
]
},
"nullable": []
},
"hash": "222699c46b99152404863463b8bdffb9452112e3d50ec352c96c1398d3e21504"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_base_keys_seen",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "222836500a964ee6fd238ddb128691215cd15d2ede9a1a19e7a580e4d6644ce8"
}
@@ -0,0 +1,34 @@
{
"db_name": "PostgreSQL",
"query": "SELECT deactivated_at, takedown_ref, is_admin FROM users WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 1,
"name": "takedown_ref",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "is_admin",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
true,
true,
false
]
},
"hash": "225c3844ce6962121e5cc0aa544c79d0f93bb3458487d79b64bd40ae9accd522"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET deactivated_at = NULL WHERE did = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "23201d4e26bc650939e30f69fb0bca00d351d057098afebc1017f70a84b4bd22"
}
@@ -0,0 +1,28 @@
{
"db_name": "PostgreSQL",
"query": "SELECT t.token, t.expires_at\n FROM plc_operation_tokens t\n JOIN users u ON t.user_id = u.id\n WHERE u.did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "token",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "expires_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false
]
},
"hash": "237c2d912e89b7e0e5baa83503a22f158ea1614b5157f6c9e2aba6017fef6b26"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET password_hash = $1 WHERE id = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Uuid"
]
},
"nullable": []
},
"hash": "24ea33795a75c8cf5a55ee719369e1860de7e7e46cddfd4dcb02a4452c9856bf"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_identities",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "252d42bb50ef918fe414d036979daba055dbadd3cd7e1bdcce4526867be79930"
}
@@ -0,0 +1,98 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT\n created_at,\n channel as \"channel: CommsChannel\",\n comms_type as \"comms_type: CommsType\",\n status as \"status: CommsStatus\",\n subject,\n body\n FROM comms_queue\n WHERE user_id = $1\n ORDER BY created_at DESC\n LIMIT $2\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 1,
"name": "channel: CommsChannel",
"type_info": {
"Custom": {
"name": "comms_channel",
"kind": {
"Enum": [
"email",
"discord",
"telegram",
"signal"
]
}
}
}
},
{
"ordinal": 2,
"name": "comms_type: CommsType",
"type_info": {
"Custom": {
"name": "comms_type",
"kind": {
"Enum": [
"welcome",
"email_verification",
"password_reset",
"email_update",
"account_deletion",
"admin_email",
"plc_operation",
"two_factor_code",
"channel_verification",
"passkey_recovery",
"legacy_login_alert",
"migration_verification",
"channel_verified"
]
}
}
}
},
{
"ordinal": 3,
"name": "status: CommsStatus",
"type_info": {
"Custom": {
"name": "comms_status",
"kind": {
"Enum": [
"pending",
"processing",
"sent",
"failed"
]
}
}
}
},
{
"ordinal": 4,
"name": "subject",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "body",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid",
"Int8"
]
},
"nullable": [
false,
false,
false,
false,
true,
false
]
},
"hash": "25309f4a08845a49557d694ad9b5b9a137be4dcce28e9293551c8c3fd40fdd86"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO signal_kv (key, value) VALUES ($1, $2)\n ON CONFLICT (key) DO UPDATE SET value = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Bytea"
]
},
"nullable": []
},
"hash": "29c834b7870cdbcdcc2d2c9259a04326e20433237ebe25e33dbd39952ae9f976"
}
@@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO oauth_authorized_client (did, client_id, created_at, updated_at, data)\n VALUES ($1, $2, NOW(), NOW(), $3)\n ON CONFLICT (did, client_id) DO UPDATE SET updated_at = NOW(), data = $3\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text",
"Jsonb"
]
},
"nullable": []
},
"hash": "29cf13b43caae6bfb56b6cc678c7aca8dfec35ca27a3c7097c1c9fe80771bcb4"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET password_reset_code_expires_at = NOW() - INTERVAL '1 hour' WHERE email = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "29ef76852bb89af1ab9e679ceaa4abcf8bc8268a348d3be0da9840d1708d20b5"
}
@@ -0,0 +1,70 @@
{
"db_name": "PostgreSQL",
"query": "SELECT u.id, u.did, u.handle, u.email, u.deactivated_at, u.takedown_ref, u.is_admin,\n k.key_bytes, k.encryption_version\n FROM users u\n JOIN user_keys k ON u.id = k.user_id\n WHERE u.did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "handle",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "email",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "takedown_ref",
"type_info": "Text"
},
{
"ordinal": 6,
"name": "is_admin",
"type_info": "Bool"
},
{
"ordinal": 7,
"name": "key_bytes",
"type_info": "Bytea"
},
{
"ordinal": 8,
"name": "encryption_version",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false,
true,
true,
true,
false,
false,
true
]
},
"hash": "2b33d7354f45fcda94edcc20f55c84f630c8c7b9675a9094ba457d38f02deb33"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT COUNT(*) as \"count!\" FROM blobs WHERE created_by_user = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "count!",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
null
]
},
"hash": "2b9192882885678def6fc88507f2de92abd534716a188d4c3b96355960019498"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "\n DELETE FROM oauth_2fa_challenge WHERE expires_at < NOW()\n ",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "2e9f16d7593dcec1aa80d744b87ef14f01e481b7ff40c1073ec2d720aac3e840"
}
@@ -0,0 +1,34 @@
{
"db_name": "PostgreSQL",
"query": "SELECT secret_encrypted, encryption_version, verified FROM user_totp WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "secret_encrypted",
"type_info": "Bytea"
},
{
"ordinal": 1,
"name": "encryption_version",
"type_info": "Int4"
},
{
"ordinal": 2,
"name": "verified",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false
]
},
"hash": "2f675bf96916c9546b9dce1d0da71ba59256722b9750ec1da4747f3d82a2a00d"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM webauthn_challenges WHERE did = $1 AND challenge_type = 'discoverable'",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "3155ef4f35698a3fe6aa38d5d976fd51b7f6a0381c81c4907dad61d2f37992bd"
}
@@ -0,0 +1,17 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO signal_base_keys_seen\n (kyber_pre_key_id, signed_pre_key_id, identity, base_key)\n VALUES ($1, $2, $3, $4)",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Int4",
"Int4",
"Text",
"Bytea"
]
},
"nullable": []
},
"hash": "31edfe22cdd8e5f62322dad01a65165ec9546eaa92c9e372a5a4fce99d938d22"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM session_tokens WHERE did = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "31fef6c193390b791edd988e40963706d4cc731cea6e19538794eb1588aa8b09"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT last_reauth_at FROM session_tokens\n WHERE did = $1 ORDER BY created_at DESC LIMIT 1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "last_reauth_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
true
]
},
"hash": "329fa2d5f5798babb92a15f17b32a6ea307e47c4ebdf83d53e6ba29e6e70e700"
}
@@ -0,0 +1,106 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, did, token_id, created_at, updated_at, expires_at, client_id, client_auth,\n device_id, parameters, details, code, current_refresh_token, scope, controller_did\n FROM oauth_token\n WHERE current_refresh_token = $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int4"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "token_id",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "created_at",
"type_info": "Timestamptz"
},
{
"ordinal": 4,
"name": "updated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "expires_at",
"type_info": "Timestamptz"
},
{
"ordinal": 6,
"name": "client_id",
"type_info": "Text"
},
{
"ordinal": 7,
"name": "client_auth",
"type_info": "Jsonb"
},
{
"ordinal": 8,
"name": "device_id",
"type_info": "Text"
},
{
"ordinal": 9,
"name": "parameters",
"type_info": "Jsonb"
},
{
"ordinal": 10,
"name": "details",
"type_info": "Jsonb"
},
{
"ordinal": 11,
"name": "code",
"type_info": "Text"
},
{
"ordinal": 12,
"name": "current_refresh_token",
"type_info": "Text"
},
{
"ordinal": 13,
"name": "scope",
"type_info": "Text"
},
{
"ordinal": 14,
"name": "controller_did",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
false,
true,
false,
true,
true,
true,
true,
true
]
},
"hash": "32fcba431b3650b64e35a122fc1889f63b7d23207b4d29712ba8d1c2ca255080"
}
@@ -0,0 +1,65 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, delegated_did, controller_did, granted_scopes,\n granted_at, granted_by, revoked_at, revoked_by\n FROM account_delegations\n WHERE delegated_did = $1 AND controller_did = $2 AND revoked_at IS NULL\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "delegated_did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "controller_did",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "granted_scopes",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "granted_at",
"type_info": "Timestamptz"
},
{
"ordinal": 5,
"name": "granted_by",
"type_info": "Text"
},
{
"ordinal": 6,
"name": "revoked_at",
"type_info": "Timestamptz"
},
{
"ordinal": 7,
"name": "revoked_by",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": [
false,
false,
false,
false,
false,
false,
true,
true
]
},
"hash": "335da59237a33269b6dbd4fa8e93056171d122040a399947560f63890dd4a39e"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET recovery_token = NULL, recovery_token_expires_at = NULL WHERE did = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "33f1362cf0836f642ebf6fc053ee92ffef44ef4b67ddc00327c6cd407b3436b8"
}
@@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE oauth_device SET trusted_at = $1, trusted_until = $2 WHERE id = $3",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Timestamptz",
"Timestamptz",
"Text"
]
},
"nullable": []
},
"hash": "3519df39bff89306f6a8f38709d4705adf34732730dab8346f814d8ef7599a74"
}
@@ -0,0 +1,34 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id, handle, migrated_to_pds FROM users WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "handle",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "migrated_to_pds",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
true
]
},
"hash": "36f84d8aa41bb289d09fda5e26a91543b1bfd100c659db47bef97954f4c25580"
}
@@ -0,0 +1,34 @@
{
"db_name": "PostgreSQL",
"query": "SELECT legacy_login, mfa_verified, last_reauth_at FROM session_tokens\n WHERE did = $1 ORDER BY created_at DESC LIMIT 1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "legacy_login",
"type_info": "Bool"
},
{
"ordinal": 1,
"name": "mfa_verified",
"type_info": "Bool"
},
{
"ordinal": 2,
"name": "last_reauth_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
true
]
},
"hash": "372e54c2698dd5e0c3eaf1e8f3af3c4095df476b7d283f3d20dd798311c71706"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_kv WHERE key = 'registration'",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "374be0bd97ed927b15929e2f86d88913b2fec45ab67e4805fb9f1e39b422ee7f"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM webauthn_challenges WHERE did = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "37da96763dea10cba06a3be22f29b39ed13445ff61c9d25f67a7e2fd4ee94438"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT COUNT(*) as \"count!\" FROM delegation_audit_log WHERE delegated_did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "count!",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
null
]
},
"hash": "38154ef1114e42ff2718ab5aa10a653f32d097976d2c4881676d27454ad1c2e5"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE oauth_device SET friendly_name = $1 WHERE id = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": []
},
"hash": "39fc4114472fd390ea5921c27622a1aeb1ea927d85e0d90392e25bfa440d364d"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_pre_keys WHERE id = $1 AND identity = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Int4",
"Text"
]
},
"nullable": []
},
"hash": "3a3eee11be6a9c5fe012d2a634c7ef514fb695ca6a4ba7631d1c5aba87a854a5"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET password_hash = $1, password_required = TRUE WHERE id = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Uuid"
]
},
"nullable": []
},
"hash": "3a8b7a2773033c85cd03dd6f906a9d335019f9b7145e1bee6175d01d0c98b8b4"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM account_preferences WHERE user_id = $1 AND name = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid",
"Text"
]
},
"nullable": []
},
"hash": "3b056b9e79847c8bbb8507f283213e7209b417e7933f5b2277a83cae7e1c7888"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET signal_username = NULL, signal_verified = FALSE, updated_at = NOW() WHERE id = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": []
},
"hash": "3c2dde5b27aeaf0dfe5a5c00d4b309d361518bb30890f688088cfd114ae3ce07"
}
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT code FROM invite_code_uses WHERE used_by_user = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "code",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
false
]
},
"hash": "3ecea87b6758e2c7cacca06f3a8294476001c96da970adae1c599d2791a27b10"
}
@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM signal_sender_keys",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "4011d789a6b619231f4e2b917753f0b4452f21243e1d95d47dbaa91cac019e64"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM account_deletion_requests WHERE token = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "4018f515492ac54792fe7d44e6e708b00ae7f33970a63090a816327d698b1d14"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE records SET takedown_ref = $1 WHERE record_cid = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": []
},
"hash": "411a7cff2d43612379903d6343da0761ae5b8b30a2fa1c89afb85047d4fbe3eb"
}
@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE blobs SET takedown_ref = $1 WHERE cid = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": []
},
"hash": "41d35cebdf29be500e30ef636ad96450620f71087c174e5a74446fcdb29a2ba8"
}
@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM user_totp WHERE did = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "41f936992d4d968d94fa77b07a24892bb6c9d5a96f28e6329aa7a3265bb31147"
}
@@ -0,0 +1,31 @@
{
"db_name": "PostgreSQL",
"query": "SELECT rkey, record_cid FROM records\n WHERE repo_id = $1 AND collection = $2 AND rkey > $3\n ORDER BY rkey ASC LIMIT $4",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "rkey",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "record_cid",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid",
"Text",
"Text",
"Int8"
]
},
"nullable": [
false,
false
]
},
"hash": "430c7a88e811702b6b917347fb141394f54b581e356fe3f72ed250cf215df358"
}

Some files were not shown because too many files have changed in this diff Show More