Compare commits

..
172 Commits
Author SHA1 Message Date
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
977 changed files with 171126 additions and 4069 deletions
+58
View File
@@ -0,0 +1,58 @@
[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 }
[test-groups]
serial-env-tests = { max-threads = 1 }
heavy-load-tests = { max-threads = 4 }
[[profile.default.overrides]]
filter = "test(/import_with_verification/) | test(/plc_migration/)"
test-group = "serial-env-tests"
[[profile.default.overrides]]
filter = "binary(ripple_cluster)"
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.ci.overrides]]
filter = "test(/import_with_verification/) | test(/plc_migration/)"
test-group = "serial-env-tests"
[[profile.ci.overrides]]
filter = "binary(ripple_cluster)"
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"
+221 -11
View File
@@ -1,17 +1,227 @@
# =============================================================================
# Server
# =============================================================================
SERVER_HOST=127.0.0.1
SERVER_PORT=3000
# The public-facing hostname of the PDS (used in DID documents, JWTs, etc.)
PDS_HOSTNAME=localhost:3000
# =============================================================================
# Database
# =============================================================================
DATABASE_URL=postgres://postgres:postgres@localhost:5432/pds
# Connection pool settings (defaults are good for most deployments)
# DATABASE_MAX_CONNECTIONS=100
# DATABASE_MIN_CONNECTIONS=10
# DATABASE_ACQUIRE_TIMEOUT_SECS=30
# =============================================================================
# Blob Storage
# =============================================================================
# Backend: "filesystem" (default) or "s3"
# BLOB_STORAGE_BACKEND=filesystem
# For filesystem backend:
BLOB_STORAGE_PATH=/var/lib/tranquil/blobs
# For S3 backend:
# S3_ENDPOINT=http://localhost:9000
# AWS_REGION=us-east-1
# S3_BUCKET=pds-blobs
# AWS_ACCESS_KEY_ID=minioadmin
# AWS_SECRET_ACCESS_KEY=minioadmin
# =============================================================================
# Backups
# =============================================================================
# Enable/disable automatic repo backups
# BACKUP_ENABLED=true
# Backend: "filesystem" (default) or "s3"
# BACKUP_STORAGE_BACKEND=filesystem
# For filesystem backend:
BACKUP_STORAGE_PATH=/var/lib/tranquil/backups
# For S3 backend:
# BACKUP_S3_BUCKET=pds-backups
# Backup schedule and retention
# BACKUP_RETENTION_COUNT=7
# BACKUP_INTERVAL_SECS=86400
# =============================================================================
# Cache & Rate Limiting
# =============================================================================
# Ripple (in-process CRDT cache) is the default. No config needed for single-node.
# Set VALKEY_URL to use valkey instead (disables ripple).
# VALKEY_URL=redis://localhost:6379
#
# Ripple multi-node settings (only needed when clustering):
# RIPPLE_BIND=0.0.0.0:7890
# RIPPLE_PEERS=10.0.0.2:7890,10.0.0.3:7890
# RIPPLE_MACHINE_ID=1
# RIPPLE_GOSSIP_INTERVAL_MS=200
# RIPPLE_CACHE_MAX_MB=256
# =============================================================================
# Security Secrets
# =============================================================================
# These MUST be set in production (minimum 32 characters each)
# In development, set TRANQUIL_PDS_ALLOW_INSECURE_SECRETS=1 to use defaults
# Server-wide secret for OAuth token signing (HS256)
# JWT_SECRET=your-secure-random-string-at-least-32-chars
# Secret for DPoP proof validation
# DPOP_SECRET=your-secure-random-string-at-least-32-chars
# Key for encrypting user signing keys at rest (AES-256-GCM)
# MASTER_KEY=your-secure-random-string-at-least-32-chars
# Set this ONLY in development to allow default/weak secrets
# TRANQUIL_PDS_ALLOW_INSECURE_SECRETS=1
# =============================================================================
# PLC Directory
# =============================================================================
# PLC_DIRECTORY_URL=https://plc.directory
# PLC_TIMEOUT_SECS=10
# PLC_CONNECT_TIMEOUT_SECS=5
# Optional: rotation key for PLC operations (defaults to user's key)
# PLC_ROTATION_KEY=did:key:...
# =============================================================================
# DID Resolution
# =============================================================================
# Cache TTL for resolved DID documents (default: 300 seconds)
# DID_CACHE_TTL_SECS=300
# =============================================================================
# Relays
# =============================================================================
# Comma-separated list of relay URLs to notify via requestCrawl
# CRAWLERS=https://bsky.network,https://relay.upcloud.world
# =============================================================================
# Firehose (subscribeRepos WebSocket)
# =============================================================================
# Buffer size for firehose broadcast channel
# FIREHOSE_BUFFER_SIZE=10000
# Disconnect slow consumers after this many events of lag
# FIREHOSE_MAX_LAG=5000
# =============================================================================
# Notification Service
# =============================================================================
# Queue processing settings
# NOTIFICATION_BATCH_SIZE=100
# NOTIFICATION_POLL_INTERVAL_MS=1000
# Email notifications (via sendmail/msmtp)
# MAIL_FROM_ADDRESS=noreply@example.com
# MAIL_FROM_NAME=My PDS
# SENDMAIL_PATH=/usr/sbin/sendmail
# Discord notifications (via bot DM)
# DISCORD_BOT_TOKEN=bot-token
# Telegram notifications (via bot)
# TELEGRAM_BOT_TOKEN=bot-token
# TELEGRAM_WEBHOOK_SECRET=random-secret
# Signal notifications (via signal-cli)
# SIGNAL_CLI_PATH=/usr/local/bin/signal-cli
# SIGNAL_SENDER_NUMBER=+1234567890
# =============================================================================
# Upload Limits
# =============================================================================
# Maximum blob/body size in bytes (default: 10GB)
# This controls both the Axum body limit and blob upload limits.
# Make sure your nginx client_max_body_size matches or exceeds this value.
# MAX_BLOB_SIZE=10737418240
# =============================================================================
# Repository Import
# =============================================================================
# Set to "true" to accept repository imports
# ACCEPTING_REPO_IMPORTS=false
# Maximum import size in bytes (default: 100MB)
# MAX_IMPORT_SIZE=104857600
# Maximum blocks per import (default: 100000)
# MAX_IMPORT_BLOCKS=100000
# Skip verification during import (testing only)
# SKIP_IMPORT_VERIFICATION=false
# =============================================================================
# Account Registration
# =============================================================================
# Require invite codes for registration
# INVITE_CODE_REQUIRED=false
# Comma-separated list of available user domains
# AVAILABLE_USER_DOMAINS=example.com
# Enable self-hosted did:web identities (default: true)
# Hosting did:web requires a long-term commitment to serve DID documents.
# Set to false if you don't want to offer this option.
# ENABLE_SELF_HOSTED_DID_WEB=true
# =============================================================================
# Server Metadata (returned by describeServer)
# =============================================================================
# Privacy policy URL (optional)
# PRIVACY_POLICY_URL=https://example.com/privacy
# Terms of service URL (optional)
# TERMS_OF_SERVICE_URL=https://example.com/terms
# Contact email address (optional)
# CONTACT_EMAIL=admin@example.com
# =============================================================================
# Rate Limiting
# =============================================================================
# Disable all rate limiting (testing only, NEVER in production)
# DISABLE_RATE_LIMITING=1
# =============================================================================
# Account Deletion
# =============================================================================
# How often to check for scheduled account deletions (default: 3600 = 1 hour)
# SCHEDULED_DELETE_CHECK_INTERVAL_SECS=3600
# =============================================================================
# Moderation / Report Service
# =============================================================================
# If configured, moderation reports will be proxied to this service
# instead of being stored locally. The service should implement the
# com.atproto.moderation.createReport endpoint (eg., Bluesky's Ozone).
# Both URL and DID must be set for proxying to be enabled.
# REPORT_SERVICE_URL=https://mod.bsky.app
# REPORT_SERVICE_DID=did:plc:ar7c4by46qjdydhdevvrndac
# =============================================================================
# Age Assurance Override
# =============================================================================
# Enable this if you have separately assured the ages of your users
# (eg., through your own age verification process). When enabled, the PDS
# will return "assured" status for age assurance checks instead of proxying
# to the appview. This helps migrated users avoid the age assurance
# catch-22 on bsky.app.
# PDS_AGE_ASSURANCE_OVERRIDE=1
# =============================================================================
# Miscellaneous
# =============================================================================
# Allow HTTP for proxy requests (development only)
# ALLOW_HTTP_PROXY=1
# =============================================================================
# SSO / Social Login
# =============================================================================
# Each provider requires ENABLED=true plus CLIENT_ID and CLIENT_SECRET.
# Register your PDS as an OAuth application with each provider to get credentials.
OBJECT_STORAGE_ENDPOINT=
OBJECT_STORAGE_REGION=us-east-1
OBJECT_STORAGE_BUCKET=pds-blobs
OBJECT_STORAGE_ACCESS_KEY=
OBJECT_STORAGE_SECRET_KEY=
# GitHub
# SSO_GITHUB_ENABLED=true
# SSO_GITHUB_CLIENT_ID=
# SSO_GITHUB_CLIENT_SECRET=
# Set to 'true' for MinIO or other services that need path-style addressing
OBJECT_STORAGE_FORCE_PATH_STYLE=false
# Discord
# SSO_DISCORD_ENABLED=true
# SSO_DISCORD_CLIENT_ID=
# SSO_DISCORD_CLIENT_SECRET=
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
# Google
# SSO_GOOGLE_ENABLED=true
# SSO_GOOGLE_CLIENT_ID=
# SSO_GOOGLE_CLIENT_SECRET=
# GitLab (set ISSUER for self-hosted instances)
# SSO_GITLAB_ENABLED=false
# SSO_GITLAB_CLIENT_ID=
# SSO_GITLAB_CLIENT_SECRET=
# SSO_GITLAB_ISSUER=https://gitlab.com
# Generic OIDC
# SSO_OIDC_ENABLED=false
# SSO_OIDC_CLIENT_ID=
# SSO_OIDC_CLIENT_SECRET=
# SSO_OIDC_ISSUER=https://your-identity-provider.com
# SSO_OIDC_NAME=Custom Provider
# Apple Sign-in
# SSO_APPLE_ENABLED=true
# SSO_APPLE_CLIENT_ID=com.example.signin # Services ID from Apple Developer Portal
# SSO_APPLE_TEAM_ID=XXXXXXXXXX # 10-character Team ID
# SSO_APPLE_KEY_ID=XXXXXXXXXX # Key ID from portal
# SSO_APPLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
CARGO_MOMMYS_LITTLE=mister
CARGO_MOMMYS_PRONOUNS=his
CARGO_MOMMYS_ROLES=daddy
CARGO_MOMMYS_EMOTES="🚛/🧱/🚜/🔩/🦺"
CARGO_MOMMYS_MOODS=ominous
+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,28 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id, backup_enabled FROM users WHERE did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "backup_enabled",
"type_info": "Bool"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false
]
},
"hash": "017b04caf42b30f2c8f9468acf61a83244b7c2fa5cacfaee41a946a6af5ef68e"
}
@@ -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,32 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT seq, did, commit_cid\n FROM repo_seq\n WHERE event_type = 'commit'\n AND prev_cid IS NULL\n AND (blocks_cids IS NULL OR array_length(blocks_cids, 1) IS NULL OR array_length(blocks_cids, 1) = 0)\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "seq",
"type_info": "Int8"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "commit_cid",
"type_info": "Text"
}
],
"parameters": {
"Left": []
},
"nullable": [
false,
false,
true
]
},
"hash": "033ed5638ef6e30f1648c1acdbc477c173798cb57eb0127c3a582a9633fa5012"
}
@@ -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,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,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT t.token FROM plc_operation_tokens t JOIN users u ON t.user_id = u.id WHERE u.did = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "token",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "05fd99170e31e68fa5028c862417cdf535cd70e09fde0a8a28249df0070eb2fc"
}
@@ -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,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE users SET deactivated_at = $1 WHERE did = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Timestamptz",
"Text"
]
},
"nullable": []
},
"hash": "0710b57fb9aa933525f617b15e6e2e5feaa9c59c38ec9175568abdacda167107"
}
@@ -0,0 +1,53 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT u.id, u.did, u.backup_enabled, u.deactivated_at, r.repo_root_cid, r.repo_rev\n FROM users u\n JOIN repos r ON r.user_id = u.id\n WHERE u.backup_enabled = true\n AND u.deactivated_at IS NULL\n AND (\n NOT EXISTS (\n SELECT 1 FROM account_backups ab WHERE ab.user_id = u.id\n )\n OR (\n SELECT MAX(ab.created_at) FROM account_backups ab WHERE ab.user_id = u.id\n ) < NOW() - make_interval(secs => $1)\n )\n LIMIT $2\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "backup_enabled",
"type_info": "Bool"
},
{
"ordinal": 3,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 4,
"name": "repo_root_cid",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "repo_rev",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Float8",
"Int8"
]
},
"nullable": [
false,
false,
false,
true,
false,
true
]
},
"hash": "07c54d6bcfdc08d821e788c31dc46cc240dc8507c7dd5bdd2ceeb36d2084e8ce"
}
@@ -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,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,87 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT\n id,\n delegated_did,\n actor_did,\n controller_did,\n action_type as \"action_type: PgDelegationActionType\",\n action_details,\n ip_address,\n user_agent,\n created_at\n FROM delegation_audit_log\n WHERE controller_did = $1\n ORDER BY created_at DESC\n LIMIT $2 OFFSET $3\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "delegated_did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "actor_did",
"type_info": "Text"
},
{
"ordinal": 3,
"name": "controller_did",
"type_info": "Text"
},
{
"ordinal": 4,
"name": "action_type: PgDelegationActionType",
"type_info": {
"Custom": {
"name": "delegation_action_type",
"kind": {
"Enum": [
"grant_created",
"grant_revoked",
"scopes_modified",
"token_issued",
"repo_write",
"blob_upload",
"account_action"
]
}
}
}
},
{
"ordinal": 5,
"name": "action_details",
"type_info": "Jsonb"
},
{
"ordinal": 6,
"name": "ip_address",
"type_info": "Text"
},
{
"ordinal": 7,
"name": "user_agent",
"type_info": "Text"
},
{
"ordinal": 8,
"name": "created_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text",
"Int8",
"Int8"
]
},
"nullable": [
false,
false,
false,
true,
false,
true,
true,
true,
false
]
},
"hash": "0ce61cd393867522de318c1f86c787851ec7bbc31b147b9c2fb2bac9b2676ba6"
}
@@ -0,0 +1,100 @@
{
"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, blocks_cids, handle, active, status, rev\n FROM repo_seq\n WHERE seq = $1",
"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": "blocks_cids",
"type_info": "TextArray"
},
{
"ordinal": 10,
"name": "handle",
"type_info": "Text"
},
{
"ordinal": 11,
"name": "active",
"type_info": "Bool"
},
{
"ordinal": 12,
"name": "status",
"type_info": "Text"
},
{
"ordinal": 13,
"name": "rev",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Int8"
]
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "0d32a592a97ad47c65aa37cf0d45417f2966fcbd688be7434626ae5f6971fa1f"
}
@@ -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,29 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT ab.storage_key, ab.repo_rev\n FROM account_backups ab\n JOIN users u ON u.id = ab.user_id\n WHERE ab.id = $1 AND u.did = $2\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "storage_key",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "repo_rev",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid",
"Text"
]
},
"nullable": [
false,
false
]
},
"hash": "0d70da6b077d6fbab5056c38490acbe772626a3447182b76b0cbcee15c5a46dc"
}
@@ -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,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT body FROM comms_queue WHERE user_id = (SELECT id FROM users WHERE did = $1) AND comms_type = 'email_update' ORDER BY created_at DESC LIMIT 1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "body",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "0ec60bb854a4991d0d7249a68f7445b65c8cc8c723baca221d85f5e4f2478b99"
}
@@ -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,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT token FROM sso_pending_registration WHERE token = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "token",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "0fae1be7a75bdc58c69a9af97cad4aec23c32a9378764b8d6d7eb2cc89c562b1"
}
@@ -0,0 +1,29 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id, storage_key\n FROM account_backups\n WHERE user_id = $1\n ORDER BY created_at DESC\n OFFSET $2\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "storage_key",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Uuid",
"Int8"
]
},
"nullable": [
false,
false
]
},
"hash": "120c30d563b3cc40a2bb670f0c38c4ad63360b4a4f8e20c21afbe60c6fb7087a"
}
@@ -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,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,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,22 @@
{
"db_name": "PostgreSQL",
"query": "\n DELETE FROM sso_pending_registration\n WHERE token = $1 AND expires_at > NOW()\n RETURNING token\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "token",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "1c84643fd6bc57c76517849a64d2d877df337e823d4c2c2b077f695bbfc9e9ac"
}
@@ -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,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,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,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": "\n DELETE FROM sso_pending_registration\n WHERE token = $1 AND expires_at > NOW()\n RETURNING token, request_uri\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "token",
"type_info": "Text"
},
{
"ordinal": 1,
"name": "request_uri",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false
]
},
"hash": "24b823043ab60f36c29029137fef30dfe33922bb06067f2fdbfc1fbb4b0a2a81"
}
@@ -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,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,38 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO external_identities (did, provider, provider_user_id)\n VALUES ($1, $2, $3)\n RETURNING id\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
}
],
"parameters": {
"Left": [
"Text",
{
"Custom": {
"name": "sso_provider_type",
"kind": {
"Enum": [
"github",
"discord",
"google",
"gitlab",
"oidc",
"apple"
]
}
}
},
"Text"
]
},
"nullable": [
false
]
},
"hash": "2841093a67480e75e1e9e4046bf3eb74afae2d04f5ea0ec17a4d433983e6d71c"
}
@@ -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,52 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT u.id, u.did, u.backup_enabled, u.deactivated_at, r.repo_root_cid, r.repo_rev\n FROM users u\n JOIN repos r ON r.user_id = u.id\n WHERE u.did = $1\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
},
{
"ordinal": 1,
"name": "did",
"type_info": "Text"
},
{
"ordinal": 2,
"name": "backup_enabled",
"type_info": "Bool"
},
{
"ordinal": 3,
"name": "deactivated_at",
"type_info": "Timestamptz"
},
{
"ordinal": 4,
"name": "repo_root_cid",
"type_info": "Text"
},
{
"ordinal": 5,
"name": "repo_rev",
"type_info": "Text"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false,
false,
false,
true,
false,
true
]
},
"hash": "3043db19db2d0f51d1db6965a3ba0af4a1a4a76cc4ab1cad8395ba6babecc37d"
}
@@ -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,32 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO sso_pending_registration (token, request_uri, provider, provider_user_id, provider_email_verified)\n VALUES ($1, $2, $3, $4, $5)\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text",
{
"Custom": {
"name": "sso_provider_type",
"kind": {
"Enum": [
"github",
"discord",
"google",
"gitlab",
"oidc",
"apple"
]
}
}
},
"Text",
"Bool"
]
},
"nullable": []
},
"hash": "376b72306b50f747bc9161985ff4f50c35c53025a55ccf5e9933dc3795d29313"
}
@@ -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,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT id FROM external_identities WHERE id = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
}
],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": [
false
]
},
"hash": "3933ea5b147ab6294936de147b98e116cfae848ecd76ea5d367585eb5117f2ad"
}
@@ -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": "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,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE repo_seq SET blocks_cids = $1 WHERE seq = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"TextArray",
"Int8"
]
},
"nullable": []
},
"hash": "3b791fdb8e29043c980963d4d18e1e492c73c39818a8648a7af70555418fb5d1"
}
@@ -0,0 +1,16 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO users (did, handle, email, password_hash) VALUES ($1, $2, $3, 'hash')",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text",
"Text",
"Text"
]
},
"nullable": []
},
"hash": "3bed8d4843545f4a9676207513806603c50eb2af92957994abaf1c89c0294c12"
}
@@ -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,14 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM account_deletion_requests WHERE token = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "4018f515492ac54792fe7d44e6e708b00ae7f33970a63090a816327d698b1d14"
}
@@ -0,0 +1,30 @@
{
"db_name": "PostgreSQL",
"query": "\n INSERT INTO repo_seq (did, event_type, commit_cid, prev_cid, ops, blobs, blocks_cids, prev_data_cid, rev)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)\n RETURNING seq\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "seq",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Text",
"Jsonb",
"TextArray",
"TextArray",
"Text",
"Text"
]
},
"nullable": [
false
]
},
"hash": "40e848f48afb50f5e4820445aee874a482333e9090ef14ce44db3fd9721cfff0"
}
@@ -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