diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 525c94f..c523843 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,12 +1,14 @@ name: CI on: push: - branches-ignore: - - 'generated' - - 'codegen/**' - - 'integrated/**' - - 'stl-preview-head/**' - - 'stl-preview-base/**' + branches: + - '**' + - '!integrated/**' + - '!stl-preview-head/**' + - '!stl-preview-base/**' + - '!generated' + - '!codegen/**' + - 'codegen/stl/**' pull_request: branches-ignore: - 'stl-preview-head/**' @@ -19,7 +21,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/beeper-desktop-api-sql' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Install PostgreSQL 14 run: | @@ -41,7 +43,7 @@ jobs: sudo chown -R $USER:$USER /var/run/postgresql - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 with: version: '0.9.21' diff --git a/.gitignore b/.gitignore index eb81fc6..f395f7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .prism.log +.stdy.log .venv temp/ regress/ diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3d2ac0b..8e76abb 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0" + ".": "5.0.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 2b39be6..62239e7 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 23 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/beeper%2Fbeeper-desktop-api-5a8ac7b545c48dc892e5c680303e305254921554dabee848e40a808659dbcf1e.yml -openapi_spec_hash: 0103975601aac1445d3a4ef418c5d17a -config_hash: ca148af6be59ec54295b2c5f852a38d1 +configured_endpoints: 72 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/beeper/beeper-desktop-api-8ba2755730c4180ec88f92a300948445d7917898abfc912ca3fa6adc766a7520.yml +openapi_spec_hash: 30b435d7585d8b6951610e7147369779 +config_hash: a53888715ed00d433e5a5dafab9f7b9f diff --git a/CHANGELOG.md b/CHANGELOG.md index f7634d8..10e3caf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,45 @@ # Changelog +## 5.0.0 (2026-05-16) + +Full Changelog: [v0.1.0...v5.0.0](https://github.com/beeper/desktop-api-sql/compare/v0.1.0...v5.0.0) + +### Features + +* **api:** add network, bridge fields to accounts ([41e2829](https://github.com/beeper/desktop-api-sql/commit/41e28294a7fcad3839ea2d3c5c3b48061774776f)) +* **api:** api update ([21cafde](https://github.com/beeper/desktop-api-sql/commit/21cafde63f92786cb87ff52ed169ab3590dfae1b)) +* **api:** api update ([673f0a1](https://github.com/beeper/desktop-api-sql/commit/673f0a1de2c331b41c8093c7bf7edcd908b3bcb0)) +* support setting headers via env ([d1ebc75](https://github.com/beeper/desktop-api-sql/commit/d1ebc75c6cdaf3421824fc57f4ec85cba613c944)) + + +### Chores + +* **internal:** codegen related update ([43a6ea9](https://github.com/beeper/desktop-api-sql/commit/43a6ea972203ffff707a1e9be275ec61fca3ccd2)) +* **internal:** codegen related update ([836fc21](https://github.com/beeper/desktop-api-sql/commit/836fc2121e4d8bdc5116b39acac969c20a4af775)) +* **internal:** codegen related update ([91994fa](https://github.com/beeper/desktop-api-sql/commit/91994fa8b9e406c674d5245f2da123608e87046b)) +* **internal:** support env vars in `./scripts/repl` ([9183ad1](https://github.com/beeper/desktop-api-sql/commit/9183ad1d77206204a8650471616d1f97b817f024)) +* **internal:** tweak CI branches ([2db5518](https://github.com/beeper/desktop-api-sql/commit/2db5518d6ac525ccd1d753e271f6adcde42398bf)) +* **internal:** update gitignore ([998e1de](https://github.com/beeper/desktop-api-sql/commit/998e1de2a033f9cb44326e681eadc5cbd25d862b)) +* **internal:** update multipart form array serialization ([0af81d8](https://github.com/beeper/desktop-api-sql/commit/0af81d8b40c42ae06bac4d2ee9d9bcf5fb887641)) +* **tests:** bump steady to v0.19.4 ([fe76f5e](https://github.com/beeper/desktop-api-sql/commit/fe76f5e4d60950521215581557cd0453720d7a71)) +* **tests:** bump steady to v0.19.5 ([71cbd2c](https://github.com/beeper/desktop-api-sql/commit/71cbd2c8566c6c466557c8ee7209f6710687cf1a)) +* **tests:** bump steady to v0.19.6 ([827b6a2](https://github.com/beeper/desktop-api-sql/commit/827b6a2c9d2f7db42f469a86f207318e1441a46a)) +* **tests:** bump steady to v0.19.7 ([be70621](https://github.com/beeper/desktop-api-sql/commit/be70621335ade7130eedb59982ff75f36c3ce75a)) +* **tests:** bump steady to v0.20.1 ([1c13343](https://github.com/beeper/desktop-api-sql/commit/1c1334345f7df0ab235018431f6f64026db45332)) +* **tests:** bump steady to v0.20.2 ([60ca024](https://github.com/beeper/desktop-api-sql/commit/60ca0242076c462be6e9da54a39b1138a56b9732)) +* **tests:** bump steady to v0.22.1 ([ad561c9](https://github.com/beeper/desktop-api-sql/commit/ad561c97cdcae8a56ac67bd285e4a4c74f34ac09)) +* update SDK settings ([71dc986](https://github.com/beeper/desktop-api-sql/commit/71dc9866112525943eb11a430cf2505236cc3f46)) + + +### Documentation + +* explain caching ([d84f8a5](https://github.com/beeper/desktop-api-sql/commit/d84f8a50545721a86b7ea48a8af34bd588961c54)) + + +### Refactors + +* **tests:** switch from prism to steady ([ca3c264](https://github.com/beeper/desktop-api-sql/commit/ca3c264cee5d12947269f7fc6f919eb8db071c9b)) + ## 0.1.0 (2026-03-13) Full Changelog: [v0.0.1...v0.1.0](https://github.com/beeper/desktop-api-sql/compare/v0.0.1...v0.1.0) diff --git a/META.json b/META.json index ba92e1b..9311557 100644 --- a/META.json +++ b/META.json @@ -10,7 +10,6 @@ "version": "0.0.1", "release_status": "testing", "maintainer": "Beeper Desktop ", - "generated_by": "Stainless (https://stainless.com)", "license": "mit", "resources": { "homepage": "https://developers.beeper.com/desktop-api/", diff --git a/README.md b/README.md index 0544b3f..3aef763 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,6 @@ The Beeper Desktop API PostgreSQL Extension provides convenient access to the [Beeper Desktop REST API](https://developers.beeper.com/desktop-api/) from PostgreSQL. -It is generated with [Stainless](https://www.stainless.com/). - The REST API documentation can be found on [developers.beeper.com](https://developers.beeper.com/desktop-api/). ## Installation @@ -61,7 +59,12 @@ This extension requires: ```sql SELECT * FROM beeper_desktop_api_chats.search( - include_muted := TRUE, "limit" := 3, type := 'single' + account_ids := ARRAY[ + 'matrix', 'discordgo', 'local-whatsapp_ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc' + ], + include_muted := TRUE, + "limit" := 3, + type := 'single' ); ``` @@ -70,34 +73,39 @@ FROM beeper_desktop_api_chats.search( Configure the client by setting configuration parameters at the database level: ```sql -ALTER DATABASE my_database SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +ALTER DATABASE my_database SET beeper_desktop_api.access_token = 'My Access Token'; ``` > [!NOTE] > > `ALTER DATABASE` persistently alters the database, but doesn't take effect until the next session. To -> ephemerally modify the current session, use `SET beeper_desktop_api.beeper_access_token TO 'My Access Token';`. +> ephemerally modify the current session, use `SET beeper_desktop_api.access_token TO 'My Access Token';`. See this table for the available configuration parameters: -| Parameter | Required | Default value | -| ---------------------------------------- | -------- | -------------------------- | -| `beeper_desktop_api.beeper_access_token` | true | - | -| `beeper_desktop_api.base_url` | false | `'http://localhost:23373'` | +| Parameter | Required | Default value | +| --------------------------------- | -------- | -------------------------- | +| `beeper_desktop_api.access_token` | false | - | +| `beeper_desktop_api.base_url` | false | `'http://localhost:23373'` | ## Requests and responses To send a request to the Beeper Desktop API, call the relevant SQL function with values corresponding to the parameter types and `SELECT` the columns you need from the returned rows. -To construct [composite type](https://www.postgresql.org/docs/current/rowtypes.html) parameters, use the parameter type's provided `make_*` function. For example, `beeper_desktop_api_chats.create_params_user` may be constructed like so: +To construct [composite type](https://www.postgresql.org/docs/current/rowtypes.html) parameters, use the parameter type's provided `make_*` function. For example, `beeper_desktop_api_matrix_rooms.join_params_third_party_signed` may be constructed like so: ```sql -beeper_desktop_api_chats.make_create_params_user( - id := 'id', - email := 'email', - fullName := 'fullName', - phoneNumber := 'phoneNumber', - username := 'username' +beeper_desktop_api_matrix_rooms.make_join_params_third_party_signed( + token := 'random8nonce', + mxid := 'bob', + sender := 'alice', + signatures := $$ + { + "example.org": { + "ed25519:0": "some9signature" + } + } + $$::JSONB ) ``` @@ -110,9 +118,11 @@ For example, the following query will make the minimum number of requests necess ```sql SELECT * FROM beeper_desktop_api_messages.search( - account_ids := ARRAY['local-telegram_ba_QFrb5lrLPhO3OT5MFBeTWv0x4BI'], + account_ids := ARRAY[ + 'discordgo', 'local-whatsapp_ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc' + ], "limit" := 10, - query := 'deployment' + query := 'oauth' ) LIMIT 200; ``` @@ -123,6 +133,29 @@ LIMIT 200; > removed, then PostgreSQL may not [push down the condition](https://wiki.postgresql.org/wiki/Inlining_of_SQL_functions), > causing all pages to be requested and buffered. +## Caching + +Sending requests to the Beeper Desktop API for every SQL query can be slow. Combine [materialized views](https://www.postgresql.org/docs/current/rules-materializedviews.html) with [`pg_cron`](https://github.com/citusdata/pg_cron) for scheduled data pulls: + +```sql +CREATE MATERIALIZED VIEW beeper_desktop_api_messages AS +SELECT * +FROM beeper_desktop_api_messages.search( + account_ids := ARRAY[ + 'discordgo', 'local-whatsapp_ba_EvYDBBsZbRQAy3UOSWqG0LuTVkc' + ], + "limit" := 10, + query := 'oauth' +); + +-- Refresh the view every 4 hours. +SELECT cron.schedule( + 'refresh-beeper-desktop-api-messages', + '0 */4 * * *', + 'REFRESH MATERIALIZED VIEW CONCURRENTLY beeper_desktop_api_messages' +); +``` + ## Troubleshooting ### Installation diff --git a/scripts/mock b/scripts/mock index bcf3b39..9c7c439 100755 --- a/scripts/mock +++ b/scripts/mock @@ -19,34 +19,34 @@ fi echo "==> Starting mock server with URL ${URL}" -# Run prism mock on the given spec +# Run steady mock on the given spec if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout - npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism --version + npm exec --package=@stdy/cli@0.22.1 -- steady --version - npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" &> .prism.log & + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=repeat --validator-form-array-format=repeat --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & - # Wait for server to come online (max 30s) + # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" attempts=0 - while ! grep -q "✖ fatal\|Prism is listening" ".prism.log" ; do + while ! curl --silent --fail "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1; do + if ! kill -0 $! 2>/dev/null; then + echo + cat .stdy.log + exit 1 + fi attempts=$((attempts + 1)) if [ "$attempts" -ge 300 ]; then echo - echo "Timed out waiting for Prism server to start" - cat .prism.log + echo "Timed out waiting for Steady server to start" + cat .stdy.log exit 1 fi echo -n "." sleep 0.1 done - if grep -q "✖ fatal" ".prism.log"; then - cat .prism.log - exit 1 - fi - echo else - npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=repeat --validator-form-array-format=repeat --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" fi diff --git a/scripts/repl b/scripts/repl index 21d1eab..b4aa506 100755 --- a/scripts/repl +++ b/scripts/repl @@ -29,8 +29,8 @@ if [ "$PG_MAJOR_VERSION" -ge 18 ]; then done POSTGRES_CONFIG=(-c extension_control_path="$(realpath temp/install/share/postgresql)") else - # In PostgreSQL <18 we cannot point `postgres` to our local extensions directory. So we install directly to - # the system. + # In PostgreSQL <18 we cannot point `postgres` to our local extensions directory. So we install + # directly to the system. sudo make install PG_CONFIG="$(command -v pg_config)" fi @@ -61,10 +61,17 @@ done echo "==> Running setup.sql" psql -d postgres -f test/sql/create_extension.sql +if [ -n "$BEEPER_ACCESS_TOKEN" ]; then + psql -d postgres --variable "value='$BEEPER_ACCESS_TOKEN'" -c 'ALTER DATABASE postgres SET beeper_desktop_api.access_token = :value;' +fi +if [ -n "$BEEPER_BASE_URL" ]; then + psql -d postgres --variable "value='$BEEPER_BASE_URL'" -c 'ALTER DATABASE postgres SET beeper_desktop_api.base_url = :value;' +fi + if command -v pgcli &>/dev/null; then echo "==> Starting pgcli REPL" pgcli postgres else echo "==> Starting psql REPL (TIP: Install pgcli for better autocomplete!)" psql -d postgres -fi +fi \ No newline at end of file diff --git a/scripts/test b/scripts/test index 8b23b9c..dc681e7 100755 --- a/scripts/test +++ b/scripts/test @@ -9,8 +9,8 @@ GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # No Color -function prism_is_running() { - curl --silent "http://localhost:4010" >/dev/null 2>&1 +function steady_is_running() { + curl --silent "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1 } kill_server_on_port() { @@ -25,7 +25,7 @@ function is_overriding_api_base_url() { [ -n "$TEST_API_BASE_URL" ] } -if ! is_overriding_api_base_url && ! prism_is_running ; then +if ! is_overriding_api_base_url && ! steady_is_running ; then # When we exit this script, make sure to kill the background mock server process trap 'kill_server_on_port 4010' EXIT @@ -36,19 +36,19 @@ fi if is_overriding_api_base_url ; then echo -e "${GREEN}✔ Running tests against ${TEST_API_BASE_URL}${NC}" echo -elif ! prism_is_running ; then - echo -e "${RED}ERROR:${NC} The test suite will not run without a mock Prism server" +elif ! steady_is_running ; then + echo -e "${RED}ERROR:${NC} The test suite will not run without a mock Steady server" echo -e "running against your OpenAPI spec." echo echo -e "To run the server, pass in the path or url of your OpenAPI" - echo -e "spec to the prism command:" + echo -e "spec to the steady command:" echo - echo -e " \$ ${YELLOW}npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock path/to/your.openapi.yml${NC}" + echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=repeat --validator-form-array-format=repeat --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" echo exit 1 else - echo -e "${GREEN}✔ Mock prism server is running with your OpenAPI spec${NC}" + echo -e "${GREEN}✔ Mock steady server is running with your OpenAPI spec${NC}" echo fi diff --git a/sql/_beeper_desktop_api.sql b/sql/_beeper_desktop_api.sql index 1e703eb..a4ac3fc 100644 --- a/sql/_beeper_desktop_api.sql +++ b/sql/_beeper_desktop_api.sql @@ -72,13 +72,11 @@ AS $$ # This configuration parameter was not set, but it's optional so ignore the exception. pass try: - value = plpy.execute("SELECT current_setting('beeper_desktop_api.beeper_access_token') AS value")[0]['value'] + value = plpy.execute("SELECT current_setting('beeper_desktop_api.access_token') AS value")[0]['value'] client_options["access_token"] = value except Exception: - plpy.warning( - "Required DB config parameter 'beeper_desktop_api.beeper_access_token' is not set", - hint="ALTER DATABASE my_database SET beeper_desktop_api.beeper_access_token = ...;" - ) + # This configuration parameter was not set, but it's optional so ignore the exception. + pass def strip_none(value): if isinstance(value, dict): @@ -105,10 +103,21 @@ CREATE TYPE beeper_desktop_api_internal.page AS ( CREATE SCHEMA IF NOT EXISTS beeper_desktop_api; +CREATE TYPE beeper_desktop_api.app_state_snapshot AS (); +CREATE TYPE beeper_desktop_api.app_state_snapshot_e2ee AS (); +CREATE TYPE beeper_desktop_api.app_state_snapshot_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api.app_state_snapshot_matrix AS (); +CREATE TYPE beeper_desktop_api.app_state_snapshot_verification AS (); +CREATE TYPE beeper_desktop_api.app_state_snapshot_verification_error AS (); +CREATE TYPE beeper_desktop_api.app_state_snapshot_verification_sa AS (); CREATE TYPE beeper_desktop_api.attachment AS (); CREATE TYPE beeper_desktop_api.attachment_size AS (); +CREATE TYPE beeper_desktop_api.attachment_transcription AS (); CREATE TYPE beeper_desktop_api.error AS (); CREATE TYPE beeper_desktop_api.message AS (); +CREATE TYPE beeper_desktop_api.message_link AS (); +CREATE TYPE beeper_desktop_api.message_link_img_size AS (); +CREATE TYPE beeper_desktop_api.message_send_status AS (); CREATE TYPE beeper_desktop_api.reaction AS (); CREATE TYPE beeper_desktop_api.user AS (); @@ -119,22 +128,364 @@ CREATE TYPE beeper_desktop_api.client_search_response AS (); CREATE TYPE beeper_desktop_api.client_search_response_result AS (); CREATE TYPE beeper_desktop_api.client_search_response_result_message AS (); +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app; + +CREATE TYPE beeper_desktop_api_app.login_registration_required_response AS (); +CREATE TYPE beeper_desktop_api_app.login_registration_required_response_copy AS (); +CREATE TYPE beeper_desktop_api_app.login_response AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app.login_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app.login_response_desktop_api AS (); +CREATE TYPE beeper_desktop_api_app.login_response_matrix AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_desktop_api AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_matrix AS (); +CREATE TYPE beeper_desktop_api_app.login_response_output_copy AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app.start_verification_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app.state_mutation_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response_e2ee AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response_matrix AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response_verification AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response_verification_error AS (); +CREATE TYPE beeper_desktop_api_app.app_status_response_verification_sa AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app_login; + +CREATE TYPE beeper_desktop_api_app_login.login_register_response AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_desktop_api AS (); +CREATE TYPE beeper_desktop_api_app_login.login_register_response_matrix AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_desktop_api AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_matrix AS (); +CREATE TYPE beeper_desktop_api_app_login.login_response_response_copy AS (); +CREATE TYPE beeper_desktop_api_app_login.login_start_response AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app_e2ee_recovery_code; + +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.rcovery_cde_mrk_backed_up_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_sa AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app_e2ee_recovery_code_reset; + +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_sa AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app_e2ee_verification; + +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_sa AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app_e2ee_verification_qr; + +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_sa AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_app_e2ee_verification_sas; + +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_sa AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee_secret AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_matrix AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_error AS (); +CREATE TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_sa AS (); + CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_accounts; CREATE TYPE beeper_desktop_api_accounts.account AS (); +CREATE TYPE beeper_desktop_api_accounts.account_bridge AS (); CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_accounts_contacts; CREATE TYPE beeper_desktop_api_accounts_contacts.contact_search_response AS (); +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_bridges; + +CREATE TYPE beeper_desktop_api_bridges.bridge_availability AS (); +CREATE TYPE beeper_desktop_api_bridges.bridge_availability_bridge AS (); +CREATE TYPE beeper_desktop_api_bridges.bridge_list_response AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_users; + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_users_account_data; + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_rooms; + +CREATE TYPE beeper_desktop_api_matrix_rooms.room_create_response AS (); +CREATE TYPE beeper_desktop_api_matrix_rooms.room_join_response AS (); +CREATE TYPE beeper_desktop_api_matrix_rooms.create_params_initial_state AS (); +CREATE TYPE beeper_desktop_api_matrix_rooms.create_params_invite_3pid AS (); +CREATE TYPE beeper_desktop_api_matrix_rooms.join_params_third_party_signed AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_rooms_account_data; + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_rooms_state; + +CREATE TYPE beeper_desktop_api_matrix_rooms_state.state_list_response AS (); +CREATE TYPE beeper_desktop_api_matrix_rooms_state.state_list_response_unsigned AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_rooms_events; + +CREATE TYPE beeper_desktop_api_matrix_rooms_events.event_retrieve_response AS (); +CREATE TYPE beeper_desktop_api_matrix_rooms_events.event_retrieve_response_unsigned AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_bridges_auth; + +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response_flow AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_list_logins_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_display_and_wait AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment_info AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_complete AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_display_and_wait AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment_info AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_complete AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_display_and_wait AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment_info AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_complete AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_display_and_wait AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment_info AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie_field AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_complete AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_flow AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_profile AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_state AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_network AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_bridges_contacts; + +CREATE TYPE beeper_desktop_api_matrix_bridges_contacts.contact_list_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_contacts.contact_list_response_contact AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_bridges_users; + +CREATE TYPE beeper_desktop_api_matrix_bridges_users.user_resolve_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_users.user_search_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_users.user_search_response_result AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_bridges_rooms; + +CREATE TYPE beeper_desktop_api_matrix_bridges_rooms.room_create_dm_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_rooms.room_create_group_response AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_avatar AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_disappear AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_name AS (); +CREATE TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_topic AS (); + +CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_matrix_bridges_capabilities; + CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_chats; CREATE TYPE beeper_desktop_api_chats.chat AS (); CREATE TYPE beeper_desktop_api_chats.chat_participant AS (); +CREATE TYPE beeper_desktop_api_chats.chat_participant_item AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_message_request AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_participant_action AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_state AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_state_avatar AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_state_description AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_state_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_capability_state_title AS (); +CREATE TYPE beeper_desktop_api_chats.chat_draft AS (); +CREATE TYPE beeper_desktop_api_chats.chat_reminder AS (); +CREATE TYPE beeper_desktop_api_chats.chat_snooze AS (); CREATE TYPE beeper_desktop_api_chats.chat_create_response AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_participant AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_participant_item AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_message_request AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_participant_action AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_state AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_state_avatar AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_state_description AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_state_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_capability_state_title AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_draft AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_reminder AS (); +CREATE TYPE beeper_desktop_api_chats.chat_create_response_snooze AS (); CREATE TYPE beeper_desktop_api_chats.chat_list_response AS (); CREATE TYPE beeper_desktop_api_chats.chat_list_response_participant AS (); -CREATE TYPE beeper_desktop_api_chats.create_params_user AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_participant_item AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_message_request AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_participant_action AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_state AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_state_avatar AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_state_description AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_state_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_capability_state_title AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_draft AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_reminder AS (); +CREATE TYPE beeper_desktop_api_chats.chat_list_response_snooze AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_participant AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_participant_item AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_message_request AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_participant_action AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_state AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_state_avatar AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_state_description AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_state_disappearing_timer AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_capability_state_title AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_draft AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_reminder AS (); +CREATE TYPE beeper_desktop_api_chats.chat_start_response_snooze AS (); +CREATE TYPE beeper_desktop_api_chats.update_params_draft AS (); +CREATE TYPE beeper_desktop_api_chats.start_params_user AS (); CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_chats_reminders; @@ -148,6 +499,9 @@ CREATE TYPE beeper_desktop_api_chats_messages_reactions.reaction_add_response AS CREATE SCHEMA IF NOT EXISTS beeper_desktop_api_messages; CREATE TYPE beeper_desktop_api_messages.message_update_response AS (); +CREATE TYPE beeper_desktop_api_messages.message_update_response_link AS (); +CREATE TYPE beeper_desktop_api_messages.message_update_response_link_img_size AS (); +CREATE TYPE beeper_desktop_api_messages.message_update_response_send_status AS (); CREATE TYPE beeper_desktop_api_messages.message_send_response AS (); CREATE TYPE beeper_desktop_api_messages.send_params_attachment AS (); CREATE TYPE beeper_desktop_api_messages.send_params_attachment_send_params_size AS (); diff --git a/sql/beeper_desktop_api.sql b/sql/beeper_desktop_api.sql index 8823ed2..c1abd21 100644 --- a/sql/beeper_desktop_api.sql +++ b/sql/beeper_desktop_api.sql @@ -1,3 +1,178 @@ +ALTER TYPE beeper_desktop_api.app_state_snapshot + ADD ATTRIBUTE e2ee beeper_desktop_api.app_state_snapshot_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api.app_state_snapshot_matrix, + ADD ATTRIBUTE verification beeper_desktop_api.app_state_snapshot_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot( + e2ee beeper_desktop_api.app_state_snapshot_e2ee, + state TEXT, + matrix beeper_desktop_api.app_state_snapshot_matrix DEFAULT NULL, + verification beeper_desktop_api.app_state_snapshot_verification DEFAULT NULL +) +RETURNS beeper_desktop_api.app_state_snapshot +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api.app_state_snapshot; +$$; + +ALTER TYPE beeper_desktop_api.app_state_snapshot_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api.app_state_snapshot_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api.app_state_snapshot_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api.app_state_snapshot_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api.app_state_snapshot_e2ee; +$$; + +ALTER TYPE beeper_desktop_api.app_state_snapshot_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api.app_state_snapshot_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api.app_state_snapshot_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api.app_state_snapshot_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api.app_state_snapshot_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api.app_state_snapshot_matrix; +$$; + +ALTER TYPE beeper_desktop_api.app_state_snapshot_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api.app_state_snapshot_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api.app_state_snapshot_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api.app_state_snapshot_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api.app_state_snapshot_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api.app_state_snapshot_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api.app_state_snapshot_verification; +$$; + +ALTER TYPE beeper_desktop_api.app_state_snapshot_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api.app_state_snapshot_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api.app_state_snapshot_verification_error; +$$; + +ALTER TYPE beeper_desktop_api.app_state_snapshot_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_app_state_snapshot_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api.app_state_snapshot_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api.app_state_snapshot_verification_sa; +$$; + ALTER TYPE beeper_desktop_api.attachment ADD ATTRIBUTE type TEXT, ADD ATTRIBUTE id TEXT, @@ -10,7 +185,8 @@ ALTER TYPE beeper_desktop_api.attachment ADD ATTRIBUTE mimeType TEXT, ADD ATTRIBUTE posterImg TEXT, ADD ATTRIBUTE size beeper_desktop_api.attachment_size, - ADD ATTRIBUTE srcURL TEXT; + ADD ATTRIBUTE srcURL TEXT, + ADD ATTRIBUTE transcription beeper_desktop_api.attachment_transcription; CREATE OR REPLACE FUNCTION beeper_desktop_api.make_attachment( type TEXT, @@ -24,7 +200,8 @@ CREATE OR REPLACE FUNCTION beeper_desktop_api.make_attachment( mimeType TEXT DEFAULT NULL, posterImg TEXT DEFAULT NULL, size beeper_desktop_api.attachment_size DEFAULT NULL, - srcURL TEXT DEFAULT NULL + srcURL TEXT DEFAULT NULL, + transcription beeper_desktop_api.attachment_transcription DEFAULT NULL ) RETURNS beeper_desktop_api.attachment LANGUAGE SQL @@ -42,7 +219,8 @@ AS $$ mimeType, posterImg, size, - srcURL + srcURL, + transcription )::beeper_desktop_api.attachment; $$; @@ -59,6 +237,23 @@ AS $$ SELECT ROW(height, width)::beeper_desktop_api.attachment_size; $$; +ALTER TYPE beeper_desktop_api.attachment_transcription + ADD ATTRIBUTE engine TEXT, + ADD ATTRIBUTE transcription TEXT, + ADD ATTRIBUTE language TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_attachment_transcription( + engine TEXT, transcription TEXT, language TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api.attachment_transcription +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + engine, transcription, language + )::beeper_desktop_api.attachment_transcription; +$$; + ALTER TYPE beeper_desktop_api.error ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE message TEXT, @@ -82,11 +277,18 @@ ALTER TYPE beeper_desktop_api.message ADD ATTRIBUTE sortKey TEXT, ADD ATTRIBUTE "timestamp" TIMESTAMP, ADD ATTRIBUTE attachments beeper_desktop_api.attachment[], + ADD ATTRIBUTE editedTimestamp TIMESTAMP, + ADD ATTRIBUTE isDeleted BOOLEAN, + ADD ATTRIBUTE isHidden BOOLEAN, ADD ATTRIBUTE isSender BOOLEAN, ADD ATTRIBUTE isUnread BOOLEAN, ADD ATTRIBUTE linkedMessageID TEXT, + ADD ATTRIBUTE links beeper_desktop_api.message_link[], + ADD ATTRIBUTE mentions TEXT[], ADD ATTRIBUTE reactions beeper_desktop_api.reaction[], + ADD ATTRIBUTE seen JSONB, ADD ATTRIBUTE senderName TEXT, + ADD ATTRIBUTE sendStatus beeper_desktop_api.message_send_status, ADD ATTRIBUTE text TEXT, ADD ATTRIBUTE type TEXT; @@ -98,11 +300,18 @@ CREATE OR REPLACE FUNCTION beeper_desktop_api.make_message( sortKey TEXT, "timestamp" TIMESTAMP, attachments beeper_desktop_api.attachment[] DEFAULT NULL, + editedTimestamp TIMESTAMP DEFAULT NULL, + isDeleted BOOLEAN DEFAULT NULL, + isHidden BOOLEAN DEFAULT NULL, isSender BOOLEAN DEFAULT NULL, isUnread BOOLEAN DEFAULT NULL, linkedMessageID TEXT DEFAULT NULL, + links beeper_desktop_api.message_link[] DEFAULT NULL, + mentions TEXT[] DEFAULT NULL, reactions beeper_desktop_api.reaction[] DEFAULT NULL, + seen JSONB DEFAULT NULL, senderName TEXT DEFAULT NULL, + sendStatus beeper_desktop_api.message_send_status DEFAULT NULL, text TEXT DEFAULT NULL, type TEXT DEFAULT NULL ) @@ -118,16 +327,88 @@ AS $$ sortKey, "timestamp", attachments, + editedTimestamp, + isDeleted, + isHidden, isSender, isUnread, linkedMessageID, + links, + mentions, reactions, + seen, senderName, + sendStatus, text, type )::beeper_desktop_api.message; $$; +ALTER TYPE beeper_desktop_api.message_link + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE url TEXT, + ADD ATTRIBUTE favicon TEXT, + ADD ATTRIBUTE img TEXT, + ADD ATTRIBUTE imgSize beeper_desktop_api.message_link_img_size, + ADD ATTRIBUTE originalURL TEXT, + ADD ATTRIBUTE summary TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_message_link( + title TEXT, + url TEXT, + favicon TEXT DEFAULT NULL, + img TEXT DEFAULT NULL, + imgSize beeper_desktop_api.message_link_img_size DEFAULT NULL, + originalURL TEXT DEFAULT NULL, + summary TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api.message_link +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + title, url, favicon, img, imgSize, originalURL, summary + )::beeper_desktop_api.message_link; +$$; + +ALTER TYPE beeper_desktop_api.message_link_img_size + ADD ATTRIBUTE height DOUBLE PRECISION, ADD ATTRIBUTE width DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_message_link_img_size( + height DOUBLE PRECISION DEFAULT NULL, width DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api.message_link_img_size +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(height, width)::beeper_desktop_api.message_link_img_size; +$$; + +ALTER TYPE beeper_desktop_api.message_send_status + ADD ATTRIBUTE status TEXT, + ADD ATTRIBUTE "timestamp" TIMESTAMP, + ADD ATTRIBUTE deliveredToUsers TEXT[], + ADD ATTRIBUTE internalError TEXT, + ADD ATTRIBUTE message TEXT, + ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api.make_message_send_status( + status TEXT, + "timestamp" TIMESTAMP, + deliveredToUsers TEXT[] DEFAULT NULL, + internalError TEXT DEFAULT NULL, + message TEXT DEFAULT NULL, + reason TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api.message_send_status +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + status, "timestamp", deliveredToUsers, internalError, message, reason + )::beeper_desktop_api.message_send_status; +$$; + ALTER TYPE beeper_desktop_api.reaction ADD ATTRIBUTE id TEXT, ADD ATTRIBUTE participantID TEXT, diff --git a/sql/beeper_desktop_api_accounts.sql b/sql/beeper_desktop_api_accounts.sql index 34100ee..5dc05ec 100644 --- a/sql/beeper_desktop_api_accounts.sql +++ b/sql/beeper_desktop_api_accounts.sql @@ -1,14 +1,35 @@ ALTER TYPE beeper_desktop_api_accounts.account - ADD ATTRIBUTE accountID TEXT, ADD ATTRIBUTE "user" beeper_desktop_api.user; + ADD ATTRIBUTE accountID TEXT, + ADD ATTRIBUTE bridge beeper_desktop_api_accounts.account_bridge, + ADD ATTRIBUTE "user" beeper_desktop_api.user, + ADD ATTRIBUTE network TEXT; CREATE OR REPLACE FUNCTION beeper_desktop_api_accounts.make_account( - accountID TEXT, "user" beeper_desktop_api.user + accountID TEXT, + bridge beeper_desktop_api_accounts.account_bridge, + "user" beeper_desktop_api.user, + network TEXT DEFAULT NULL ) RETURNS beeper_desktop_api_accounts.account LANGUAGE SQL IMMUTABLE AS $$ - SELECT ROW(accountID, "user")::beeper_desktop_api_accounts.account; + SELECT ROW( + accountID, bridge, "user", network + )::beeper_desktop_api_accounts.account; +$$; + +ALTER TYPE beeper_desktop_api_accounts.account_bridge + ADD ATTRIBUTE id TEXT, ADD ATTRIBUTE provider TEXT, ADD ATTRIBUTE type TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_accounts.make_account_bridge( + id TEXT, provider TEXT, type TEXT +) +RETURNS beeper_desktop_api_accounts.account_bridge +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(id, provider, type)::beeper_desktop_api_accounts.account_bridge; $$; CREATE OR REPLACE FUNCTION beeper_desktop_api_accounts._list() diff --git a/sql/beeper_desktop_api_app.sql b/sql/beeper_desktop_api_app.sql new file mode 100644 index 0000000..1b7c1af --- /dev/null +++ b/sql/beeper_desktop_api_app.sql @@ -0,0 +1,1307 @@ +ALTER TYPE beeper_desktop_api_app.login_registration_required_response + ADD ATTRIBUTE copy beeper_desktop_api_app.login_registration_required_response_copy, + ADD ATTRIBUTE leadToken TEXT, + ADD ATTRIBUTE registrationRequired BOOLEAN, + ADD ATTRIBUTE request TEXT, + ADD ATTRIBUTE usernameSuggestions TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_registration_required_response( + copy beeper_desktop_api_app.login_registration_required_response_copy, + leadToken TEXT, + registrationRequired BOOLEAN, + request TEXT, + usernameSuggestions TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_registration_required_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + copy, leadToken, registrationRequired, request, usernameSuggestions + )::beeper_desktop_api_app.login_registration_required_response; +$$; + +ALTER TYPE beeper_desktop_api_app.login_registration_required_response_copy + ADD ATTRIBUTE submit TEXT, + ADD ATTRIBUTE terms TEXT, + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE usernamePlaceholder TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_registration_required_response_copy( + submit TEXT, terms TEXT, title TEXT, usernamePlaceholder TEXT +) +RETURNS beeper_desktop_api_app.login_registration_required_response_copy +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + submit, terms, title, usernamePlaceholder + )::beeper_desktop_api_app.login_registration_required_response_copy; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response + ADD ATTRIBUTE appState beeper_desktop_api_app.login_response_app_state, + ADD ATTRIBUTE desktopAPI beeper_desktop_api_app.login_response_desktop_api, + ADD ATTRIBUTE matrix beeper_desktop_api_app.login_response_matrix; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response( + appState beeper_desktop_api_app.login_response_app_state, + desktopAPI beeper_desktop_api_app.login_response_desktop_api, + matrix beeper_desktop_api_app.login_response_matrix +) +RETURNS beeper_desktop_api_app.login_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, desktopAPI, matrix + )::beeper_desktop_api_app.login_response; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app.login_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app.login_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app.login_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state( + e2ee beeper_desktop_api_app.login_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app.login_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app.login_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app.login_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app.login_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app.login_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app.login_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app.login_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app.login_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.login_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app.login_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app.login_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app.login_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app.login_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app.login_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app.login_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app.login_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app.login_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app.login_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app.login_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_desktop_api + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE scope TEXT, + ADD ATTRIBUTE tokenType TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_desktop_api( + accessToken TEXT, scope TEXT, tokenType TEXT +) +RETURNS beeper_desktop_api_app.login_response_desktop_api +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, scope, tokenType + )::beeper_desktop_api_app.login_response_desktop_api; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_matrix + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_matrix( + accessToken TEXT, deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.login_response_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, deviceID, homeserver, userID + )::beeper_desktop_api_app.login_response_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output + ADD ATTRIBUTE appState beeper_desktop_api_app.login_response_output_app_state, + ADD ATTRIBUTE desktopAPI beeper_desktop_api_app.login_response_output_desktop_api, + ADD ATTRIBUTE matrix beeper_desktop_api_app.login_response_output_matrix, + ADD ATTRIBUTE copy beeper_desktop_api_app.login_response_output_copy, + ADD ATTRIBUTE leadToken TEXT, + ADD ATTRIBUTE registrationRequired BOOLEAN, + ADD ATTRIBUTE request TEXT, + ADD ATTRIBUTE usernameSuggestions TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output( + appState beeper_desktop_api_app.login_response_output_app_state DEFAULT NULL, + desktopAPI beeper_desktop_api_app.login_response_output_desktop_api DEFAULT NULL, + matrix beeper_desktop_api_app.login_response_output_matrix DEFAULT NULL, + copy beeper_desktop_api_app.login_response_output_copy DEFAULT NULL, + leadToken TEXT DEFAULT NULL, + registrationRequired BOOLEAN DEFAULT NULL, + request TEXT DEFAULT NULL, + usernameSuggestions TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_output +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, + desktopAPI, + matrix, + copy, + leadToken, + registrationRequired, + request, + usernameSuggestions + )::beeper_desktop_api_app.login_response_output; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app.login_response_output_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app.login_response_output_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app.login_response_output_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state( + e2ee beeper_desktop_api_app.login_response_output_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app.login_response_output_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app.login_response_output_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_output_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app.login_response_output_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app.login_response_output_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app.login_response_output_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_output_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app.login_response_output_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app.login_response_output_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app.login_response_output_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.login_response_output_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app.login_response_output_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app.login_response_output_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app.login_response_output_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app.login_response_output_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app.login_response_output_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app.login_response_output_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app.login_response_output_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app.login_response_output_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app.login_response_output_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app.login_response_output_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app.login_response_output_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_desktop_api + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE scope TEXT, + ADD ATTRIBUTE tokenType TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_desktop_api( + accessToken TEXT, scope TEXT, tokenType TEXT +) +RETURNS beeper_desktop_api_app.login_response_output_desktop_api +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, scope, tokenType + )::beeper_desktop_api_app.login_response_output_desktop_api; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_matrix + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_matrix( + accessToken TEXT, deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.login_response_output_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, deviceID, homeserver, userID + )::beeper_desktop_api_app.login_response_output_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.login_response_output_copy + ADD ATTRIBUTE submit TEXT, + ADD ATTRIBUTE terms TEXT, + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE usernamePlaceholder TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_login_response_output_copy( + submit TEXT, terms TEXT, title TEXT, usernamePlaceholder TEXT +) +RETURNS beeper_desktop_api_app.login_response_output_copy +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + submit, terms, title, usernamePlaceholder + )::beeper_desktop_api_app.login_response_output_copy; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response + ADD ATTRIBUTE appState beeper_desktop_api_app.recovery_code_reset_response_app_state, + ADD ATTRIBUTE recoveryCode TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response( + appState beeper_desktop_api_app.recovery_code_reset_response_app_state, + recoveryCode TEXT +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, recoveryCode + )::beeper_desktop_api_app.recovery_code_reset_response; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app.recovery_code_reset_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app.recovery_code_reset_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state( + e2ee beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app.recovery_code_reset_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app.recovery_code_reset_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app.recovery_code_reset_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app.recovery_code_reset_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app.recovery_code_reset_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app.recovery_code_reset_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_recovery_code_reset_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app.recovery_code_reset_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response + ADD ATTRIBUTE appState beeper_desktop_api_app.start_verification_response_app_state, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response( + appState beeper_desktop_api_app.start_verification_response_app_state, + verificationID TEXT +) +RETURNS beeper_desktop_api_app.start_verification_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, verificationID + )::beeper_desktop_api_app.start_verification_response; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app.start_verification_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app.start_verification_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app.start_verification_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state( + e2ee beeper_desktop_api_app.start_verification_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app.start_verification_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app.start_verification_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app.start_verification_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app.start_verification_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app.start_verification_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app.start_verification_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app.start_verification_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app.start_verification_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app.start_verification_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app.start_verification_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app.start_verification_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app.start_verification_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app.start_verification_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app.start_verification_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app.start_verification_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_start_verification_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app.start_verification_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app.start_verification_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response + ADD ATTRIBUTE appState beeper_desktop_api_app.state_mutation_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response( + appState beeper_desktop_api_app.state_mutation_response_app_state +) +RETURNS beeper_desktop_api_app.state_mutation_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(appState)::beeper_desktop_api_app.state_mutation_response; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app.state_mutation_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app.state_mutation_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app.state_mutation_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state( + e2ee beeper_desktop_api_app.state_mutation_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app.state_mutation_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app.state_mutation_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app.state_mutation_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app.state_mutation_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app.state_mutation_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app.state_mutation_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app.state_mutation_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app.state_mutation_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app.state_mutation_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app.state_mutation_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app.state_mutation_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app.state_mutation_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app.state_mutation_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app.state_mutation_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app.state_mutation_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_state_mutation_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app.state_mutation_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app.state_mutation_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response + ADD ATTRIBUTE e2ee beeper_desktop_api_app.app_status_response_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app.app_status_response_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app.app_status_response_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response( + e2ee beeper_desktop_api_app.app_status_response_e2ee, + state TEXT, + matrix beeper_desktop_api_app.app_status_response_matrix DEFAULT NULL, + verification beeper_desktop_api_app.app_status_response_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app.app_status_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app.app_status_response; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app.app_status_response_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app.app_status_response_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app.app_status_response_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app.app_status_response_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app.app_status_response_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app.app_status_response_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app.app_status_response_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app.app_status_response_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app.app_status_response_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app.app_status_response_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app.app_status_response_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app.app_status_response_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app.app_status_response_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app.app_status_response_verification; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app.app_status_response_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app.app_status_response_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app.app_status_response_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.make_app_status_response_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app.app_status_response_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app.app_status_response_verification_sa; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app._status() +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.with_raw_response.status() + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app.status() +RETURNS beeper_desktop_api_app.app_status_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app.app_status_response, + beeper_desktop_api_app._status() + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_app_e2ee_recovery_code.sql b/sql/beeper_desktop_api_app_e2ee_recovery_code.sql new file mode 100644 index 0000000..3117f2f --- /dev/null +++ b/sql/beeper_desktop_api_app_e2ee_recovery_code.sql @@ -0,0 +1,439 @@ +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_mark_backed_up_response( + appState beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_mark_backed_up_response_app_state( + e2ee beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_mark_backed_up_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.mke_recovery_code_mark_backed_up_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_mark_backed_up_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_recovery_code.rcovery_cde_mrk_backed_up_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.mke_rcovery_code_mark_backed_up_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_recovery_code.rcovery_cde_mrk_backed_up_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.rcovery_cde_mrk_backed_up_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.mke_rcovery_cde_mrk_bcked_up_rsponse_app_stte_vrification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.rcovery_cde_mrk_backed_up_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_recovery_code.rcovery_cde_mrk_backed_up_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.mke_rcovery_cde_mrk_bcked_up_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response( + appState beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state( + e2ee beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.make_recovery_code_verify_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response_app_state_verification_sa; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code._mark_backed_up( + +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.recovery_code.with_raw_response.mark_backed_up() + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.mark_backed_up( + +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_mark_backed_up_response, + beeper_desktop_api_app_e2ee_recovery_code._mark_backed_up() + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code._verify( + recovery_code TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.recovery_code.with_raw_response.verify( + recovery_code=recovery_code, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code.verify( + recovery_code TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_recovery_code.recovery_code_verify_response, + beeper_desktop_api_app_e2ee_recovery_code._verify(recovery_code) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_app_e2ee_recovery_code_reset.sql b/sql/beeper_desktop_api_app_e2ee_recovery_code_reset.sql new file mode 100644 index 0000000..d0bd4e6 --- /dev/null +++ b/sql/beeper_desktop_api_app_e2ee_recovery_code_reset.sql @@ -0,0 +1,445 @@ +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state, + ADD ATTRIBUTE recoveryCode TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response( + appState beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state, + recoveryCode TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, recoveryCode + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state( + e2ee beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_create_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response( + appState beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state( + e2ee beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.make_reset_confirm_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response_app_state_verification_sa; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset._create( + recovery_code TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.recovery_code.reset.with_raw_response.create( + recovery_code=not_given if recovery_code is None else recovery_code, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.create( + recovery_code TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_create_response, + beeper_desktop_api_app_e2ee_recovery_code_reset._create(recovery_code) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset._confirm( + recovery_code TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.recovery_code.reset.with_raw_response.confirm( + recovery_code=recovery_code, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_recovery_code_reset.confirm( + recovery_code TEXT +) +RETURNS beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_recovery_code_reset.reset_confirm_response, + beeper_desktop_api_app_e2ee_recovery_code_reset._confirm(recovery_code) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_app_e2ee_verification.sql b/sql/beeper_desktop_api_app_e2ee_verification.sql new file mode 100644 index 0000000..5a0c903 --- /dev/null +++ b/sql/beeper_desktop_api_app_e2ee_verification.sql @@ -0,0 +1,672 @@ +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response( + appState beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state, + verificationID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, verificationID + )::beeper_desktop_api_app_e2ee_verification.verification_create_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_create_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification.verification_create_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response( + appState beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_accept_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification.verification_accept_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response( + appState beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.make_verification_cancel_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification.verification_cancel_response_app_state_verification_sa; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification._create( + user_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.with_raw_response.create( + user_id=not_given if user_id is None else user_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.create( + user_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_create_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification.verification_create_response, + beeper_desktop_api_app_e2ee_verification._create(user_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification._accept( + verification_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.with_raw_response.accept( + verification_id=verification_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.accept( + verification_id TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_accept_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification.verification_accept_response, + beeper_desktop_api_app_e2ee_verification._accept(verification_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification._cancel( + verification_id TEXT, code TEXT DEFAULT NULL, reason TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.with_raw_response.cancel( + verification_id=verification_id, + code=not_given if code is None else code, + reason=not_given if reason is None else reason, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification.cancel( + verification_id TEXT, code TEXT DEFAULT NULL, reason TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification.verification_cancel_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification.verification_cancel_response, + beeper_desktop_api_app_e2ee_verification._cancel( + verification_id, code, reason + ) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_app_e2ee_verification_qr.sql b/sql/beeper_desktop_api_app_e2ee_verification_qr.sql new file mode 100644 index 0000000..af42bbd --- /dev/null +++ b/sql/beeper_desktop_api_app_e2ee_verification_qr.sql @@ -0,0 +1,443 @@ +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response( + appState beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_confirm_scanned_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response( + appState beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.make_qr_scan_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response_app_state_verification_sa; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr._confirm_scanned( + verification_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.qr.with_raw_response.confirm_scanned( + verification_id=verification_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.confirm_scanned( + verification_id TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification_qr.qr_confirm_scanned_response, + beeper_desktop_api_app_e2ee_verification_qr._confirm_scanned( + verification_id + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr._scan( + data TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.qr.with_raw_response.scan( + data=data, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_qr.scan( + data TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification_qr.qr_scan_response, + beeper_desktop_api_app_e2ee_verification_qr._scan(data) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_app_e2ee_verification_sas.sql b/sql/beeper_desktop_api_app_e2ee_verification_sas.sql new file mode 100644 index 0000000..59e4a85 --- /dev/null +++ b/sql/beeper_desktop_api_app_e2ee_verification_sas.sql @@ -0,0 +1,441 @@ +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response( + appState beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_confirm_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response + ADD ATTRIBUTE appState beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response( + appState beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state( + e2ee beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.make_sa_start_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response_app_state_verification_sa; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas._confirm( + verification_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.sas.with_raw_response.confirm( + verification_id=verification_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.confirm( + verification_id TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification_sas.sa_confirm_response, + beeper_desktop_api_app_e2ee_verification_sas._confirm(verification_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas._start( + verification_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.e2ee.verification.sas.with_raw_response.start( + verification_id=verification_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_e2ee_verification_sas.start( + verification_id TEXT +) +RETURNS beeper_desktop_api_app_e2ee_verification_sas.sa_start_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_e2ee_verification_sas.sa_start_response, + beeper_desktop_api_app_e2ee_verification_sas._start(verification_id) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_app_login.sql b/sql/beeper_desktop_api_app_login.sql new file mode 100644 index 0000000..1027d84 --- /dev/null +++ b/sql/beeper_desktop_api_app_login.sql @@ -0,0 +1,627 @@ +ALTER TYPE beeper_desktop_api_app_login.login_register_response + ADD ATTRIBUTE appState beeper_desktop_api_app_login.login_register_response_app_state, + ADD ATTRIBUTE desktopAPI beeper_desktop_api_app_login.login_register_response_desktop_api, + ADD ATTRIBUTE matrix beeper_desktop_api_app_login.login_register_response_matrix; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response( + appState beeper_desktop_api_app_login.login_register_response_app_state, + desktopAPI beeper_desktop_api_app_login.login_register_response_desktop_api, + matrix beeper_desktop_api_app_login.login_register_response_matrix +) +RETURNS beeper_desktop_api_app_login.login_register_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, desktopAPI, matrix + )::beeper_desktop_api_app_login.login_register_response; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_login.login_register_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_login.login_register_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_login.login_register_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state( + e2ee beeper_desktop_api_app_login.login_register_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_login.login_register_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_login.login_register_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_login.login_register_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_login.login_register_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_login.login_register_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_login.login_register_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_login.login_register_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_login.login_register_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_login.login_register_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_login.login_register_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_login.login_register_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_login.login_register_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_login.login_register_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_login.login_register_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_login.login_register_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_login.login_register_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_desktop_api + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE scope TEXT, + ADD ATTRIBUTE tokenType TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_desktop_api( + accessToken TEXT, scope TEXT, tokenType TEXT +) +RETURNS beeper_desktop_api_app_login.login_register_response_desktop_api +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, scope, tokenType + )::beeper_desktop_api_app_login.login_register_response_desktop_api; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_register_response_matrix + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_register_response_matrix( + accessToken TEXT, deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_login.login_register_response_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, deviceID, homeserver, userID + )::beeper_desktop_api_app_login.login_register_response_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response + ADD ATTRIBUTE appState beeper_desktop_api_app_login.login_response_response_app_state, + ADD ATTRIBUTE desktopAPI beeper_desktop_api_app_login.login_response_response_desktop_api, + ADD ATTRIBUTE matrix beeper_desktop_api_app_login.login_response_response_matrix, + ADD ATTRIBUTE copy beeper_desktop_api_app_login.login_response_response_copy, + ADD ATTRIBUTE leadToken TEXT, + ADD ATTRIBUTE registrationRequired BOOLEAN, + ADD ATTRIBUTE request TEXT, + ADD ATTRIBUTE usernameSuggestions TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response( + appState beeper_desktop_api_app_login.login_response_response_app_state DEFAULT NULL, + desktopAPI beeper_desktop_api_app_login.login_response_response_desktop_api DEFAULT NULL, + matrix beeper_desktop_api_app_login.login_response_response_matrix DEFAULT NULL, + copy beeper_desktop_api_app_login.login_response_response_copy DEFAULT NULL, + leadToken TEXT DEFAULT NULL, + registrationRequired BOOLEAN DEFAULT NULL, + request TEXT DEFAULT NULL, + usernameSuggestions TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_response_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + appState, + desktopAPI, + matrix, + copy, + leadToken, + registrationRequired, + request, + usernameSuggestions + )::beeper_desktop_api_app_login.login_response_response; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state + ADD ATTRIBUTE e2ee beeper_desktop_api_app_login.login_response_response_app_state_e2ee, + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE matrix beeper_desktop_api_app_login.login_response_response_app_state_matrix, + ADD ATTRIBUTE verification beeper_desktop_api_app_login.login_response_response_app_state_verification; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state( + e2ee beeper_desktop_api_app_login.login_response_response_app_state_e2ee, + state TEXT, + matrix beeper_desktop_api_app_login.login_response_response_app_state_matrix DEFAULT NULL, + verification beeper_desktop_api_app_login.login_response_response_app_state_verification DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + e2ee, state, matrix, verification + )::beeper_desktop_api_app_login.login_response_response_app_state; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state_e2ee + ADD ATTRIBUTE crossSigning BOOLEAN, + ADD ATTRIBUTE firstSyncDone BOOLEAN, + ADD ATTRIBUTE hasBackedUpCode BOOLEAN, + ADD ATTRIBUTE initialized BOOLEAN, + ADD ATTRIBUTE keyBackup BOOLEAN, + ADD ATTRIBUTE secrets beeper_desktop_api_app_login.login_response_response_app_state_e2ee_secret, + ADD ATTRIBUTE secretStorage BOOLEAN, + ADD ATTRIBUTE verified BOOLEAN, + ADD ATTRIBUTE recoveryCodeGeneratedAt DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state_e2ee( + crossSigning BOOLEAN, + firstSyncDone BOOLEAN, + hasBackedUpCode BOOLEAN, + initialized BOOLEAN, + keyBackup BOOLEAN, + secrets beeper_desktop_api_app_login.login_response_response_app_state_e2ee_secret, + secretStorage BOOLEAN, + verified BOOLEAN, + recoveryCodeGeneratedAt DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state_e2ee +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + crossSigning, + firstSyncDone, + hasBackedUpCode, + initialized, + keyBackup, + secrets, + secretStorage, + verified, + recoveryCodeGeneratedAt + )::beeper_desktop_api_app_login.login_response_response_app_state_e2ee; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state_e2ee_secret + ADD ATTRIBUTE masterKey BOOLEAN, + ADD ATTRIBUTE megolmBackupKey BOOLEAN, + ADD ATTRIBUTE recoveryCode BOOLEAN, + ADD ATTRIBUTE selfSigningKey BOOLEAN, + ADD ATTRIBUTE userSigningKey BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state_e2ee_secret( + masterKey BOOLEAN, + megolmBackupKey BOOLEAN, + recoveryCode BOOLEAN, + selfSigningKey BOOLEAN, + userSigningKey BOOLEAN +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state_e2ee_secret +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + masterKey, megolmBackupKey, recoveryCode, selfSigningKey, userSigningKey + )::beeper_desktop_api_app_login.login_response_response_app_state_e2ee_secret; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state_matrix + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state_matrix( + deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + deviceID, homeserver, userID + )::beeper_desktop_api_app_login.login_response_response_app_state_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state_verification + ADD ATTRIBUTE availableActions TEXT[], + ADD ATTRIBUTE state TEXT, + ADD ATTRIBUTE error beeper_desktop_api_app_login.login_response_response_app_state_verification_error, + ADD ATTRIBUTE "from" TEXT, + ADD ATTRIBUTE fromDevice TEXT, + ADD ATTRIBUTE otherDevice TEXT, + ADD ATTRIBUTE qrData TEXT, + ADD ATTRIBUTE sas beeper_desktop_api_app_login.login_response_response_app_state_verification_sa, + ADD ATTRIBUTE supportsSAS BOOLEAN, + ADD ATTRIBUTE supportsScanQRCode BOOLEAN, + ADD ATTRIBUTE verificationID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state_verification( + availableActions TEXT[], + state TEXT, + error beeper_desktop_api_app_login.login_response_response_app_state_verification_error DEFAULT NULL, + "from" TEXT DEFAULT NULL, + fromDevice TEXT DEFAULT NULL, + otherDevice TEXT DEFAULT NULL, + qrData TEXT DEFAULT NULL, + sas beeper_desktop_api_app_login.login_response_response_app_state_verification_sa DEFAULT NULL, + supportsSAS BOOLEAN DEFAULT NULL, + supportsScanQRCode BOOLEAN DEFAULT NULL, + verificationID TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state_verification +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + availableActions, + state, + error, + "from", + fromDevice, + otherDevice, + qrData, + sas, + supportsSAS, + supportsScanQRCode, + verificationID + )::beeper_desktop_api_app_login.login_response_response_app_state_verification; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state_verification_error + ADD ATTRIBUTE code TEXT, ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state_verification_error( + code TEXT, reason TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state_verification_error +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + code, reason + )::beeper_desktop_api_app_login.login_response_response_app_state_verification_error; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_app_state_verification_sa + ADD ATTRIBUTE decimals TEXT, ADD ATTRIBUTE emojis TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_app_state_verification_sa( + decimals TEXT, emojis TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response_app_state_verification_sa +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + decimals, emojis + )::beeper_desktop_api_app_login.login_response_response_app_state_verification_sa; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_desktop_api + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE scope TEXT, + ADD ATTRIBUTE tokenType TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_desktop_api( + accessToken TEXT, scope TEXT, tokenType TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response_desktop_api +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, scope, tokenType + )::beeper_desktop_api_app_login.login_response_response_desktop_api; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_matrix + ADD ATTRIBUTE accessToken TEXT, + ADD ATTRIBUTE deviceID TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE userID TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_matrix( + accessToken TEXT, deviceID TEXT, homeserver TEXT, userID TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response_matrix +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accessToken, deviceID, homeserver, userID + )::beeper_desktop_api_app_login.login_response_response_matrix; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_response_response_copy + ADD ATTRIBUTE submit TEXT, + ADD ATTRIBUTE terms TEXT, + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE usernamePlaceholder TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_response_response_copy( + submit TEXT, terms TEXT, title TEXT, usernamePlaceholder TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response_copy +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + submit, terms, title, usernamePlaceholder + )::beeper_desktop_api_app_login.login_response_response_copy; +$$; + +ALTER TYPE beeper_desktop_api_app_login.login_start_response + ADD ATTRIBUTE request TEXT, ADD ATTRIBUTE type TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.make_login_start_response( + request TEXT, type TEXT[] +) +RETURNS beeper_desktop_api_app_login.login_start_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(request, type)::beeper_desktop_api_app_login.login_start_response; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login._email( + email TEXT, request TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.login.with_raw_response.email( + email=email, + request=request, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.email( + email TEXT, request TEXT +) +RETURNS JSONB +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_app_login._email(email, request); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login._register( + accept_terms BOOLEAN, lead_token TEXT, request TEXT, username TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.login.with_raw_response.register( + accept_terms=accept_terms, + lead_token=lead_token, + request=request, + username=username, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.register( + accept_terms BOOLEAN, lead_token TEXT, request TEXT, username TEXT +) +RETURNS beeper_desktop_api_app_login.login_register_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_login.login_register_response, + beeper_desktop_api_app_login._register( + accept_terms, lead_token, request, username + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login._response( + request TEXT, response TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.login.with_raw_response.response( + request=request, + response=response, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.response( + request TEXT, response TEXT +) +RETURNS beeper_desktop_api_app_login.login_response_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_login.login_response_response, + beeper_desktop_api_app_login._response(request, response) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login._start() +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.app.login.with_raw_response.start() + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_app_login.start() +RETURNS beeper_desktop_api_app_login.login_start_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_app_login.login_start_response, + beeper_desktop_api_app_login._start() + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_assets.sql b/sql/beeper_desktop_api_assets.sql index 3e5ed45..8ed4508 100644 --- a/sql/beeper_desktop_api_assets.sql +++ b/sql/beeper_desktop_api_assets.sql @@ -117,23 +117,30 @@ AS $$ $$; CREATE OR REPLACE FUNCTION beeper_desktop_api_assets._serve(url TEXT) -RETURNS VOID +RETURNS JSONB LANGUAGE plpython3u STABLE AS $$ - GD["__beeper_desktop_api_context__"].client.assets.serve( + response = GD["__beeper_desktop_api_context__"].client.assets.with_raw_response.serve( url=url, ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() $$; CREATE OR REPLACE FUNCTION beeper_desktop_api_assets.serve(url TEXT) -RETURNS VOID +RETURNS BYTEA LANGUAGE plpgsql STABLE AS $$ BEGIN PERFORM beeper_desktop_api_internal.ensure_context(); - PERFORM beeper_desktop_api_assets._serve(url); + RETURN jsonb_populate_record( + NULL::BYTEA, beeper_desktop_api_assets._serve(url) + ); END; $$; diff --git a/sql/beeper_desktop_api_bridges.sql b/sql/beeper_desktop_api_bridges.sql new file mode 100644 index 0000000..8eaf178 --- /dev/null +++ b/sql/beeper_desktop_api_bridges.sql @@ -0,0 +1,90 @@ +ALTER TYPE beeper_desktop_api_bridges.bridge_availability + ADD ATTRIBUTE accounts beeper_desktop_api_accounts.account[], + ADD ATTRIBUTE activeAccountCount BIGINT, + ADD ATTRIBUTE bridge beeper_desktop_api_bridges.bridge_availability_bridge, + ADD ATTRIBUTE displayName TEXT, + ADD ATTRIBUTE loginMode TEXT, + ADD ATTRIBUTE status TEXT, + ADD ATTRIBUTE network TEXT, + ADD ATTRIBUTE statusText TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_bridges.make_bridge_availability( + accounts beeper_desktop_api_accounts.account[], + activeAccountCount BIGINT, + bridge beeper_desktop_api_bridges.bridge_availability_bridge, + displayName TEXT, + loginMode TEXT, + status TEXT, + network TEXT DEFAULT NULL, + statusText TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_bridges.bridge_availability +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + accounts, + activeAccountCount, + bridge, + displayName, + loginMode, + status, + network, + statusText + )::beeper_desktop_api_bridges.bridge_availability; +$$; + +ALTER TYPE beeper_desktop_api_bridges.bridge_availability_bridge + ADD ATTRIBUTE id TEXT, ADD ATTRIBUTE provider TEXT, ADD ATTRIBUTE type TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_bridges.make_bridge_availability_bridge( + id TEXT, provider TEXT, type TEXT +) +RETURNS beeper_desktop_api_bridges.bridge_availability_bridge +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, provider, type + )::beeper_desktop_api_bridges.bridge_availability_bridge; +$$; + +ALTER TYPE beeper_desktop_api_bridges.bridge_list_response + ADD ATTRIBUTE items beeper_desktop_api_bridges.bridge_availability[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_bridges.make_bridge_list_response( + items beeper_desktop_api_bridges.bridge_availability[] +) +RETURNS beeper_desktop_api_bridges.bridge_list_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(items)::beeper_desktop_api_bridges.bridge_list_response; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_bridges._list() +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.bridges.with_raw_response.list() + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_bridges.list() +RETURNS beeper_desktop_api_bridges.bridge_list_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_bridges.bridge_list_response, + beeper_desktop_api_bridges._list() + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_chats.sql b/sql/beeper_desktop_api_chats.sql index f7e06b8..4a6a8e0 100644 --- a/sql/beeper_desktop_api_chats.sql +++ b/sql/beeper_desktop_api_chats.sql @@ -1,179 +1,1748 @@ ALTER TYPE beeper_desktop_api_chats.chat ADD ATTRIBUTE id TEXT, ADD ATTRIBUTE accountID TEXT, + ADD ATTRIBUTE network TEXT, ADD ATTRIBUTE participants beeper_desktop_api_chats.chat_participant, ADD ATTRIBUTE title TEXT, ADD ATTRIBUTE type TEXT, ADD ATTRIBUTE unreadCount BIGINT, + ADD ATTRIBUTE capabilities beeper_desktop_api_chats.chat_capability, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE draft beeper_desktop_api_chats.chat_draft, + ADD ATTRIBUTE imgURL TEXT, ADD ATTRIBUTE isArchived BOOLEAN, + ADD ATTRIBUTE isLowPriority BOOLEAN, + ADD ATTRIBUTE isMarkedUnread BOOLEAN, ADD ATTRIBUTE isMuted BOOLEAN, ADD ATTRIBUTE isPinned BOOLEAN, + ADD ATTRIBUTE isReadOnly BOOLEAN, ADD ATTRIBUTE lastActivity TIMESTAMP, ADD ATTRIBUTE lastReadMessageSortKey TEXT, - ADD ATTRIBUTE localChatID TEXT; + ADD ATTRIBUTE localChatID TEXT, + ADD ATTRIBUTE messageExpirySeconds BIGINT, + ADD ATTRIBUTE reminder beeper_desktop_api_chats.chat_reminder, + ADD ATTRIBUTE snooze beeper_desktop_api_chats.chat_snooze, + ADD ATTRIBUTE unreadMentionsCount BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat( + id TEXT, + accountID TEXT, + network TEXT, + participants beeper_desktop_api_chats.chat_participant, + title TEXT, + type TEXT, + unreadCount BIGINT, + capabilities beeper_desktop_api_chats.chat_capability DEFAULT NULL, + description TEXT DEFAULT NULL, + draft beeper_desktop_api_chats.chat_draft DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isArchived BOOLEAN DEFAULT NULL, + isLowPriority BOOLEAN DEFAULT NULL, + isMarkedUnread BOOLEAN DEFAULT NULL, + isMuted BOOLEAN DEFAULT NULL, + isPinned BOOLEAN DEFAULT NULL, + isReadOnly BOOLEAN DEFAULT NULL, + lastActivity TIMESTAMP DEFAULT NULL, + lastReadMessageSortKey TEXT DEFAULT NULL, + localChatID TEXT DEFAULT NULL, + messageExpirySeconds BIGINT DEFAULT NULL, + reminder beeper_desktop_api_chats.chat_reminder DEFAULT NULL, + snooze beeper_desktop_api_chats.chat_snooze DEFAULT NULL, + unreadMentionsCount BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + accountID, + network, + participants, + title, + type, + unreadCount, + capabilities, + description, + draft, + imgURL, + isArchived, + isLowPriority, + isMarkedUnread, + isMuted, + isPinned, + isReadOnly, + lastActivity, + lastReadMessageSortKey, + localChatID, + messageExpirySeconds, + reminder, + snooze, + unreadMentionsCount + )::beeper_desktop_api_chats.chat; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_participant + ADD ATTRIBUTE hasMore BOOLEAN, + ADD ATTRIBUTE items beeper_desktop_api_chats.chat_participant_item[], + ADD ATTRIBUTE total BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_participant( + hasMore BOOLEAN, + items beeper_desktop_api_chats.chat_participant_item[], + total BIGINT +) +RETURNS beeper_desktop_api_chats.chat_participant +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(hasMore, items, total)::beeper_desktop_api_chats.chat_participant; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_participant_item + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE cannotMessage BOOLEAN, + ADD ATTRIBUTE email TEXT, + ADD ATTRIBUTE fullName TEXT, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isSelf BOOLEAN, + ADD ATTRIBUTE phoneNumber TEXT, + ADD ATTRIBUTE username TEXT, + ADD ATTRIBUTE isAdmin BOOLEAN, + ADD ATTRIBUTE isNetworkBot BOOLEAN, + ADD ATTRIBUTE isPending BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_participant_item( + id TEXT, + cannotMessage BOOLEAN DEFAULT NULL, + email TEXT DEFAULT NULL, + fullName TEXT DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isSelf BOOLEAN DEFAULT NULL, + phoneNumber TEXT DEFAULT NULL, + username TEXT DEFAULT NULL, + isAdmin BOOLEAN DEFAULT NULL, + isNetworkBot BOOLEAN DEFAULT NULL, + isPending BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_participant_item +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + cannotMessage, + email, + fullName, + imgURL, + isSelf, + phoneNumber, + username, + isAdmin, + isNetworkBot, + isPending + )::beeper_desktop_api_chats.chat_participant_item; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability + ADD ATTRIBUTE allowedReactions TEXT[], + ADD ATTRIBUTE archive BOOLEAN, + ADD ATTRIBUTE attachments JSONB, + ADD ATTRIBUTE customEmojiReactions BOOLEAN, + ADD ATTRIBUTE delete BIGINT, + ADD ATTRIBUTE deleteChat BOOLEAN, + ADD ATTRIBUTE deleteChatForEveryone BOOLEAN, + ADD ATTRIBUTE deleteForMe BOOLEAN, + ADD ATTRIBUTE deleteMaxAge BIGINT, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_capability_disappearing_timer, + ADD ATTRIBUTE edit BIGINT, + ADD ATTRIBUTE editMaxAge BIGINT, + ADD ATTRIBUTE editMaxCount BIGINT, + ADD ATTRIBUTE formatting JSONB, + ADD ATTRIBUTE locationMessage BIGINT, + ADD ATTRIBUTE markAsUnread BOOLEAN, + ADD ATTRIBUTE maxTextLength BIGINT, + ADD ATTRIBUTE messageRequest beeper_desktop_api_chats.chat_capability_message_request, + ADD ATTRIBUTE participantActions beeper_desktop_api_chats.chat_capability_participant_action, + ADD ATTRIBUTE poll BIGINT, + ADD ATTRIBUTE reaction BIGINT, + ADD ATTRIBUTE reactionCount BIGINT, + ADD ATTRIBUTE readReceipts BOOLEAN, + ADD ATTRIBUTE reply BIGINT, + ADD ATTRIBUTE state beeper_desktop_api_chats.chat_capability_state, + ADD ATTRIBUTE thread BIGINT, + ADD ATTRIBUTE typingNotifications BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability( + allowedReactions TEXT[] DEFAULT NULL, + archive BOOLEAN DEFAULT NULL, + attachments JSONB DEFAULT NULL, + customEmojiReactions BOOLEAN DEFAULT NULL, + delete BIGINT DEFAULT NULL, + deleteChat BOOLEAN DEFAULT NULL, + deleteChatForEveryone BOOLEAN DEFAULT NULL, + deleteForMe BOOLEAN DEFAULT NULL, + deleteMaxAge BIGINT DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_capability_disappearing_timer DEFAULT NULL, + edit BIGINT DEFAULT NULL, + editMaxAge BIGINT DEFAULT NULL, + editMaxCount BIGINT DEFAULT NULL, + formatting JSONB DEFAULT NULL, + locationMessage BIGINT DEFAULT NULL, + markAsUnread BOOLEAN DEFAULT NULL, + maxTextLength BIGINT DEFAULT NULL, + messageRequest beeper_desktop_api_chats.chat_capability_message_request DEFAULT NULL, + participantActions beeper_desktop_api_chats.chat_capability_participant_action DEFAULT NULL, + poll BIGINT DEFAULT NULL, + reaction BIGINT DEFAULT NULL, + reactionCount BIGINT DEFAULT NULL, + readReceipts BOOLEAN DEFAULT NULL, + reply BIGINT DEFAULT NULL, + state beeper_desktop_api_chats.chat_capability_state DEFAULT NULL, + thread BIGINT DEFAULT NULL, + typingNotifications BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_capability +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + allowedReactions, + archive, + attachments, + customEmojiReactions, + delete, + deleteChat, + deleteChatForEveryone, + deleteForMe, + deleteMaxAge, + disappearingTimer, + edit, + editMaxAge, + editMaxCount, + formatting, + locationMessage, + markAsUnread, + maxTextLength, + messageRequest, + participantActions, + poll, + reaction, + reactionCount, + readReceipts, + reply, + state, + thread, + typingNotifications + )::beeper_desktop_api_chats.chat_capability; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_disappearing_timer + ADD ATTRIBUTE omitEmptyTimer BOOLEAN, + ADD ATTRIBUTE timers BIGINT[], + ADD ATTRIBUTE types TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_disappearing_timer( + omitEmptyTimer BOOLEAN DEFAULT NULL, + timers BIGINT[] DEFAULT NULL, + types TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_capability_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + omitEmptyTimer, timers, types + )::beeper_desktop_api_chats.chat_capability_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_message_request + ADD ATTRIBUTE acceptWithButton BIGINT, ADD ATTRIBUTE acceptWithMessage BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_message_request( + acceptWithButton BIGINT DEFAULT NULL, acceptWithMessage BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_capability_message_request +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + acceptWithButton, acceptWithMessage + )::beeper_desktop_api_chats.chat_capability_message_request; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_participant_action + ADD ATTRIBUTE ban BIGINT, + ADD ATTRIBUTE invite BIGINT, + ADD ATTRIBUTE kick BIGINT, + ADD ATTRIBUTE leave BIGINT, + ADD ATTRIBUTE revokeInvite BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_participant_action( + ban BIGINT DEFAULT NULL, + invite BIGINT DEFAULT NULL, + kick BIGINT DEFAULT NULL, + leave BIGINT DEFAULT NULL, + revokeInvite BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_capability_participant_action +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + ban, invite, kick, leave, revokeInvite + )::beeper_desktop_api_chats.chat_capability_participant_action; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_state + ADD ATTRIBUTE avatar beeper_desktop_api_chats.chat_capability_state_avatar, + ADD ATTRIBUTE description beeper_desktop_api_chats.chat_capability_state_description, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_capability_state_disappearing_timer, + ADD ATTRIBUTE title beeper_desktop_api_chats.chat_capability_state_title; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_state( + avatar beeper_desktop_api_chats.chat_capability_state_avatar DEFAULT NULL, + description beeper_desktop_api_chats.chat_capability_state_description DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_capability_state_disappearing_timer DEFAULT NULL, + title beeper_desktop_api_chats.chat_capability_state_title DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_capability_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + avatar, description, disappearingTimer, title + )::beeper_desktop_api_chats.chat_capability_state; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_state_avatar + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_state_avatar( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_capability_state_avatar +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(level)::beeper_desktop_api_chats.chat_capability_state_avatar; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_state_description + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_state_description( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_capability_state_description +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(level)::beeper_desktop_api_chats.chat_capability_state_description; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_state_disappearing_timer + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_state_disappearing_timer( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_capability_state_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_capability_state_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_capability_state_title + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_capability_state_title( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_capability_state_title +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(level)::beeper_desktop_api_chats.chat_capability_state_title; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_draft + ADD ATTRIBUTE text TEXT, ADD ATTRIBUTE attachments JSONB; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_draft( + text TEXT, attachments JSONB DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_draft +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(text, attachments)::beeper_desktop_api_chats.chat_draft; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_reminder + ADD ATTRIBUTE dismissOnIncomingMessage BOOLEAN, + ADD ATTRIBUTE remindAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_reminder( + dismissOnIncomingMessage BOOLEAN DEFAULT NULL, remindAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_reminder +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + dismissOnIncomingMessage, remindAt + )::beeper_desktop_api_chats.chat_reminder; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_snooze + ADD ATTRIBUTE snoozeUntil TIMESTAMP, ADD ATTRIBUTE userSnoozedAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_snooze( + snoozeUntil TIMESTAMP DEFAULT NULL, userSnoozedAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_snooze +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(snoozeUntil, userSnoozedAt)::beeper_desktop_api_chats.chat_snooze; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE accountID TEXT, + ADD ATTRIBUTE network TEXT, + ADD ATTRIBUTE participants beeper_desktop_api_chats.chat_create_response_participant, + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE unreadCount BIGINT, + ADD ATTRIBUTE chatID TEXT, + ADD ATTRIBUTE capabilities beeper_desktop_api_chats.chat_create_response_capability, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE draft beeper_desktop_api_chats.chat_create_response_draft, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isArchived BOOLEAN, + ADD ATTRIBUTE isLowPriority BOOLEAN, + ADD ATTRIBUTE isMarkedUnread BOOLEAN, + ADD ATTRIBUTE isMuted BOOLEAN, + ADD ATTRIBUTE isPinned BOOLEAN, + ADD ATTRIBUTE isReadOnly BOOLEAN, + ADD ATTRIBUTE lastActivity TIMESTAMP, + ADD ATTRIBUTE lastReadMessageSortKey TEXT, + ADD ATTRIBUTE localChatID TEXT, + ADD ATTRIBUTE messageExpirySeconds BIGINT, + ADD ATTRIBUTE reminder beeper_desktop_api_chats.chat_create_response_reminder, + ADD ATTRIBUTE snooze beeper_desktop_api_chats.chat_create_response_snooze, + ADD ATTRIBUTE unreadMentionsCount BIGINT, + ADD ATTRIBUTE status TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response( + id TEXT, + accountID TEXT, + network TEXT, + participants beeper_desktop_api_chats.chat_create_response_participant, + title TEXT, + type TEXT, + unreadCount BIGINT, + chatID TEXT, + capabilities beeper_desktop_api_chats.chat_create_response_capability DEFAULT NULL, + description TEXT DEFAULT NULL, + draft beeper_desktop_api_chats.chat_create_response_draft DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isArchived BOOLEAN DEFAULT NULL, + isLowPriority BOOLEAN DEFAULT NULL, + isMarkedUnread BOOLEAN DEFAULT NULL, + isMuted BOOLEAN DEFAULT NULL, + isPinned BOOLEAN DEFAULT NULL, + isReadOnly BOOLEAN DEFAULT NULL, + lastActivity TIMESTAMP DEFAULT NULL, + lastReadMessageSortKey TEXT DEFAULT NULL, + localChatID TEXT DEFAULT NULL, + messageExpirySeconds BIGINT DEFAULT NULL, + reminder beeper_desktop_api_chats.chat_create_response_reminder DEFAULT NULL, + snooze beeper_desktop_api_chats.chat_create_response_snooze DEFAULT NULL, + unreadMentionsCount BIGINT DEFAULT NULL, + status TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + accountID, + network, + participants, + title, + type, + unreadCount, + chatID, + capabilities, + description, + draft, + imgURL, + isArchived, + isLowPriority, + isMarkedUnread, + isMuted, + isPinned, + isReadOnly, + lastActivity, + lastReadMessageSortKey, + localChatID, + messageExpirySeconds, + reminder, + snooze, + unreadMentionsCount, + status + )::beeper_desktop_api_chats.chat_create_response; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_participant + ADD ATTRIBUTE hasMore BOOLEAN, + ADD ATTRIBUTE items beeper_desktop_api_chats.chat_create_response_participant_item[], + ADD ATTRIBUTE total BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_participant( + hasMore BOOLEAN, + items beeper_desktop_api_chats.chat_create_response_participant_item[], + total BIGINT +) +RETURNS beeper_desktop_api_chats.chat_create_response_participant +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + hasMore, items, total + )::beeper_desktop_api_chats.chat_create_response_participant; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_participant_item + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE cannotMessage BOOLEAN, + ADD ATTRIBUTE email TEXT, + ADD ATTRIBUTE fullName TEXT, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isSelf BOOLEAN, + ADD ATTRIBUTE phoneNumber TEXT, + ADD ATTRIBUTE username TEXT, + ADD ATTRIBUTE isAdmin BOOLEAN, + ADD ATTRIBUTE isNetworkBot BOOLEAN, + ADD ATTRIBUTE isPending BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_participant_item( + id TEXT, + cannotMessage BOOLEAN DEFAULT NULL, + email TEXT DEFAULT NULL, + fullName TEXT DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isSelf BOOLEAN DEFAULT NULL, + phoneNumber TEXT DEFAULT NULL, + username TEXT DEFAULT NULL, + isAdmin BOOLEAN DEFAULT NULL, + isNetworkBot BOOLEAN DEFAULT NULL, + isPending BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_participant_item +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + cannotMessage, + email, + fullName, + imgURL, + isSelf, + phoneNumber, + username, + isAdmin, + isNetworkBot, + isPending + )::beeper_desktop_api_chats.chat_create_response_participant_item; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability + ADD ATTRIBUTE allowedReactions TEXT[], + ADD ATTRIBUTE archive BOOLEAN, + ADD ATTRIBUTE attachments JSONB, + ADD ATTRIBUTE customEmojiReactions BOOLEAN, + ADD ATTRIBUTE delete BIGINT, + ADD ATTRIBUTE deleteChat BOOLEAN, + ADD ATTRIBUTE deleteChatForEveryone BOOLEAN, + ADD ATTRIBUTE deleteForMe BOOLEAN, + ADD ATTRIBUTE deleteMaxAge BIGINT, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_create_response_capability_disappearing_timer, + ADD ATTRIBUTE edit BIGINT, + ADD ATTRIBUTE editMaxAge BIGINT, + ADD ATTRIBUTE editMaxCount BIGINT, + ADD ATTRIBUTE formatting JSONB, + ADD ATTRIBUTE locationMessage BIGINT, + ADD ATTRIBUTE markAsUnread BOOLEAN, + ADD ATTRIBUTE maxTextLength BIGINT, + ADD ATTRIBUTE messageRequest beeper_desktop_api_chats.chat_create_response_capability_message_request, + ADD ATTRIBUTE participantActions beeper_desktop_api_chats.chat_create_response_capability_participant_action, + ADD ATTRIBUTE poll BIGINT, + ADD ATTRIBUTE reaction BIGINT, + ADD ATTRIBUTE reactionCount BIGINT, + ADD ATTRIBUTE readReceipts BOOLEAN, + ADD ATTRIBUTE reply BIGINT, + ADD ATTRIBUTE state beeper_desktop_api_chats.chat_create_response_capability_state, + ADD ATTRIBUTE thread BIGINT, + ADD ATTRIBUTE typingNotifications BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability( + allowedReactions TEXT[] DEFAULT NULL, + archive BOOLEAN DEFAULT NULL, + attachments JSONB DEFAULT NULL, + customEmojiReactions BOOLEAN DEFAULT NULL, + delete BIGINT DEFAULT NULL, + deleteChat BOOLEAN DEFAULT NULL, + deleteChatForEveryone BOOLEAN DEFAULT NULL, + deleteForMe BOOLEAN DEFAULT NULL, + deleteMaxAge BIGINT DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_create_response_capability_disappearing_timer DEFAULT NULL, + edit BIGINT DEFAULT NULL, + editMaxAge BIGINT DEFAULT NULL, + editMaxCount BIGINT DEFAULT NULL, + formatting JSONB DEFAULT NULL, + locationMessage BIGINT DEFAULT NULL, + markAsUnread BOOLEAN DEFAULT NULL, + maxTextLength BIGINT DEFAULT NULL, + messageRequest beeper_desktop_api_chats.chat_create_response_capability_message_request DEFAULT NULL, + participantActions beeper_desktop_api_chats.chat_create_response_capability_participant_action DEFAULT NULL, + poll BIGINT DEFAULT NULL, + reaction BIGINT DEFAULT NULL, + reactionCount BIGINT DEFAULT NULL, + readReceipts BOOLEAN DEFAULT NULL, + reply BIGINT DEFAULT NULL, + state beeper_desktop_api_chats.chat_create_response_capability_state DEFAULT NULL, + thread BIGINT DEFAULT NULL, + typingNotifications BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + allowedReactions, + archive, + attachments, + customEmojiReactions, + delete, + deleteChat, + deleteChatForEveryone, + deleteForMe, + deleteMaxAge, + disappearingTimer, + edit, + editMaxAge, + editMaxCount, + formatting, + locationMessage, + markAsUnread, + maxTextLength, + messageRequest, + participantActions, + poll, + reaction, + reactionCount, + readReceipts, + reply, + state, + thread, + typingNotifications + )::beeper_desktop_api_chats.chat_create_response_capability; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_disappearing_timer + ADD ATTRIBUTE omitEmptyTimer BOOLEAN, + ADD ATTRIBUTE timers BIGINT[], + ADD ATTRIBUTE types TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_disappearing_timer( + omitEmptyTimer BOOLEAN DEFAULT NULL, + timers BIGINT[] DEFAULT NULL, + types TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + omitEmptyTimer, timers, types + )::beeper_desktop_api_chats.chat_create_response_capability_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_message_request + ADD ATTRIBUTE acceptWithButton BIGINT, ADD ATTRIBUTE acceptWithMessage BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_message_request( + acceptWithButton BIGINT DEFAULT NULL, acceptWithMessage BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_message_request +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + acceptWithButton, acceptWithMessage + )::beeper_desktop_api_chats.chat_create_response_capability_message_request; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_participant_action + ADD ATTRIBUTE ban BIGINT, + ADD ATTRIBUTE invite BIGINT, + ADD ATTRIBUTE kick BIGINT, + ADD ATTRIBUTE leave BIGINT, + ADD ATTRIBUTE revokeInvite BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_participant_action( + ban BIGINT DEFAULT NULL, + invite BIGINT DEFAULT NULL, + kick BIGINT DEFAULT NULL, + leave BIGINT DEFAULT NULL, + revokeInvite BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_participant_action +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + ban, invite, kick, leave, revokeInvite + )::beeper_desktop_api_chats.chat_create_response_capability_participant_action; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_state + ADD ATTRIBUTE avatar beeper_desktop_api_chats.chat_create_response_capability_state_avatar, + ADD ATTRIBUTE description beeper_desktop_api_chats.chat_create_response_capability_state_description, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_create_response_capability_state_disappearing_timer, + ADD ATTRIBUTE title beeper_desktop_api_chats.chat_create_response_capability_state_title; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_state( + avatar beeper_desktop_api_chats.chat_create_response_capability_state_avatar DEFAULT NULL, + description beeper_desktop_api_chats.chat_create_response_capability_state_description DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_create_response_capability_state_disappearing_timer DEFAULT NULL, + title beeper_desktop_api_chats.chat_create_response_capability_state_title DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + avatar, description, disappearingTimer, title + )::beeper_desktop_api_chats.chat_create_response_capability_state; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_state_avatar + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_state_avatar( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_state_avatar +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_create_response_capability_state_avatar; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_state_description + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_state_description( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_state_description +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_create_response_capability_state_description; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_state_disappearing_timer + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_state_disappearing_timer( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_state_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_create_response_capability_state_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_capability_state_title + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_capability_state_title( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_create_response_capability_state_title +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_create_response_capability_state_title; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_draft + ADD ATTRIBUTE text TEXT, ADD ATTRIBUTE attachments JSONB; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_draft( + text TEXT, attachments JSONB DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_draft +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + text, attachments + )::beeper_desktop_api_chats.chat_create_response_draft; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_reminder + ADD ATTRIBUTE dismissOnIncomingMessage BOOLEAN, + ADD ATTRIBUTE remindAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_reminder( + dismissOnIncomingMessage BOOLEAN DEFAULT NULL, remindAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_reminder +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + dismissOnIncomingMessage, remindAt + )::beeper_desktop_api_chats.chat_create_response_reminder; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_create_response_snooze + ADD ATTRIBUTE snoozeUntil TIMESTAMP, ADD ATTRIBUTE userSnoozedAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response_snooze( + snoozeUntil TIMESTAMP DEFAULT NULL, userSnoozedAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_create_response_snooze +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + snoozeUntil, userSnoozedAt + )::beeper_desktop_api_chats.chat_create_response_snooze; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE accountID TEXT, + ADD ATTRIBUTE network TEXT, + ADD ATTRIBUTE participants beeper_desktop_api_chats.chat_list_response_participant, + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE unreadCount BIGINT, + ADD ATTRIBUTE capabilities beeper_desktop_api_chats.chat_list_response_capability, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE draft beeper_desktop_api_chats.chat_list_response_draft, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isArchived BOOLEAN, + ADD ATTRIBUTE isLowPriority BOOLEAN, + ADD ATTRIBUTE isMarkedUnread BOOLEAN, + ADD ATTRIBUTE isMuted BOOLEAN, + ADD ATTRIBUTE isPinned BOOLEAN, + ADD ATTRIBUTE isReadOnly BOOLEAN, + ADD ATTRIBUTE lastActivity TIMESTAMP, + ADD ATTRIBUTE lastReadMessageSortKey TEXT, + ADD ATTRIBUTE localChatID TEXT, + ADD ATTRIBUTE messageExpirySeconds BIGINT, + ADD ATTRIBUTE reminder beeper_desktop_api_chats.chat_list_response_reminder, + ADD ATTRIBUTE snooze beeper_desktop_api_chats.chat_list_response_snooze, + ADD ATTRIBUTE unreadMentionsCount BIGINT, + ADD ATTRIBUTE preview beeper_desktop_api.message; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response( + id TEXT, + accountID TEXT, + network TEXT, + participants beeper_desktop_api_chats.chat_list_response_participant, + title TEXT, + type TEXT, + unreadCount BIGINT, + capabilities beeper_desktop_api_chats.chat_list_response_capability DEFAULT NULL, + description TEXT DEFAULT NULL, + draft beeper_desktop_api_chats.chat_list_response_draft DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isArchived BOOLEAN DEFAULT NULL, + isLowPriority BOOLEAN DEFAULT NULL, + isMarkedUnread BOOLEAN DEFAULT NULL, + isMuted BOOLEAN DEFAULT NULL, + isPinned BOOLEAN DEFAULT NULL, + isReadOnly BOOLEAN DEFAULT NULL, + lastActivity TIMESTAMP DEFAULT NULL, + lastReadMessageSortKey TEXT DEFAULT NULL, + localChatID TEXT DEFAULT NULL, + messageExpirySeconds BIGINT DEFAULT NULL, + reminder beeper_desktop_api_chats.chat_list_response_reminder DEFAULT NULL, + snooze beeper_desktop_api_chats.chat_list_response_snooze DEFAULT NULL, + unreadMentionsCount BIGINT DEFAULT NULL, + preview beeper_desktop_api.message DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + accountID, + network, + participants, + title, + type, + unreadCount, + capabilities, + description, + draft, + imgURL, + isArchived, + isLowPriority, + isMarkedUnread, + isMuted, + isPinned, + isReadOnly, + lastActivity, + lastReadMessageSortKey, + localChatID, + messageExpirySeconds, + reminder, + snooze, + unreadMentionsCount, + preview + )::beeper_desktop_api_chats.chat_list_response; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_participant + ADD ATTRIBUTE hasMore BOOLEAN, + ADD ATTRIBUTE items beeper_desktop_api_chats.chat_list_response_participant_item[], + ADD ATTRIBUTE total BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_participant( + hasMore BOOLEAN, + items beeper_desktop_api_chats.chat_list_response_participant_item[], + total BIGINT +) +RETURNS beeper_desktop_api_chats.chat_list_response_participant +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + hasMore, items, total + )::beeper_desktop_api_chats.chat_list_response_participant; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_participant_item + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE cannotMessage BOOLEAN, + ADD ATTRIBUTE email TEXT, + ADD ATTRIBUTE fullName TEXT, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isSelf BOOLEAN, + ADD ATTRIBUTE phoneNumber TEXT, + ADD ATTRIBUTE username TEXT, + ADD ATTRIBUTE isAdmin BOOLEAN, + ADD ATTRIBUTE isNetworkBot BOOLEAN, + ADD ATTRIBUTE isPending BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_participant_item( + id TEXT, + cannotMessage BOOLEAN DEFAULT NULL, + email TEXT DEFAULT NULL, + fullName TEXT DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isSelf BOOLEAN DEFAULT NULL, + phoneNumber TEXT DEFAULT NULL, + username TEXT DEFAULT NULL, + isAdmin BOOLEAN DEFAULT NULL, + isNetworkBot BOOLEAN DEFAULT NULL, + isPending BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_participant_item +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + cannotMessage, + email, + fullName, + imgURL, + isSelf, + phoneNumber, + username, + isAdmin, + isNetworkBot, + isPending + )::beeper_desktop_api_chats.chat_list_response_participant_item; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability + ADD ATTRIBUTE allowedReactions TEXT[], + ADD ATTRIBUTE archive BOOLEAN, + ADD ATTRIBUTE attachments JSONB, + ADD ATTRIBUTE customEmojiReactions BOOLEAN, + ADD ATTRIBUTE delete BIGINT, + ADD ATTRIBUTE deleteChat BOOLEAN, + ADD ATTRIBUTE deleteChatForEveryone BOOLEAN, + ADD ATTRIBUTE deleteForMe BOOLEAN, + ADD ATTRIBUTE deleteMaxAge BIGINT, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_list_response_capability_disappearing_timer, + ADD ATTRIBUTE edit BIGINT, + ADD ATTRIBUTE editMaxAge BIGINT, + ADD ATTRIBUTE editMaxCount BIGINT, + ADD ATTRIBUTE formatting JSONB, + ADD ATTRIBUTE locationMessage BIGINT, + ADD ATTRIBUTE markAsUnread BOOLEAN, + ADD ATTRIBUTE maxTextLength BIGINT, + ADD ATTRIBUTE messageRequest beeper_desktop_api_chats.chat_list_response_capability_message_request, + ADD ATTRIBUTE participantActions beeper_desktop_api_chats.chat_list_response_capability_participant_action, + ADD ATTRIBUTE poll BIGINT, + ADD ATTRIBUTE reaction BIGINT, + ADD ATTRIBUTE reactionCount BIGINT, + ADD ATTRIBUTE readReceipts BOOLEAN, + ADD ATTRIBUTE reply BIGINT, + ADD ATTRIBUTE state beeper_desktop_api_chats.chat_list_response_capability_state, + ADD ATTRIBUTE thread BIGINT, + ADD ATTRIBUTE typingNotifications BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability( + allowedReactions TEXT[] DEFAULT NULL, + archive BOOLEAN DEFAULT NULL, + attachments JSONB DEFAULT NULL, + customEmojiReactions BOOLEAN DEFAULT NULL, + delete BIGINT DEFAULT NULL, + deleteChat BOOLEAN DEFAULT NULL, + deleteChatForEveryone BOOLEAN DEFAULT NULL, + deleteForMe BOOLEAN DEFAULT NULL, + deleteMaxAge BIGINT DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_list_response_capability_disappearing_timer DEFAULT NULL, + edit BIGINT DEFAULT NULL, + editMaxAge BIGINT DEFAULT NULL, + editMaxCount BIGINT DEFAULT NULL, + formatting JSONB DEFAULT NULL, + locationMessage BIGINT DEFAULT NULL, + markAsUnread BOOLEAN DEFAULT NULL, + maxTextLength BIGINT DEFAULT NULL, + messageRequest beeper_desktop_api_chats.chat_list_response_capability_message_request DEFAULT NULL, + participantActions beeper_desktop_api_chats.chat_list_response_capability_participant_action DEFAULT NULL, + poll BIGINT DEFAULT NULL, + reaction BIGINT DEFAULT NULL, + reactionCount BIGINT DEFAULT NULL, + readReceipts BOOLEAN DEFAULT NULL, + reply BIGINT DEFAULT NULL, + state beeper_desktop_api_chats.chat_list_response_capability_state DEFAULT NULL, + thread BIGINT DEFAULT NULL, + typingNotifications BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + allowedReactions, + archive, + attachments, + customEmojiReactions, + delete, + deleteChat, + deleteChatForEveryone, + deleteForMe, + deleteMaxAge, + disappearingTimer, + edit, + editMaxAge, + editMaxCount, + formatting, + locationMessage, + markAsUnread, + maxTextLength, + messageRequest, + participantActions, + poll, + reaction, + reactionCount, + readReceipts, + reply, + state, + thread, + typingNotifications + )::beeper_desktop_api_chats.chat_list_response_capability; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_disappearing_timer + ADD ATTRIBUTE omitEmptyTimer BOOLEAN, + ADD ATTRIBUTE timers BIGINT[], + ADD ATTRIBUTE types TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_disappearing_timer( + omitEmptyTimer BOOLEAN DEFAULT NULL, + timers BIGINT[] DEFAULT NULL, + types TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + omitEmptyTimer, timers, types + )::beeper_desktop_api_chats.chat_list_response_capability_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_message_request + ADD ATTRIBUTE acceptWithButton BIGINT, ADD ATTRIBUTE acceptWithMessage BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_message_request( + acceptWithButton BIGINT DEFAULT NULL, acceptWithMessage BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_message_request +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + acceptWithButton, acceptWithMessage + )::beeper_desktop_api_chats.chat_list_response_capability_message_request; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_participant_action + ADD ATTRIBUTE ban BIGINT, + ADD ATTRIBUTE invite BIGINT, + ADD ATTRIBUTE kick BIGINT, + ADD ATTRIBUTE leave BIGINT, + ADD ATTRIBUTE revokeInvite BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_participant_action( + ban BIGINT DEFAULT NULL, + invite BIGINT DEFAULT NULL, + kick BIGINT DEFAULT NULL, + leave BIGINT DEFAULT NULL, + revokeInvite BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_participant_action +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + ban, invite, kick, leave, revokeInvite + )::beeper_desktop_api_chats.chat_list_response_capability_participant_action; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_state + ADD ATTRIBUTE avatar beeper_desktop_api_chats.chat_list_response_capability_state_avatar, + ADD ATTRIBUTE description beeper_desktop_api_chats.chat_list_response_capability_state_description, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_list_response_capability_state_disappearing_timer, + ADD ATTRIBUTE title beeper_desktop_api_chats.chat_list_response_capability_state_title; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_state( + avatar beeper_desktop_api_chats.chat_list_response_capability_state_avatar DEFAULT NULL, + description beeper_desktop_api_chats.chat_list_response_capability_state_description DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_list_response_capability_state_disappearing_timer DEFAULT NULL, + title beeper_desktop_api_chats.chat_list_response_capability_state_title DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + avatar, description, disappearingTimer, title + )::beeper_desktop_api_chats.chat_list_response_capability_state; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_state_avatar + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_state_avatar( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_state_avatar +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_list_response_capability_state_avatar; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_state_description + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_state_description( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_state_description +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_list_response_capability_state_description; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_state_disappearing_timer + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_state_disappearing_timer( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_state_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_list_response_capability_state_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_capability_state_title + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_capability_state_title( + level BIGINT +) +RETURNS beeper_desktop_api_chats.chat_list_response_capability_state_title +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_list_response_capability_state_title; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_draft + ADD ATTRIBUTE text TEXT, ADD ATTRIBUTE attachments JSONB; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_draft( + text TEXT, attachments JSONB DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_draft +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + text, attachments + )::beeper_desktop_api_chats.chat_list_response_draft; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_reminder + ADD ATTRIBUTE dismissOnIncomingMessage BOOLEAN, + ADD ATTRIBUTE remindAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_reminder( + dismissOnIncomingMessage BOOLEAN DEFAULT NULL, remindAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_reminder +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + dismissOnIncomingMessage, remindAt + )::beeper_desktop_api_chats.chat_list_response_reminder; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_list_response_snooze + ADD ATTRIBUTE snoozeUntil TIMESTAMP, ADD ATTRIBUTE userSnoozedAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_snooze( + snoozeUntil TIMESTAMP DEFAULT NULL, userSnoozedAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_list_response_snooze +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + snoozeUntil, userSnoozedAt + )::beeper_desktop_api_chats.chat_list_response_snooze; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE accountID TEXT, + ADD ATTRIBUTE network TEXT, + ADD ATTRIBUTE participants beeper_desktop_api_chats.chat_start_response_participant, + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE unreadCount BIGINT, + ADD ATTRIBUTE chatID TEXT, + ADD ATTRIBUTE capabilities beeper_desktop_api_chats.chat_start_response_capability, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE draft beeper_desktop_api_chats.chat_start_response_draft, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isArchived BOOLEAN, + ADD ATTRIBUTE isLowPriority BOOLEAN, + ADD ATTRIBUTE isMarkedUnread BOOLEAN, + ADD ATTRIBUTE isMuted BOOLEAN, + ADD ATTRIBUTE isPinned BOOLEAN, + ADD ATTRIBUTE isReadOnly BOOLEAN, + ADD ATTRIBUTE lastActivity TIMESTAMP, + ADD ATTRIBUTE lastReadMessageSortKey TEXT, + ADD ATTRIBUTE localChatID TEXT, + ADD ATTRIBUTE messageExpirySeconds BIGINT, + ADD ATTRIBUTE reminder beeper_desktop_api_chats.chat_start_response_reminder, + ADD ATTRIBUTE snooze beeper_desktop_api_chats.chat_start_response_snooze, + ADD ATTRIBUTE unreadMentionsCount BIGINT, + ADD ATTRIBUTE status TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response( + id TEXT, + accountID TEXT, + network TEXT, + participants beeper_desktop_api_chats.chat_start_response_participant, + title TEXT, + type TEXT, + unreadCount BIGINT, + chatID TEXT, + capabilities beeper_desktop_api_chats.chat_start_response_capability DEFAULT NULL, + description TEXT DEFAULT NULL, + draft beeper_desktop_api_chats.chat_start_response_draft DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isArchived BOOLEAN DEFAULT NULL, + isLowPriority BOOLEAN DEFAULT NULL, + isMarkedUnread BOOLEAN DEFAULT NULL, + isMuted BOOLEAN DEFAULT NULL, + isPinned BOOLEAN DEFAULT NULL, + isReadOnly BOOLEAN DEFAULT NULL, + lastActivity TIMESTAMP DEFAULT NULL, + lastReadMessageSortKey TEXT DEFAULT NULL, + localChatID TEXT DEFAULT NULL, + messageExpirySeconds BIGINT DEFAULT NULL, + reminder beeper_desktop_api_chats.chat_start_response_reminder DEFAULT NULL, + snooze beeper_desktop_api_chats.chat_start_response_snooze DEFAULT NULL, + unreadMentionsCount BIGINT DEFAULT NULL, + status TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + accountID, + network, + participants, + title, + type, + unreadCount, + chatID, + capabilities, + description, + draft, + imgURL, + isArchived, + isLowPriority, + isMarkedUnread, + isMuted, + isPinned, + isReadOnly, + lastActivity, + lastReadMessageSortKey, + localChatID, + messageExpirySeconds, + reminder, + snooze, + unreadMentionsCount, + status + )::beeper_desktop_api_chats.chat_start_response; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_participant + ADD ATTRIBUTE hasMore BOOLEAN, + ADD ATTRIBUTE items beeper_desktop_api_chats.chat_start_response_participant_item[], + ADD ATTRIBUTE total BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_participant( + hasMore BOOLEAN, + items beeper_desktop_api_chats.chat_start_response_participant_item[], + total BIGINT +) +RETURNS beeper_desktop_api_chats.chat_start_response_participant +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + hasMore, items, total + )::beeper_desktop_api_chats.chat_start_response_participant; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_participant_item + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE cannotMessage BOOLEAN, + ADD ATTRIBUTE email TEXT, + ADD ATTRIBUTE fullName TEXT, + ADD ATTRIBUTE imgURL TEXT, + ADD ATTRIBUTE isSelf BOOLEAN, + ADD ATTRIBUTE phoneNumber TEXT, + ADD ATTRIBUTE username TEXT, + ADD ATTRIBUTE isAdmin BOOLEAN, + ADD ATTRIBUTE isNetworkBot BOOLEAN, + ADD ATTRIBUTE isPending BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_participant_item( + id TEXT, + cannotMessage BOOLEAN DEFAULT NULL, + email TEXT DEFAULT NULL, + fullName TEXT DEFAULT NULL, + imgURL TEXT DEFAULT NULL, + isSelf BOOLEAN DEFAULT NULL, + phoneNumber TEXT DEFAULT NULL, + username TEXT DEFAULT NULL, + isAdmin BOOLEAN DEFAULT NULL, + isNetworkBot BOOLEAN DEFAULT NULL, + isPending BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_participant_item +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, + cannotMessage, + email, + fullName, + imgURL, + isSelf, + phoneNumber, + username, + isAdmin, + isNetworkBot, + isPending + )::beeper_desktop_api_chats.chat_start_response_participant_item; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability + ADD ATTRIBUTE allowedReactions TEXT[], + ADD ATTRIBUTE archive BOOLEAN, + ADD ATTRIBUTE attachments JSONB, + ADD ATTRIBUTE customEmojiReactions BOOLEAN, + ADD ATTRIBUTE delete BIGINT, + ADD ATTRIBUTE deleteChat BOOLEAN, + ADD ATTRIBUTE deleteChatForEveryone BOOLEAN, + ADD ATTRIBUTE deleteForMe BOOLEAN, + ADD ATTRIBUTE deleteMaxAge BIGINT, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_start_response_capability_disappearing_timer, + ADD ATTRIBUTE edit BIGINT, + ADD ATTRIBUTE editMaxAge BIGINT, + ADD ATTRIBUTE editMaxCount BIGINT, + ADD ATTRIBUTE formatting JSONB, + ADD ATTRIBUTE locationMessage BIGINT, + ADD ATTRIBUTE markAsUnread BOOLEAN, + ADD ATTRIBUTE maxTextLength BIGINT, + ADD ATTRIBUTE messageRequest beeper_desktop_api_chats.chat_start_response_capability_message_request, + ADD ATTRIBUTE participantActions beeper_desktop_api_chats.chat_start_response_capability_participant_action, + ADD ATTRIBUTE poll BIGINT, + ADD ATTRIBUTE reaction BIGINT, + ADD ATTRIBUTE reactionCount BIGINT, + ADD ATTRIBUTE readReceipts BOOLEAN, + ADD ATTRIBUTE reply BIGINT, + ADD ATTRIBUTE state beeper_desktop_api_chats.chat_start_response_capability_state, + ADD ATTRIBUTE thread BIGINT, + ADD ATTRIBUTE typingNotifications BOOLEAN; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability( + allowedReactions TEXT[] DEFAULT NULL, + archive BOOLEAN DEFAULT NULL, + attachments JSONB DEFAULT NULL, + customEmojiReactions BOOLEAN DEFAULT NULL, + delete BIGINT DEFAULT NULL, + deleteChat BOOLEAN DEFAULT NULL, + deleteChatForEveryone BOOLEAN DEFAULT NULL, + deleteForMe BOOLEAN DEFAULT NULL, + deleteMaxAge BIGINT DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_start_response_capability_disappearing_timer DEFAULT NULL, + edit BIGINT DEFAULT NULL, + editMaxAge BIGINT DEFAULT NULL, + editMaxCount BIGINT DEFAULT NULL, + formatting JSONB DEFAULT NULL, + locationMessage BIGINT DEFAULT NULL, + markAsUnread BOOLEAN DEFAULT NULL, + maxTextLength BIGINT DEFAULT NULL, + messageRequest beeper_desktop_api_chats.chat_start_response_capability_message_request DEFAULT NULL, + participantActions beeper_desktop_api_chats.chat_start_response_capability_participant_action DEFAULT NULL, + poll BIGINT DEFAULT NULL, + reaction BIGINT DEFAULT NULL, + reactionCount BIGINT DEFAULT NULL, + readReceipts BOOLEAN DEFAULT NULL, + reply BIGINT DEFAULT NULL, + state beeper_desktop_api_chats.chat_start_response_capability_state DEFAULT NULL, + thread BIGINT DEFAULT NULL, + typingNotifications BOOLEAN DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_capability +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + allowedReactions, + archive, + attachments, + customEmojiReactions, + delete, + deleteChat, + deleteChatForEveryone, + deleteForMe, + deleteMaxAge, + disappearingTimer, + edit, + editMaxAge, + editMaxCount, + formatting, + locationMessage, + markAsUnread, + maxTextLength, + messageRequest, + participantActions, + poll, + reaction, + reactionCount, + readReceipts, + reply, + state, + thread, + typingNotifications + )::beeper_desktop_api_chats.chat_start_response_capability; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_disappearing_timer + ADD ATTRIBUTE omitEmptyTimer BOOLEAN, + ADD ATTRIBUTE timers BIGINT[], + ADD ATTRIBUTE types TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_disappearing_timer( + omitEmptyTimer BOOLEAN DEFAULT NULL, + timers BIGINT[] DEFAULT NULL, + types TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_capability_disappearing_timer +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + omitEmptyTimer, timers, types + )::beeper_desktop_api_chats.chat_start_response_capability_disappearing_timer; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_message_request + ADD ATTRIBUTE acceptWithButton BIGINT, ADD ATTRIBUTE acceptWithMessage BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_message_request( + acceptWithButton BIGINT DEFAULT NULL, acceptWithMessage BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_capability_message_request +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + acceptWithButton, acceptWithMessage + )::beeper_desktop_api_chats.chat_start_response_capability_message_request; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_participant_action + ADD ATTRIBUTE ban BIGINT, + ADD ATTRIBUTE invite BIGINT, + ADD ATTRIBUTE kick BIGINT, + ADD ATTRIBUTE leave BIGINT, + ADD ATTRIBUTE revokeInvite BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_participant_action( + ban BIGINT DEFAULT NULL, + invite BIGINT DEFAULT NULL, + kick BIGINT DEFAULT NULL, + leave BIGINT DEFAULT NULL, + revokeInvite BIGINT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_capability_participant_action +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + ban, invite, kick, leave, revokeInvite + )::beeper_desktop_api_chats.chat_start_response_capability_participant_action; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_state + ADD ATTRIBUTE avatar beeper_desktop_api_chats.chat_start_response_capability_state_avatar, + ADD ATTRIBUTE description beeper_desktop_api_chats.chat_start_response_capability_state_description, + ADD ATTRIBUTE disappearingTimer beeper_desktop_api_chats.chat_start_response_capability_state_disappearing_timer, + ADD ATTRIBUTE title beeper_desktop_api_chats.chat_start_response_capability_state_title; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_state( + avatar beeper_desktop_api_chats.chat_start_response_capability_state_avatar DEFAULT NULL, + description beeper_desktop_api_chats.chat_start_response_capability_state_description DEFAULT NULL, + disappearingTimer beeper_desktop_api_chats.chat_start_response_capability_state_disappearing_timer DEFAULT NULL, + title beeper_desktop_api_chats.chat_start_response_capability_state_title DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_capability_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + avatar, description, disappearingTimer, title + )::beeper_desktop_api_chats.chat_start_response_capability_state; +$$; -CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat( - id TEXT, - accountID TEXT, - participants beeper_desktop_api_chats.chat_participant, - title TEXT, - type TEXT, - unreadCount BIGINT, - isArchived BOOLEAN DEFAULT NULL, - isMuted BOOLEAN DEFAULT NULL, - isPinned BOOLEAN DEFAULT NULL, - lastActivity TIMESTAMP DEFAULT NULL, - lastReadMessageSortKey TEXT DEFAULT NULL, - localChatID TEXT DEFAULT NULL +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_state_avatar + ADD ATTRIBUTE level BIGINT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_state_avatar( + level BIGINT ) -RETURNS beeper_desktop_api_chats.chat +RETURNS beeper_desktop_api_chats.chat_start_response_capability_state_avatar LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( - id, - accountID, - participants, - title, - type, - unreadCount, - isArchived, - isMuted, - isPinned, - lastActivity, - lastReadMessageSortKey, - localChatID - )::beeper_desktop_api_chats.chat; + level + )::beeper_desktop_api_chats.chat_start_response_capability_state_avatar; $$; -ALTER TYPE beeper_desktop_api_chats.chat_participant - ADD ATTRIBUTE hasMore BOOLEAN, - ADD ATTRIBUTE items beeper_desktop_api.user[], - ADD ATTRIBUTE total BIGINT; +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_state_description + ADD ATTRIBUTE level BIGINT; -CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_participant( - hasMore BOOLEAN, items beeper_desktop_api.user[], total BIGINT +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_state_description( + level BIGINT ) -RETURNS beeper_desktop_api_chats.chat_participant +RETURNS beeper_desktop_api_chats.chat_start_response_capability_state_description LANGUAGE SQL IMMUTABLE AS $$ - SELECT ROW(hasMore, items, total)::beeper_desktop_api_chats.chat_participant; + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_start_response_capability_state_description; $$; -ALTER TYPE beeper_desktop_api_chats.chat_create_response - ADD ATTRIBUTE chatID TEXT, ADD ATTRIBUTE status TEXT; +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_state_disappearing_timer + ADD ATTRIBUTE level BIGINT; -CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_create_response( - chatID TEXT, status TEXT DEFAULT NULL +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_state_disappearing_timer( + level BIGINT ) -RETURNS beeper_desktop_api_chats.chat_create_response +RETURNS beeper_desktop_api_chats.chat_start_response_capability_state_disappearing_timer LANGUAGE SQL IMMUTABLE AS $$ - SELECT ROW(chatID, status)::beeper_desktop_api_chats.chat_create_response; + SELECT ROW( + level + )::beeper_desktop_api_chats.chat_start_response_capability_state_disappearing_timer; $$; -ALTER TYPE beeper_desktop_api_chats.chat_list_response - ADD ATTRIBUTE id TEXT, - ADD ATTRIBUTE accountID TEXT, - ADD ATTRIBUTE participants beeper_desktop_api_chats.chat_list_response_participant, - ADD ATTRIBUTE title TEXT, - ADD ATTRIBUTE type TEXT, - ADD ATTRIBUTE unreadCount BIGINT, - ADD ATTRIBUTE isArchived BOOLEAN, - ADD ATTRIBUTE isMuted BOOLEAN, - ADD ATTRIBUTE isPinned BOOLEAN, - ADD ATTRIBUTE lastActivity TIMESTAMP, - ADD ATTRIBUTE lastReadMessageSortKey TEXT, - ADD ATTRIBUTE localChatID TEXT, - ADD ATTRIBUTE preview beeper_desktop_api.message; +ALTER TYPE beeper_desktop_api_chats.chat_start_response_capability_state_title + ADD ATTRIBUTE level BIGINT; -CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response( - id TEXT, - accountID TEXT, - participants beeper_desktop_api_chats.chat_list_response_participant, - title TEXT, - type TEXT, - unreadCount BIGINT, - isArchived BOOLEAN DEFAULT NULL, - isMuted BOOLEAN DEFAULT NULL, - isPinned BOOLEAN DEFAULT NULL, - lastActivity TIMESTAMP DEFAULT NULL, - lastReadMessageSortKey TEXT DEFAULT NULL, - localChatID TEXT DEFAULT NULL, - preview beeper_desktop_api.message DEFAULT NULL +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_capability_state_title( + level BIGINT ) -RETURNS beeper_desktop_api_chats.chat_list_response +RETURNS beeper_desktop_api_chats.chat_start_response_capability_state_title LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( - id, - accountID, - participants, - title, - type, - unreadCount, - isArchived, - isMuted, - isPinned, - lastActivity, - lastReadMessageSortKey, - localChatID, - preview - )::beeper_desktop_api_chats.chat_list_response; + level + )::beeper_desktop_api_chats.chat_start_response_capability_state_title; $$; -ALTER TYPE beeper_desktop_api_chats.chat_list_response_participant - ADD ATTRIBUTE hasMore BOOLEAN, - ADD ATTRIBUTE items beeper_desktop_api.user[], - ADD ATTRIBUTE total BIGINT; +ALTER TYPE beeper_desktop_api_chats.chat_start_response_draft + ADD ATTRIBUTE text TEXT, ADD ATTRIBUTE attachments JSONB; -CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_list_response_participant( - hasMore BOOLEAN, items beeper_desktop_api.user[], total BIGINT +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_draft( + text TEXT, attachments JSONB DEFAULT NULL ) -RETURNS beeper_desktop_api_chats.chat_list_response_participant +RETURNS beeper_desktop_api_chats.chat_start_response_draft LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( - hasMore, items, total - )::beeper_desktop_api_chats.chat_list_response_participant; + text, attachments + )::beeper_desktop_api_chats.chat_start_response_draft; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_reminder + ADD ATTRIBUTE dismissOnIncomingMessage BOOLEAN, + ADD ATTRIBUTE remindAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_reminder( + dismissOnIncomingMessage BOOLEAN DEFAULT NULL, remindAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_reminder +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + dismissOnIncomingMessage, remindAt + )::beeper_desktop_api_chats.chat_start_response_reminder; +$$; + +ALTER TYPE beeper_desktop_api_chats.chat_start_response_snooze + ADD ATTRIBUTE snoozeUntil TIMESTAMP, ADD ATTRIBUTE userSnoozedAt TIMESTAMP; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_chat_start_response_snooze( + snoozeUntil TIMESTAMP DEFAULT NULL, userSnoozedAt TIMESTAMP DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response_snooze +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + snoozeUntil, userSnoozedAt + )::beeper_desktop_api_chats.chat_start_response_snooze; +$$; + +ALTER TYPE beeper_desktop_api_chats.update_params_draft + ADD ATTRIBUTE text TEXT, ADD ATTRIBUTE attachments JSONB; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_update_params_draft( + text TEXT, attachments JSONB DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.update_params_draft +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(text, attachments)::beeper_desktop_api_chats.update_params_draft; $$; -ALTER TYPE beeper_desktop_api_chats.create_params_user +ALTER TYPE beeper_desktop_api_chats.start_params_user ADD ATTRIBUTE id TEXT, ADD ATTRIBUTE email TEXT, ADD ATTRIBUTE fullName TEXT, ADD ATTRIBUTE phoneNumber TEXT, ADD ATTRIBUTE username TEXT; -CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_create_params_user( +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.make_start_params_user( id TEXT DEFAULT NULL, email TEXT DEFAULT NULL, fullName TEXT DEFAULT NULL, phoneNumber TEXT DEFAULT NULL, username TEXT DEFAULT NULL ) -RETURNS beeper_desktop_api_chats.create_params_user +RETURNS beeper_desktop_api_chats.start_params_user LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( id, email, fullName, phoneNumber, username - )::beeper_desktop_api_chats.create_params_user; + )::beeper_desktop_api_chats.start_params_user; $$; CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._create( account_id TEXT, - allow_invite BOOLEAN DEFAULT NULL, + participant_ids TEXT[], + type TEXT, message_text TEXT DEFAULT NULL, - mode TEXT DEFAULT NULL, - participant_ids TEXT[] DEFAULT NULL, - title TEXT DEFAULT NULL, - type TEXT DEFAULT NULL, - "user" beeper_desktop_api_chats.create_params_user DEFAULT NULL + title TEXT DEFAULT NULL ) RETURNS JSONB LANGUAGE plpython3u @@ -182,13 +1751,10 @@ AS $$ response = GD["__beeper_desktop_api_context__"].client.chats.with_raw_response.create( account_id=account_id, - allow_invite=not_given if allow_invite is None else allow_invite, + participant_ids=participant_ids, + type=type, message_text=not_given if message_text is None else message_text, - mode=not_given if mode is None else mode, - participant_ids=not_given if participant_ids is None else participant_ids, title=not_given if title is None else title, - type=not_given if type is None else type, - user=not_given if user is None else GD["__beeper_desktop_api_context__"].strip_none(user), ) # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted @@ -199,13 +1765,10 @@ $$; CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.create( account_id TEXT, - allow_invite BOOLEAN DEFAULT NULL, + participant_ids TEXT[], + type TEXT, message_text TEXT DEFAULT NULL, - mode TEXT DEFAULT NULL, - participant_ids TEXT[] DEFAULT NULL, - title TEXT DEFAULT NULL, - type TEXT DEFAULT NULL, - "user" beeper_desktop_api_chats.create_params_user DEFAULT NULL + title TEXT DEFAULT NULL ) RETURNS beeper_desktop_api_chats.chat_create_response LANGUAGE plpgsql @@ -215,14 +1778,7 @@ AS $$ RETURN jsonb_populate_record( NULL::beeper_desktop_api_chats.chat_create_response, beeper_desktop_api_chats._create( - account_id, - allow_invite, - message_text, - mode, - participant_ids, - title, - type, - "user" + account_id, participant_ids, type, message_text, title ) ); END; @@ -264,6 +1820,77 @@ AS $$ END; $$; +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._update( + chat_id TEXT, + description TEXT DEFAULT NULL, + draft beeper_desktop_api_chats.update_params_draft DEFAULT NULL, + img_url TEXT DEFAULT NULL, + is_archived BOOLEAN DEFAULT NULL, + is_low_priority BOOLEAN DEFAULT NULL, + is_muted BOOLEAN DEFAULT NULL, + is_pinned BOOLEAN DEFAULT NULL, + message_expiry_seconds BIGINT DEFAULT NULL, + title TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.chats.with_raw_response.update( + chat_id=chat_id, + description=not_given if description is None else description, + draft=not_given if draft is None else GD["__beeper_desktop_api_context__"].strip_none(draft), + img_url=not_given if img_url is None else img_url, + is_archived=not_given if is_archived is None else is_archived, + is_low_priority=not_given if is_low_priority is None else is_low_priority, + is_muted=not_given if is_muted is None else is_muted, + is_pinned=not_given if is_pinned is None else is_pinned, + message_expiry_seconds=not_given if message_expiry_seconds is None else message_expiry_seconds, + title=not_given if title is None else title, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.update( + chat_id TEXT, + description TEXT DEFAULT NULL, + draft beeper_desktop_api_chats.update_params_draft DEFAULT NULL, + img_url TEXT DEFAULT NULL, + is_archived BOOLEAN DEFAULT NULL, + is_low_priority BOOLEAN DEFAULT NULL, + is_muted BOOLEAN DEFAULT NULL, + is_pinned BOOLEAN DEFAULT NULL, + message_expiry_seconds BIGINT DEFAULT NULL, + title TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_chats.chat, + beeper_desktop_api_chats._update( + chat_id, + description, + draft, + img_url, + is_archived, + is_low_priority, + is_muted, + is_pinned, + message_expiry_seconds, + title + ) + ); + END; +$$; + CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._list_first_page_py( account_ids TEXT[] DEFAULT NULL, cursor TEXT DEFAULT NULL, @@ -406,6 +2033,101 @@ AS $$ END; $$; +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._mark_read( + chat_id TEXT, message_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.chats.with_raw_response.mark_read( + chat_id=chat_id, + message_id=not_given if message_id is None else message_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.mark_read( + chat_id TEXT, message_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_chats.chat, + beeper_desktop_api_chats._mark_read(chat_id, message_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._mark_unread( + chat_id TEXT, message_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.chats.with_raw_response.mark_unread( + chat_id=chat_id, + message_id=not_given if message_id is None else message_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.mark_unread( + chat_id TEXT, message_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_chats.chat, + beeper_desktop_api_chats._mark_unread(chat_id, message_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._notify_anyway(chat_id TEXT) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.chats.with_raw_response.notify_anyway( + chat_id=chat_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.notify_anyway(chat_id TEXT) +RETURNS beeper_desktop_api_chats.chat +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_chats.chat, + beeper_desktop_api_chats._notify_anyway(chat_id) + ); + END; +$$; + CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._search_first_page_py( account_ids TEXT[] DEFAULT NULL, cursor TEXT DEFAULT NULL, @@ -578,4 +2300,48 @@ AS $$ WHERE paginated.next_request_options IS NOT NULL ) SELECT (jsonb_populate_recordset(NULL::beeper_desktop_api_chats.chat, data)).* FROM paginated; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats._start( + account_id TEXT, + "user" beeper_desktop_api_chats.start_params_user, + allow_invite BOOLEAN DEFAULT NULL, + message_text TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.chats.with_raw_response.start( + account_id=account_id, + user=GD["__beeper_desktop_api_context__"].strip_none(user), + allow_invite=not_given if allow_invite is None else allow_invite, + message_text=not_given if message_text is None else message_text, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_chats.start( + account_id TEXT, + "user" beeper_desktop_api_chats.start_params_user, + allow_invite BOOLEAN DEFAULT NULL, + message_text TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_chats.chat_start_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_chats.chat_start_response, + beeper_desktop_api_chats._start( + account_id, "user", allow_invite, message_text + ) + ); + END; $$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_chats_reminders.sql b/sql/beeper_desktop_api_chats_reminders.sql index b3dfea8..82568a8 100644 --- a/sql/beeper_desktop_api_chats_reminders.sql +++ b/sql/beeper_desktop_api_chats_reminders.sql @@ -1,16 +1,16 @@ ALTER TYPE beeper_desktop_api_chats_reminders.create_params_reminder - ADD ATTRIBUTE remindAtMs DOUBLE PRECISION, + ADD ATTRIBUTE remindAt TIMESTAMP, ADD ATTRIBUTE dismissOnIncomingMessage BOOLEAN; CREATE OR REPLACE FUNCTION beeper_desktop_api_chats_reminders.make_create_params_reminder( - remindAtMs DOUBLE PRECISION, dismissOnIncomingMessage BOOLEAN DEFAULT NULL + remindAt TIMESTAMP, dismissOnIncomingMessage BOOLEAN DEFAULT NULL ) RETURNS beeper_desktop_api_chats_reminders.create_params_reminder LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( - remindAtMs, dismissOnIncomingMessage + remindAt, dismissOnIncomingMessage )::beeper_desktop_api_chats_reminders.create_params_reminder; $$; diff --git a/sql/beeper_desktop_api_matrix_bridges_auth.sql b/sql/beeper_desktop_api_matrix_bridges_auth.sql new file mode 100644 index 0000000..675198c --- /dev/null +++ b/sql/beeper_desktop_api_matrix_bridges_auth.sql @@ -0,0 +1,1258 @@ +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response + ADD ATTRIBUTE flows beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response_flow[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_list_flows_response( + flows beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response_flow[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + flows + )::beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response_flow + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_list_flows_response_flow( + id TEXT, description TEXT, name TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response_flow +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, description, name + )::beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response_flow; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_list_logins_response + ADD ATTRIBUTE login_ids TEXT[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_list_logins_response( + login_ids TEXT[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_list_logins_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + login_ids + )::beeper_desktop_api_matrix_bridges_auth.auth_list_logins_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_display_and_wait, + ADD ATTRIBUTE instructions TEXT, + ADD ATTRIBUTE login_id TEXT, + ADD ATTRIBUTE step_id TEXT, + ADD ATTRIBUTE user_input beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input, + ADD ATTRIBUTE cookies beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie, + ADD ATTRIBUTE complete beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_complete; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response( + type TEXT, + display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_display_and_wait DEFAULT NULL, + instructions TEXT DEFAULT NULL, + login_id TEXT DEFAULT NULL, + step_id TEXT DEFAULT NULL, + user_input beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input DEFAULT NULL, + cookies beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie DEFAULT NULL, + complete beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_complete DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, + display_and_wait, + instructions, + login_id, + step_id, + user_input, + cookies, + complete + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_display_and_wait + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE data TEXT, + ADD ATTRIBUTE image_url TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_display_and_wait( + type TEXT, data TEXT DEFAULT NULL, image_url TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_display_and_wait +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, data, image_url + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_display_and_wait; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_field[], + ADD ATTRIBUTE attachments beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_user_input( + fields beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_field[], + attachments beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, attachments + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_field + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE default_value TEXT, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE options TEXT[], + ADD ATTRIBUTE pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_user_input_field( + id TEXT, + name TEXT, + type TEXT, + default_value TEXT DEFAULT NULL, + description TEXT DEFAULT NULL, + options TEXT[] DEFAULT NULL, + pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, name, type, default_value, description, options, pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment + ADD ATTRIBUTE content TEXT, + ADD ATTRIBUTE filename TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE info beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment_info; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_user_input_attachment( + content TEXT, + filename TEXT, + type TEXT, + info beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment_info DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, filename, type, info + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment_info + ADD ATTRIBUTE h DOUBLE PRECISION, + ADD ATTRIBUTE mimetype TEXT, + ADD ATTRIBUTE size DOUBLE PRECISION, + ADD ATTRIBUTE w DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_user_input_attachment_info( + h DOUBLE PRECISION DEFAULT NULL, + mimetype TEXT DEFAULT NULL, + size DOUBLE PRECISION DEFAULT NULL, + w DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment_info +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + h, mimetype, size, w + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_user_input_attachment_info; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie_field[], + ADD ATTRIBUTE url TEXT, + ADD ATTRIBUTE extract_js TEXT, + ADD ATTRIBUTE user_agent TEXT, + ADD ATTRIBUTE wait_for_url_pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_cookie( + fields beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie_field[], + url TEXT, + extract_js TEXT DEFAULT NULL, + user_agent TEXT DEFAULT NULL, + wait_for_url_pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, url, extract_js, user_agent, wait_for_url_pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie_field + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE cookie_domain TEXT, + ADD ATTRIBUTE request_url_regex TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_cookie_field( + name TEXT, + type TEXT, + cookie_domain TEXT DEFAULT NULL, + request_url_regex TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + name, type, cookie_domain, request_url_regex + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_cookie_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_complete + ADD ATTRIBUTE user_login_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_start_login_response_complete( + user_login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_complete +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + user_login_id + )::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response_complete; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_display_and_wait, + ADD ATTRIBUTE instructions TEXT, + ADD ATTRIBUTE login_id TEXT, + ADD ATTRIBUTE step_id TEXT, + ADD ATTRIBUTE user_input beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input, + ADD ATTRIBUTE cookies beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie, + ADD ATTRIBUTE complete beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_complete; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response( + type TEXT, + display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_display_and_wait DEFAULT NULL, + instructions TEXT DEFAULT NULL, + login_id TEXT DEFAULT NULL, + step_id TEXT DEFAULT NULL, + user_input beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input DEFAULT NULL, + cookies beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie DEFAULT NULL, + complete beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_complete DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, + display_and_wait, + instructions, + login_id, + step_id, + user_input, + cookies, + complete + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_display_and_wait + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE data TEXT, + ADD ATTRIBUTE image_url TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_display_and_wait( + type TEXT, data TEXT DEFAULT NULL, image_url TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_display_and_wait +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, data, image_url + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_display_and_wait; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_field[], + ADD ATTRIBUTE attachments beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_user_input( + fields beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_field[], + attachments beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, attachments + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_field + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE default_value TEXT, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE options TEXT[], + ADD ATTRIBUTE pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_user_input_field( + id TEXT, + name TEXT, + type TEXT, + default_value TEXT DEFAULT NULL, + description TEXT DEFAULT NULL, + options TEXT[] DEFAULT NULL, + pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, name, type, default_value, description, options, pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment + ADD ATTRIBUTE content TEXT, + ADD ATTRIBUTE filename TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE info beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment_info; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_user_input_attachment( + content TEXT, + filename TEXT, + type TEXT, + info beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment_info DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, filename, type, info + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment_info + ADD ATTRIBUTE h DOUBLE PRECISION, + ADD ATTRIBUTE mimetype TEXT, + ADD ATTRIBUTE size DOUBLE PRECISION, + ADD ATTRIBUTE w DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_user_input_attachment_info( + h DOUBLE PRECISION DEFAULT NULL, + mimetype TEXT DEFAULT NULL, + size DOUBLE PRECISION DEFAULT NULL, + w DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment_info +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + h, mimetype, size, w + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_user_input_attachment_info; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie_field[], + ADD ATTRIBUTE url TEXT, + ADD ATTRIBUTE extract_js TEXT, + ADD ATTRIBUTE user_agent TEXT, + ADD ATTRIBUTE wait_for_url_pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_cookie( + fields beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie_field[], + url TEXT, + extract_js TEXT DEFAULT NULL, + user_agent TEXT DEFAULT NULL, + wait_for_url_pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, url, extract_js, user_agent, wait_for_url_pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie_field + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE cookie_domain TEXT, + ADD ATTRIBUTE request_url_regex TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_cookie_field( + name TEXT, + type TEXT, + cookie_domain TEXT DEFAULT NULL, + request_url_regex TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + name, type, cookie_domain, request_url_regex + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_cookie_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_complete + ADD ATTRIBUTE user_login_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_cookies_response_complete( + user_login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_complete +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + user_login_id + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response_complete; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_display_and_wait, + ADD ATTRIBUTE instructions TEXT, + ADD ATTRIBUTE login_id TEXT, + ADD ATTRIBUTE step_id TEXT, + ADD ATTRIBUTE user_input beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input, + ADD ATTRIBUTE cookies beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie, + ADD ATTRIBUTE complete beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_complete; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response( + type TEXT, + display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_display_and_wait DEFAULT NULL, + instructions TEXT DEFAULT NULL, + login_id TEXT DEFAULT NULL, + step_id TEXT DEFAULT NULL, + user_input beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input DEFAULT NULL, + cookies beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie DEFAULT NULL, + complete beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_complete DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, + display_and_wait, + instructions, + login_id, + step_id, + user_input, + cookies, + complete + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_display_and_wait + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE data TEXT, + ADD ATTRIBUTE image_url TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_display_and_wait( + type TEXT, data TEXT DEFAULT NULL, image_url TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_display_and_wait +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, data, image_url + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_display_and_wait; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_field[], + ADD ATTRIBUTE attachments beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_user_input( + fields beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_field[], + attachments beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, attachments + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_field + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE default_value TEXT, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE options TEXT[], + ADD ATTRIBUTE pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_user_input_field( + id TEXT, + name TEXT, + type TEXT, + default_value TEXT DEFAULT NULL, + description TEXT DEFAULT NULL, + options TEXT[] DEFAULT NULL, + pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, name, type, default_value, description, options, pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment + ADD ATTRIBUTE content TEXT, + ADD ATTRIBUTE filename TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE info beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment_info; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_user_input_attachment( + content TEXT, + filename TEXT, + type TEXT, + info beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment_info DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, filename, type, info + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment_info + ADD ATTRIBUTE h DOUBLE PRECISION, + ADD ATTRIBUTE mimetype TEXT, + ADD ATTRIBUTE size DOUBLE PRECISION, + ADD ATTRIBUTE w DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_user_input_attachment_info( + h DOUBLE PRECISION DEFAULT NULL, + mimetype TEXT DEFAULT NULL, + size DOUBLE PRECISION DEFAULT NULL, + w DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment_info +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + h, mimetype, size, w + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_user_input_attachment_info; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie_field[], + ADD ATTRIBUTE url TEXT, + ADD ATTRIBUTE extract_js TEXT, + ADD ATTRIBUTE user_agent TEXT, + ADD ATTRIBUTE wait_for_url_pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_cookie( + fields beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie_field[], + url TEXT, + extract_js TEXT DEFAULT NULL, + user_agent TEXT DEFAULT NULL, + wait_for_url_pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, url, extract_js, user_agent, wait_for_url_pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie_field + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE cookie_domain TEXT, + ADD ATTRIBUTE request_url_regex TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_cookie_field( + name TEXT, + type TEXT, + cookie_domain TEXT DEFAULT NULL, + request_url_regex TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + name, type, cookie_domain, request_url_regex + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_cookie_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_complete + ADD ATTRIBUTE user_login_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_submit_user_input_response_complete( + user_login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_complete +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + user_login_id + )::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response_complete; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_display_and_wait, + ADD ATTRIBUTE instructions TEXT, + ADD ATTRIBUTE login_id TEXT, + ADD ATTRIBUTE step_id TEXT, + ADD ATTRIBUTE user_input beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input, + ADD ATTRIBUTE cookies beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie, + ADD ATTRIBUTE complete beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_complete; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response( + type TEXT, + display_and_wait beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_display_and_wait DEFAULT NULL, + instructions TEXT DEFAULT NULL, + login_id TEXT DEFAULT NULL, + step_id TEXT DEFAULT NULL, + user_input beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input DEFAULT NULL, + cookies beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie DEFAULT NULL, + complete beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_complete DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, + display_and_wait, + instructions, + login_id, + step_id, + user_input, + cookies, + complete + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_display_and_wait + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE data TEXT, + ADD ATTRIBUTE image_url TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_display_and_wait( + type TEXT, data TEXT DEFAULT NULL, image_url TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_display_and_wait +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + type, data, image_url + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_display_and_wait; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_field[], + ADD ATTRIBUTE attachments beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_user_input( + fields beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_field[], + attachments beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, attachments + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_field + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE default_value TEXT, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE options TEXT[], + ADD ATTRIBUTE pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_user_input_field( + id TEXT, + name TEXT, + type TEXT, + default_value TEXT DEFAULT NULL, + description TEXT DEFAULT NULL, + options TEXT[] DEFAULT NULL, + pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, name, type, default_value, description, options, pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment + ADD ATTRIBUTE content TEXT, + ADD ATTRIBUTE filename TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE info beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment_info; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_user_input_attachment( + content TEXT, + filename TEXT, + type TEXT, + info beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment_info DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, filename, type, info + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment_info + ADD ATTRIBUTE h DOUBLE PRECISION, + ADD ATTRIBUTE mimetype TEXT, + ADD ATTRIBUTE size DOUBLE PRECISION, + ADD ATTRIBUTE w DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_user_input_attachment_info( + h DOUBLE PRECISION DEFAULT NULL, + mimetype TEXT DEFAULT NULL, + size DOUBLE PRECISION DEFAULT NULL, + w DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment_info +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + h, mimetype, size, w + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_user_input_attachment_info; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie + ADD ATTRIBUTE fields beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie_field[], + ADD ATTRIBUTE url TEXT, + ADD ATTRIBUTE extract_js TEXT, + ADD ATTRIBUTE user_agent TEXT, + ADD ATTRIBUTE wait_for_url_pattern TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_cookie( + fields beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie_field[], + url TEXT, + extract_js TEXT DEFAULT NULL, + user_agent TEXT DEFAULT NULL, + wait_for_url_pattern TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + fields, url, extract_js, user_agent, wait_for_url_pattern + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie_field + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE cookie_domain TEXT, + ADD ATTRIBUTE request_url_regex TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_cookie_field( + name TEXT, + type TEXT, + cookie_domain TEXT DEFAULT NULL, + request_url_regex TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie_field +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + name, type, cookie_domain, request_url_regex + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_cookie_field; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_complete + ADD ATTRIBUTE user_login_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_wait_for_step_response_complete( + user_login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_complete +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + user_login_id + )::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response_complete; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response + ADD ATTRIBUTE bridge_bot TEXT, + ADD ATTRIBUTE command_prefix TEXT, + ADD ATTRIBUTE homeserver TEXT, + ADD ATTRIBUTE login_flows beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_flow[], + ADD ATTRIBUTE logins beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login[], + ADD ATTRIBUTE network beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_network, + ADD ATTRIBUTE management_room TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_whoami_response( + bridge_bot TEXT, + command_prefix TEXT, + homeserver TEXT, + login_flows beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_flow[], + logins beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login[], + network beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_network, + management_room TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + bridge_bot, + command_prefix, + homeserver, + login_flows, + logins, + network, + management_room + )::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_flow + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE description TEXT, + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_whoami_response_login_flow( + id TEXT, description TEXT, name TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_flow +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, description, name + )::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_flow; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE profile beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_profile, + ADD ATTRIBUTE state beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_state, + ADD ATTRIBUTE space_room TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_whoami_response_login( + id TEXT, + name TEXT, + profile beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_profile, + state beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_state, + space_room TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, name, profile, state, space_room + )::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_profile + ADD ATTRIBUTE avatar TEXT, + ADD ATTRIBUTE email TEXT, + ADD ATTRIBUTE name TEXT, + ADD ATTRIBUTE phone TEXT, + ADD ATTRIBUTE username TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_whoami_response_login_profile( + avatar TEXT DEFAULT NULL, + email TEXT DEFAULT NULL, + name TEXT DEFAULT NULL, + phone TEXT DEFAULT NULL, + username TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_profile +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + avatar, email, name, phone, username + )::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_profile; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_state + ADD ATTRIBUTE state_event TEXT, + ADD ATTRIBUTE "timestamp" DOUBLE PRECISION, + ADD ATTRIBUTE error TEXT, + ADD ATTRIBUTE info JSONB, + ADD ATTRIBUTE message TEXT, + ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_whoami_response_login_state( + state_event TEXT, + "timestamp" DOUBLE PRECISION, + error TEXT DEFAULT NULL, + info JSONB DEFAULT NULL, + message TEXT DEFAULT NULL, + reason TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + state_event, "timestamp", error, info, message, reason + )::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_login_state; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_network + ADD ATTRIBUTE beeper_bridge_type TEXT, + ADD ATTRIBUTE displayname TEXT, + ADD ATTRIBUTE network_icon TEXT, + ADD ATTRIBUTE network_id TEXT, + ADD ATTRIBUTE network_url TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.make_auth_whoami_response_network( + beeper_bridge_type TEXT, + displayname TEXT, + network_icon TEXT, + network_id TEXT, + network_url TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_network +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + beeper_bridge_type, displayname, network_icon, network_id, network_url + )::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response_network; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._list_flows( + bridge_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.list_flows( + bridge_id=bridge_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.list_flows( + bridge_id TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_list_flows_response, + beeper_desktop_api_matrix_bridges_auth._list_flows(bridge_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._list_logins( + bridge_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.list_logins( + bridge_id=bridge_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.list_logins( + bridge_id TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_list_logins_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_list_logins_response, + beeper_desktop_api_matrix_bridges_auth._list_logins(bridge_id) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._logout( + bridge_id TEXT, login_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.logout( + bridge_id=bridge_id, + login_id=login_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.logout( + bridge_id TEXT, login_id TEXT +) +RETURNS JSONB +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_bridges_auth._logout(bridge_id, login_id); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._start_login( + bridge_id TEXT, flow_id TEXT, login_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.start_login( + bridge_id=bridge_id, + flow_id=flow_id, + login_id=not_given if login_id is None else login_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.start_login( + bridge_id TEXT, flow_id TEXT, login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_start_login_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_start_login_response, + beeper_desktop_api_matrix_bridges_auth._start_login( + bridge_id, flow_id, login_id + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._submit_cookies( + bridge_id TEXT, login_process_id TEXT, step_id TEXT, body JSONB +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + import json + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.submit_cookies( + bridge_id=bridge_id, + login_process_id=login_process_id, + step_id=step_id, + body=json.loads(body), + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.submit_cookies( + bridge_id TEXT, login_process_id TEXT, step_id TEXT, body JSONB +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_submit_cookies_response, + beeper_desktop_api_matrix_bridges_auth._submit_cookies( + bridge_id, login_process_id, step_id, body + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._submit_user_input( + bridge_id TEXT, login_process_id TEXT, step_id TEXT, body JSONB +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + import json + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.submit_user_input( + bridge_id=bridge_id, + login_process_id=login_process_id, + step_id=step_id, + body=json.loads(body), + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.submit_user_input( + bridge_id TEXT, login_process_id TEXT, step_id TEXT, body JSONB +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_submit_user_input_response, + beeper_desktop_api_matrix_bridges_auth._submit_user_input( + bridge_id, login_process_id, step_id, body + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._wait_for_step( + bridge_id TEXT, login_process_id TEXT, step_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.wait_for_step( + bridge_id=bridge_id, + login_process_id=login_process_id, + step_id=step_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.wait_for_step( + bridge_id TEXT, login_process_id TEXT, step_id TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_wait_for_step_response, + beeper_desktop_api_matrix_bridges_auth._wait_for_step( + bridge_id, login_process_id, step_id + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth._whoami( + bridge_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.auth.with_raw_response.whoami( + bridge_id=bridge_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_auth.whoami( + bridge_id TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_auth.auth_whoami_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_auth.auth_whoami_response, + beeper_desktop_api_matrix_bridges_auth._whoami(bridge_id) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_bridges_capabilities.sql b/sql/beeper_desktop_api_matrix_bridges_capabilities.sql new file mode 100644 index 0000000..9777d35 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_bridges_capabilities.sql @@ -0,0 +1,29 @@ +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_capabilities._retrieve( + bridge_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.capabilities.with_raw_response.retrieve( + bridge_id=bridge_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_capabilities.retrieve( + bridge_id TEXT +) +RETURNS JSONB +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_bridges_capabilities._retrieve(bridge_id); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_bridges_contacts.sql b/sql/beeper_desktop_api_matrix_bridges_contacts.sql new file mode 100644 index 0000000..4e98cce --- /dev/null +++ b/sql/beeper_desktop_api_matrix_bridges_contacts.sql @@ -0,0 +1,75 @@ +ALTER TYPE beeper_desktop_api_matrix_bridges_contacts.contact_list_response + ADD ATTRIBUTE contacts beeper_desktop_api_matrix_bridges_contacts.contact_list_response_contact[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_contacts.make_contact_list_response( + contacts beeper_desktop_api_matrix_bridges_contacts.contact_list_response_contact[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_contacts.contact_list_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + contacts + )::beeper_desktop_api_matrix_bridges_contacts.contact_list_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_contacts.contact_list_response_contact + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE avatar_url TEXT, + ADD ATTRIBUTE dm_room_mxid TEXT, + ADD ATTRIBUTE identifiers TEXT[], + ADD ATTRIBUTE mxid TEXT, + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_contacts.make_contact_list_response_contact( + id TEXT, + avatar_url TEXT DEFAULT NULL, + dm_room_mxid TEXT DEFAULT NULL, + identifiers TEXT[] DEFAULT NULL, + mxid TEXT DEFAULT NULL, + name TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_contacts.contact_list_response_contact +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, avatar_url, dm_room_mxid, identifiers, mxid, name + )::beeper_desktop_api_matrix_bridges_contacts.contact_list_response_contact; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_contacts._list( + bridge_id TEXT, login_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.contacts.with_raw_response.list( + bridge_id=bridge_id, + login_id=not_given if login_id is None else login_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_contacts.list( + bridge_id TEXT, login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_contacts.contact_list_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_contacts.contact_list_response, + beeper_desktop_api_matrix_bridges_contacts._list(bridge_id, login_id) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_bridges_rooms.sql b/sql/beeper_desktop_api_matrix_bridges_rooms.sql new file mode 100644 index 0000000..22518e3 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_bridges_rooms.sql @@ -0,0 +1,216 @@ +ALTER TYPE beeper_desktop_api_matrix_bridges_rooms.room_create_dm_response + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE avatar_url TEXT, + ADD ATTRIBUTE dm_room_mxid TEXT, + ADD ATTRIBUTE identifiers TEXT[], + ADD ATTRIBUTE mxid TEXT, + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.make_room_create_dm_response( + id TEXT, + avatar_url TEXT DEFAULT NULL, + dm_room_mxid TEXT DEFAULT NULL, + identifiers TEXT[] DEFAULT NULL, + mxid TEXT DEFAULT NULL, + name TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.room_create_dm_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, avatar_url, dm_room_mxid, identifiers, mxid, name + )::beeper_desktop_api_matrix_bridges_rooms.room_create_dm_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_rooms.room_create_group_response + ADD ATTRIBUTE id TEXT, ADD ATTRIBUTE mxid TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.make_room_create_group_response( + id TEXT, mxid TEXT +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.room_create_group_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, mxid + )::beeper_desktop_api_matrix_bridges_rooms.room_create_group_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_avatar + ADD ATTRIBUTE url TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.make_create_group_params_avatar( + url TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.create_group_params_avatar +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + url + )::beeper_desktop_api_matrix_bridges_rooms.create_group_params_avatar; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_disappear + ADD ATTRIBUTE timer DOUBLE PRECISION, ADD ATTRIBUTE type TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.make_create_group_params_disappear( + timer DOUBLE PRECISION DEFAULT NULL, type TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.create_group_params_disappear +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + timer, type + )::beeper_desktop_api_matrix_bridges_rooms.create_group_params_disappear; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_name + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.make_create_group_params_name( + name TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.create_group_params_name +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + name + )::beeper_desktop_api_matrix_bridges_rooms.create_group_params_name; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_rooms.create_group_params_topic + ADD ATTRIBUTE topic TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.make_create_group_params_topic( + topic TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.create_group_params_topic +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + topic + )::beeper_desktop_api_matrix_bridges_rooms.create_group_params_topic; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms._create_dm( + bridge_id TEXT, identifier TEXT, login_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.rooms.with_raw_response.create_dm( + bridge_id=bridge_id, + identifier=identifier, + login_id=not_given if login_id is None else login_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.create_dm( + bridge_id TEXT, identifier TEXT, login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.room_create_dm_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_rooms.room_create_dm_response, + beeper_desktop_api_matrix_bridges_rooms._create_dm( + bridge_id, identifier, login_id + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms._create_group( + bridge_id TEXT, + group_type TEXT, + login_id TEXT DEFAULT NULL, + avatar beeper_desktop_api_matrix_bridges_rooms.create_group_params_avatar DEFAULT NULL, + disappear beeper_desktop_api_matrix_bridges_rooms.create_group_params_disappear DEFAULT NULL, + name beeper_desktop_api_matrix_bridges_rooms.create_group_params_name DEFAULT NULL, + parent JSONB DEFAULT NULL, + participants TEXT[] DEFAULT NULL, + room_id TEXT DEFAULT NULL, + topic beeper_desktop_api_matrix_bridges_rooms.create_group_params_topic DEFAULT NULL, + type TEXT DEFAULT NULL, + username TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + import json + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.rooms.with_raw_response.create_group( + bridge_id=bridge_id, + group_type=group_type, + login_id=not_given if login_id is None else login_id, + avatar=not_given if avatar is None else GD["__beeper_desktop_api_context__"].strip_none(avatar), + disappear=not_given if disappear is None else GD["__beeper_desktop_api_context__"].strip_none(disappear), + name=not_given if name is None else GD["__beeper_desktop_api_context__"].strip_none(name), + parent=not_given if parent is None else json.loads(parent), + participants=not_given if participants is None else participants, + room_id=not_given if room_id is None else room_id, + topic=not_given if topic is None else GD["__beeper_desktop_api_context__"].strip_none(topic), + type=not_given if type is None else type, + username=not_given if username is None else username, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_rooms.create_group( + bridge_id TEXT, + group_type TEXT, + login_id TEXT DEFAULT NULL, + avatar beeper_desktop_api_matrix_bridges_rooms.create_group_params_avatar DEFAULT NULL, + disappear beeper_desktop_api_matrix_bridges_rooms.create_group_params_disappear DEFAULT NULL, + name beeper_desktop_api_matrix_bridges_rooms.create_group_params_name DEFAULT NULL, + parent JSONB DEFAULT NULL, + participants TEXT[] DEFAULT NULL, + room_id TEXT DEFAULT NULL, + topic beeper_desktop_api_matrix_bridges_rooms.create_group_params_topic DEFAULT NULL, + type TEXT DEFAULT NULL, + username TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_rooms.room_create_group_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_rooms.room_create_group_response, + beeper_desktop_api_matrix_bridges_rooms._create_group( + bridge_id, + group_type, + login_id, + avatar, + disappear, + name, + parent, + participants, + room_id, + topic, + type, + username + ) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_bridges_users.sql b/sql/beeper_desktop_api_matrix_bridges_users.sql new file mode 100644 index 0000000..f1caaae --- /dev/null +++ b/sql/beeper_desktop_api_matrix_bridges_users.sql @@ -0,0 +1,140 @@ +ALTER TYPE beeper_desktop_api_matrix_bridges_users.user_resolve_response + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE avatar_url TEXT, + ADD ATTRIBUTE dm_room_mxid TEXT, + ADD ATTRIBUTE identifiers TEXT[], + ADD ATTRIBUTE mxid TEXT, + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users.make_user_resolve_response( + id TEXT, + avatar_url TEXT DEFAULT NULL, + dm_room_mxid TEXT DEFAULT NULL, + identifiers TEXT[] DEFAULT NULL, + mxid TEXT DEFAULT NULL, + name TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_users.user_resolve_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, avatar_url, dm_room_mxid, identifiers, mxid, name + )::beeper_desktop_api_matrix_bridges_users.user_resolve_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_users.user_search_response + ADD ATTRIBUTE results beeper_desktop_api_matrix_bridges_users.user_search_response_result[]; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users.make_user_search_response( + results beeper_desktop_api_matrix_bridges_users.user_search_response_result[] DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_users.user_search_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + results + )::beeper_desktop_api_matrix_bridges_users.user_search_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_bridges_users.user_search_response_result + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE avatar_url TEXT, + ADD ATTRIBUTE dm_room_mxid TEXT, + ADD ATTRIBUTE identifiers TEXT[], + ADD ATTRIBUTE mxid TEXT, + ADD ATTRIBUTE name TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users.make_user_search_response_result( + id TEXT, + avatar_url TEXT DEFAULT NULL, + dm_room_mxid TEXT DEFAULT NULL, + identifiers TEXT[] DEFAULT NULL, + mxid TEXT DEFAULT NULL, + name TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_users.user_search_response_result +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + id, avatar_url, dm_room_mxid, identifiers, mxid, name + )::beeper_desktop_api_matrix_bridges_users.user_search_response_result; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users._resolve( + bridge_id TEXT, identifier TEXT, login_id TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.users.with_raw_response.resolve( + bridge_id=bridge_id, + identifier=identifier, + login_id=not_given if login_id is None else login_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users.resolve( + bridge_id TEXT, identifier TEXT, login_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_users.user_resolve_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_users.user_resolve_response, + beeper_desktop_api_matrix_bridges_users._resolve( + bridge_id, identifier, login_id + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users._search( + bridge_id TEXT, login_id TEXT DEFAULT NULL, query TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.bridges.users.with_raw_response.search( + bridge_id=bridge_id, + login_id=not_given if login_id is None else login_id, + query=not_given if query is None else query, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_bridges_users.search( + bridge_id TEXT, login_id TEXT DEFAULT NULL, query TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_bridges_users.user_search_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_bridges_users.user_search_response, + beeper_desktop_api_matrix_bridges_users._search( + bridge_id, login_id, query + ) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_rooms.sql b/sql/beeper_desktop_api_matrix_rooms.sql new file mode 100644 index 0000000..eab0598 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_rooms.sql @@ -0,0 +1,233 @@ +ALTER TYPE beeper_desktop_api_matrix_rooms.room_create_response + ADD ATTRIBUTE room_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.make_room_create_response( + room_id TEXT +) +RETURNS beeper_desktop_api_matrix_rooms.room_create_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(room_id)::beeper_desktop_api_matrix_rooms.room_create_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_rooms.room_join_response + ADD ATTRIBUTE room_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.make_room_join_response( + room_id TEXT +) +RETURNS beeper_desktop_api_matrix_rooms.room_join_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW(room_id)::beeper_desktop_api_matrix_rooms.room_join_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_rooms.create_params_initial_state + ADD ATTRIBUTE content JSONB, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE state_key TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.make_create_params_initial_state( + content JSONB, type TEXT, state_key TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms.create_params_initial_state +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, type, state_key + )::beeper_desktop_api_matrix_rooms.create_params_initial_state; +$$; + +ALTER TYPE beeper_desktop_api_matrix_rooms.create_params_invite_3pid + ADD ATTRIBUTE address TEXT, + ADD ATTRIBUTE id_access_token TEXT, + ADD ATTRIBUTE id_server TEXT, + ADD ATTRIBUTE medium TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.make_create_params_invite_3pid( + address TEXT, id_access_token TEXT, id_server TEXT, medium TEXT +) +RETURNS beeper_desktop_api_matrix_rooms.create_params_invite_3pid +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + address, id_access_token, id_server, medium + )::beeper_desktop_api_matrix_rooms.create_params_invite_3pid; +$$; + +ALTER TYPE beeper_desktop_api_matrix_rooms.join_params_third_party_signed + ADD ATTRIBUTE token TEXT, + ADD ATTRIBUTE mxid TEXT, + ADD ATTRIBUTE sender TEXT, + ADD ATTRIBUTE signatures JSONB; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.make_join_params_third_party_signed( + token TEXT, mxid TEXT, sender TEXT, signatures JSONB +) +RETURNS beeper_desktop_api_matrix_rooms.join_params_third_party_signed +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + token, mxid, sender, signatures + )::beeper_desktop_api_matrix_rooms.join_params_third_party_signed; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms._create( + creation_content JSONB DEFAULT NULL, + initial_state beeper_desktop_api_matrix_rooms.create_params_initial_state[] DEFAULT NULL, + invite TEXT[] DEFAULT NULL, + invite_3pid beeper_desktop_api_matrix_rooms.create_params_invite_3pid[] DEFAULT NULL, + is_direct BOOLEAN DEFAULT NULL, + name TEXT DEFAULT NULL, + power_level_content_override JSONB DEFAULT NULL, + preset TEXT DEFAULT NULL, + room_alias_name TEXT DEFAULT NULL, + room_version TEXT DEFAULT NULL, + topic TEXT DEFAULT NULL, + visibility TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + import json + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.with_raw_response.create( + creation_content=not_given if creation_content is None else json.loads(creation_content), + initial_state=not_given if initial_state is None else GD["__beeper_desktop_api_context__"].strip_none(initial_state), + invite=not_given if invite is None else invite, + invite_3pid=not_given if invite_3pid is None else GD["__beeper_desktop_api_context__"].strip_none(invite_3pid), + is_direct=not_given if is_direct is None else is_direct, + name=not_given if name is None else name, + power_level_content_override=not_given if power_level_content_override is None else json.loads(power_level_content_override), + preset=not_given if preset is None else preset, + room_alias_name=not_given if room_alias_name is None else room_alias_name, + room_version=not_given if room_version is None else room_version, + topic=not_given if topic is None else topic, + visibility=not_given if visibility is None else visibility, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.create( + creation_content JSONB DEFAULT NULL, + initial_state beeper_desktop_api_matrix_rooms.create_params_initial_state[] DEFAULT NULL, + invite TEXT[] DEFAULT NULL, + invite_3pid beeper_desktop_api_matrix_rooms.create_params_invite_3pid[] DEFAULT NULL, + is_direct BOOLEAN DEFAULT NULL, + name TEXT DEFAULT NULL, + power_level_content_override JSONB DEFAULT NULL, + preset TEXT DEFAULT NULL, + room_alias_name TEXT DEFAULT NULL, + room_version TEXT DEFAULT NULL, + topic TEXT DEFAULT NULL, + visibility TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms.room_create_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_rooms.room_create_response, + beeper_desktop_api_matrix_rooms._create( + creation_content, + initial_state, + invite, + invite_3pid, + is_direct, + name, + power_level_content_override, + preset, + room_alias_name, + room_version, + topic, + visibility + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms._join( + room_id_or_alias TEXT, + via TEXT[] DEFAULT NULL, + reason TEXT DEFAULT NULL, + third_party_signed beeper_desktop_api_matrix_rooms.join_params_third_party_signed DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.with_raw_response.join( + room_id_or_alias=room_id_or_alias, + via=not_given if via is None else via, + reason=not_given if reason is None else reason, + third_party_signed=not_given if third_party_signed is None else GD["__beeper_desktop_api_context__"].strip_none(third_party_signed), + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.join( + room_id_or_alias TEXT, + via TEXT[] DEFAULT NULL, + reason TEXT DEFAULT NULL, + third_party_signed beeper_desktop_api_matrix_rooms.join_params_third_party_signed DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms.room_join_response +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_rooms.room_join_response, + beeper_desktop_api_matrix_rooms._join( + room_id_or_alias, via, reason, third_party_signed + ) + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms._leave( + room_id TEXT, reason TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.with_raw_response.leave( + room_id=room_id, + reason=not_given if reason is None else reason, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms.leave( + room_id TEXT, reason TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_rooms._leave(room_id, reason); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_rooms_account_data.sql b/sql/beeper_desktop_api_matrix_rooms_account_data.sql new file mode 100644 index 0000000..68af032 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_rooms_account_data.sql @@ -0,0 +1,68 @@ +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_account_data._retrieve( + user_id TEXT, room_id TEXT, type TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.account_data.with_raw_response.retrieve( + user_id=user_id, + room_id=room_id, + type=type, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_account_data.retrieve( + user_id TEXT, room_id TEXT, type TEXT +) +RETURNS JSONB +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_rooms_account_data._retrieve( + user_id, room_id, type + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_account_data._update( + user_id TEXT, room_id TEXT, type TEXT, body JSONB +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + import json + + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.account_data.with_raw_response.update( + user_id=user_id, + room_id=room_id, + type=type, + body=json.loads(body), + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_account_data.update( + user_id TEXT, room_id TEXT, type TEXT, body JSONB +) +RETURNS JSONB +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_rooms_account_data._update( + user_id, room_id, type, body + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_rooms_events.sql b/sql/beeper_desktop_api_matrix_rooms_events.sql new file mode 100644 index 0000000..5f23137 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_rooms_events.sql @@ -0,0 +1,92 @@ +ALTER TYPE beeper_desktop_api_matrix_rooms_events.event_retrieve_response + ADD ATTRIBUTE content JSONB, + ADD ATTRIBUTE event_id TEXT, + ADD ATTRIBUTE origin_server_ts BIGINT, + ADD ATTRIBUTE room_id TEXT, + ADD ATTRIBUTE sender TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE state_key TEXT, + ADD ATTRIBUTE unsigned beeper_desktop_api_matrix_rooms_events.event_retrieve_response_unsigned; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_events.make_event_retrieve_response( + content JSONB, + event_id TEXT, + origin_server_ts BIGINT, + room_id TEXT, + sender TEXT, + type TEXT, + state_key TEXT DEFAULT NULL, + unsigned beeper_desktop_api_matrix_rooms_events.event_retrieve_response_unsigned DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms_events.event_retrieve_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, + event_id, + origin_server_ts, + room_id, + sender, + type, + state_key, + unsigned + )::beeper_desktop_api_matrix_rooms_events.event_retrieve_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_rooms_events.event_retrieve_response_unsigned + ADD ATTRIBUTE age BIGINT, + ADD ATTRIBUTE membership TEXT, + ADD ATTRIBUTE prev_content JSONB, + ADD ATTRIBUTE redacted_because JSONB, + ADD ATTRIBUTE transaction_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_events.make_event_retrieve_response_unsigned( + age BIGINT DEFAULT NULL, + membership TEXT DEFAULT NULL, + prev_content JSONB DEFAULT NULL, + redacted_because JSONB DEFAULT NULL, + transaction_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms_events.event_retrieve_response_unsigned +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + age, membership, prev_content, redacted_because, transaction_id + )::beeper_desktop_api_matrix_rooms_events.event_retrieve_response_unsigned; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_events._retrieve( + room_id TEXT, event_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.events.with_raw_response.retrieve( + room_id=room_id, + event_id=event_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_events.retrieve( + room_id TEXT, event_id TEXT +) +RETURNS beeper_desktop_api_matrix_rooms_events.event_retrieve_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api_matrix_rooms_events.event_retrieve_response, + beeper_desktop_api_matrix_rooms_events._retrieve(room_id, event_id) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_rooms_state.sql b/sql/beeper_desktop_api_matrix_rooms_state.sql new file mode 100644 index 0000000..e2df3c4 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_rooms_state.sql @@ -0,0 +1,128 @@ +ALTER TYPE beeper_desktop_api_matrix_rooms_state.state_list_response + ADD ATTRIBUTE content JSONB, + ADD ATTRIBUTE event_id TEXT, + ADD ATTRIBUTE origin_server_ts BIGINT, + ADD ATTRIBUTE room_id TEXT, + ADD ATTRIBUTE sender TEXT, + ADD ATTRIBUTE type TEXT, + ADD ATTRIBUTE state_key TEXT, + ADD ATTRIBUTE unsigned beeper_desktop_api_matrix_rooms_state.state_list_response_unsigned; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_state.make_state_list_response( + content JSONB, + event_id TEXT, + origin_server_ts BIGINT, + room_id TEXT, + sender TEXT, + type TEXT, + state_key TEXT DEFAULT NULL, + unsigned beeper_desktop_api_matrix_rooms_state.state_list_response_unsigned DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms_state.state_list_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + content, + event_id, + origin_server_ts, + room_id, + sender, + type, + state_key, + unsigned + )::beeper_desktop_api_matrix_rooms_state.state_list_response; +$$; + +ALTER TYPE beeper_desktop_api_matrix_rooms_state.state_list_response_unsigned + ADD ATTRIBUTE age BIGINT, + ADD ATTRIBUTE membership TEXT, + ADD ATTRIBUTE prev_content JSONB, + ADD ATTRIBUTE redacted_because JSONB, + ADD ATTRIBUTE transaction_id TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_state.make_state_list_response_unsigned( + age BIGINT DEFAULT NULL, + membership TEXT DEFAULT NULL, + prev_content JSONB DEFAULT NULL, + redacted_because JSONB DEFAULT NULL, + transaction_id TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_matrix_rooms_state.state_list_response_unsigned +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + age, membership, prev_content, redacted_because, transaction_id + )::beeper_desktop_api_matrix_rooms_state.state_list_response_unsigned; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_state._retrieve( + room_id TEXT, event_type TEXT, state_key TEXT, format TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + from beeper_desktop_api._types import not_given + + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.state.with_raw_response.retrieve( + room_id=room_id, + event_type=event_type, + state_key=state_key, + format=not_given if format is None else format, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_state.retrieve( + room_id TEXT, event_type TEXT, state_key TEXT, format TEXT DEFAULT NULL +) +RETURNS JSONB +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_rooms_state._retrieve( + room_id, event_type, state_key, format + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_state._list( + room_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.rooms.state.with_raw_response.list( + room_id=room_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_rooms_state.list( + room_id TEXT +) +RETURNS SETOF beeper_desktop_api_matrix_rooms_state.state_list_response +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN QUERY SELECT * FROM jsonb_populate_recordset( + NULL::beeper_desktop_api_matrix_rooms_state.state_list_response, + beeper_desktop_api_matrix_rooms_state._list(room_id) + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_users.sql b/sql/beeper_desktop_api_matrix_users.sql new file mode 100644 index 0000000..6aa1118 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_users.sql @@ -0,0 +1,29 @@ +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_users._retrieve_profile( + user_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.users.with_raw_response.retrieve_profile( + user_id=user_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_users.retrieve_profile( + user_id TEXT +) +RETURNS JSONB +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_users._retrieve_profile(user_id); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_matrix_users_account_data.sql b/sql/beeper_desktop_api_matrix_users_account_data.sql new file mode 100644 index 0000000..0964d39 --- /dev/null +++ b/sql/beeper_desktop_api_matrix_users_account_data.sql @@ -0,0 +1,66 @@ +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_users_account_data._retrieve( + user_id TEXT, type TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.matrix.users.account_data.with_raw_response.retrieve( + user_id=user_id, + type=type, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_users_account_data.retrieve( + user_id TEXT, type TEXT +) +RETURNS JSONB +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_users_account_data._retrieve( + user_id, type + ); + END; +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_users_account_data._update( + user_id TEXT, type TEXT, body JSONB +) +RETURNS JSONB +LANGUAGE plpython3u +AS $$ + import json + + response = GD["__beeper_desktop_api_context__"].client.matrix.users.account_data.with_raw_response.update( + user_id=user_id, + type=type, + body=json.loads(body), + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_matrix_users_account_data.update( + user_id TEXT, type TEXT, body JSONB +) +RETURNS JSONB +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN beeper_desktop_api_matrix_users_account_data._update( + user_id, type, body + ); + END; +$$; \ No newline at end of file diff --git a/sql/beeper_desktop_api_messages.sql b/sql/beeper_desktop_api_messages.sql index 2eae195..70eace2 100644 --- a/sql/beeper_desktop_api_messages.sql +++ b/sql/beeper_desktop_api_messages.sql @@ -1,20 +1,151 @@ ALTER TYPE beeper_desktop_api_messages.message_update_response + ADD ATTRIBUTE id TEXT, + ADD ATTRIBUTE accountID TEXT, ADD ATTRIBUTE chatID TEXT, + ADD ATTRIBUTE senderID TEXT, + ADD ATTRIBUTE sortKey TEXT, + ADD ATTRIBUTE "timestamp" TIMESTAMP, ADD ATTRIBUTE messageID TEXT, - ADD ATTRIBUTE success BOOLEAN; + ADD ATTRIBUTE success BOOLEAN, + ADD ATTRIBUTE attachments beeper_desktop_api.attachment[], + ADD ATTRIBUTE editedTimestamp TIMESTAMP, + ADD ATTRIBUTE isDeleted BOOLEAN, + ADD ATTRIBUTE isHidden BOOLEAN, + ADD ATTRIBUTE isSender BOOLEAN, + ADD ATTRIBUTE isUnread BOOLEAN, + ADD ATTRIBUTE linkedMessageID TEXT, + ADD ATTRIBUTE links beeper_desktop_api_messages.message_update_response_link[], + ADD ATTRIBUTE mentions TEXT[], + ADD ATTRIBUTE reactions beeper_desktop_api.reaction[], + ADD ATTRIBUTE seen JSONB, + ADD ATTRIBUTE senderName TEXT, + ADD ATTRIBUTE sendStatus beeper_desktop_api_messages.message_update_response_send_status, + ADD ATTRIBUTE text TEXT, + ADD ATTRIBUTE type TEXT; CREATE OR REPLACE FUNCTION beeper_desktop_api_messages.make_message_update_response( - chatID TEXT, messageID TEXT, success BOOLEAN + id TEXT, + accountID TEXT, + chatID TEXT, + senderID TEXT, + sortKey TEXT, + "timestamp" TIMESTAMP, + messageID TEXT, + success BOOLEAN, + attachments beeper_desktop_api.attachment[] DEFAULT NULL, + editedTimestamp TIMESTAMP DEFAULT NULL, + isDeleted BOOLEAN DEFAULT NULL, + isHidden BOOLEAN DEFAULT NULL, + isSender BOOLEAN DEFAULT NULL, + isUnread BOOLEAN DEFAULT NULL, + linkedMessageID TEXT DEFAULT NULL, + links beeper_desktop_api_messages.message_update_response_link[] DEFAULT NULL, + mentions TEXT[] DEFAULT NULL, + reactions beeper_desktop_api.reaction[] DEFAULT NULL, + seen JSONB DEFAULT NULL, + senderName TEXT DEFAULT NULL, + sendStatus beeper_desktop_api_messages.message_update_response_send_status DEFAULT NULL, + text TEXT DEFAULT NULL, + type TEXT DEFAULT NULL ) RETURNS beeper_desktop_api_messages.message_update_response LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( - chatID, messageID, success + id, + accountID, + chatID, + senderID, + sortKey, + "timestamp", + messageID, + success, + attachments, + editedTimestamp, + isDeleted, + isHidden, + isSender, + isUnread, + linkedMessageID, + links, + mentions, + reactions, + seen, + senderName, + sendStatus, + text, + type )::beeper_desktop_api_messages.message_update_response; $$; +ALTER TYPE beeper_desktop_api_messages.message_update_response_link + ADD ATTRIBUTE title TEXT, + ADD ATTRIBUTE url TEXT, + ADD ATTRIBUTE favicon TEXT, + ADD ATTRIBUTE img TEXT, + ADD ATTRIBUTE imgSize beeper_desktop_api_messages.message_update_response_link_img_size, + ADD ATTRIBUTE originalURL TEXT, + ADD ATTRIBUTE summary TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages.make_message_update_response_link( + title TEXT, + url TEXT, + favicon TEXT DEFAULT NULL, + img TEXT DEFAULT NULL, + imgSize beeper_desktop_api_messages.message_update_response_link_img_size DEFAULT NULL, + originalURL TEXT DEFAULT NULL, + summary TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_messages.message_update_response_link +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + title, url, favicon, img, imgSize, originalURL, summary + )::beeper_desktop_api_messages.message_update_response_link; +$$; + +ALTER TYPE beeper_desktop_api_messages.message_update_response_link_img_size + ADD ATTRIBUTE height DOUBLE PRECISION, ADD ATTRIBUTE width DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages.make_message_update_response_link_img_size( + height DOUBLE PRECISION DEFAULT NULL, width DOUBLE PRECISION DEFAULT NULL +) +RETURNS beeper_desktop_api_messages.message_update_response_link_img_size +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + height, width + )::beeper_desktop_api_messages.message_update_response_link_img_size; +$$; + +ALTER TYPE beeper_desktop_api_messages.message_update_response_send_status + ADD ATTRIBUTE status TEXT, + ADD ATTRIBUTE "timestamp" TIMESTAMP, + ADD ATTRIBUTE deliveredToUsers TEXT[], + ADD ATTRIBUTE internalError TEXT, + ADD ATTRIBUTE message TEXT, + ADD ATTRIBUTE reason TEXT; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages.make_message_update_response_send_status( + status TEXT, + "timestamp" TIMESTAMP, + deliveredToUsers TEXT[] DEFAULT NULL, + internalError TEXT DEFAULT NULL, + message TEXT DEFAULT NULL, + reason TEXT DEFAULT NULL +) +RETURNS beeper_desktop_api_messages.message_update_response_send_status +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + status, "timestamp", deliveredToUsers, internalError, message, reason + )::beeper_desktop_api_messages.message_update_response_send_status; +$$; + ALTER TYPE beeper_desktop_api_messages.message_send_response ADD ATTRIBUTE chatID TEXT, ADD ATTRIBUTE pendingMessageID TEXT; @@ -70,6 +201,40 @@ AS $$ )::beeper_desktop_api_messages.send_params_attachment_send_params_size; $$; +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages._retrieve( + chat_id TEXT, message_id TEXT +) +RETURNS JSONB +LANGUAGE plpython3u +STABLE +AS $$ + response = GD["__beeper_desktop_api_context__"].client.messages.with_raw_response.retrieve( + chat_id=chat_id, + message_id=message_id, + ) + + # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted + # fields instead of defaulting them to NULL, but we want to be more lenient, which we handle in the + # caller later. + return response.text() +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages.retrieve( + chat_id TEXT, message_id TEXT +) +RETURNS beeper_desktop_api.message +LANGUAGE plpgsql +STABLE +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + RETURN jsonb_populate_record( + NULL::beeper_desktop_api.message, + beeper_desktop_api_messages._retrieve(chat_id, message_id) + ); + END; +$$; + CREATE OR REPLACE FUNCTION beeper_desktop_api_messages._update( chat_id TEXT, message_id TEXT, text TEXT ) @@ -161,14 +326,14 @@ STABLE AS $$ import json from beeper_desktop_api.types.shared import Message - from beeper_desktop_api.pagination import SyncCursorSortKey + from beeper_desktop_api.pagination import SyncCursorNoLimit from beeper_desktop_api._models import FinalRequestOptions from pydantic import TypeAdapter from typing import Any page = GD["__beeper_desktop_api_context__"].client._request_api_list( model=Message, - page=SyncCursorSortKey[Message], + page=SyncCursorNoLimit[Message], options=FinalRequestOptions.construct(**json.loads(request_options)) ) next_page_info = page.next_page_info() @@ -213,6 +378,35 @@ AS $$ SELECT (jsonb_populate_recordset(NULL::beeper_desktop_api.message, data)).* FROM paginated; $$; +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages._delete( + chat_id TEXT, message_id TEXT, for_everyone BOOLEAN DEFAULT NULL +) +RETURNS VOID +LANGUAGE plpython3u +AS $$ + from beeper_desktop_api._types import not_given + + GD["__beeper_desktop_api_context__"].client.messages.delete( + chat_id=chat_id, + message_id=message_id, + for_everyone=not_given if for_everyone is None else for_everyone, + ) +$$; + +CREATE OR REPLACE FUNCTION beeper_desktop_api_messages.delete( + chat_id TEXT, message_id TEXT, for_everyone BOOLEAN DEFAULT NULL +) +RETURNS VOID +LANGUAGE plpgsql +AS $$ + BEGIN + PERFORM beeper_desktop_api_internal.ensure_context(); + PERFORM beeper_desktop_api_messages._delete( + chat_id, message_id, for_everyone + ); + END; +$$; + CREATE OR REPLACE FUNCTION beeper_desktop_api_messages._search_first_page_py( account_ids TEXT[] DEFAULT NULL, chat_ids TEXT[] DEFAULT NULL, diff --git a/test/parallel_schedule b/test/parallel_schedule index c03b55a..c7f94f2 100644 --- a/test/parallel_schedule +++ b/test/parallel_schedule @@ -1,2 +1,2 @@ test: create_extension -test: beeper_desktop_api_test beeper_desktop_api_accounts_test beeper_desktop_api_accounts_contacts_test beeper_desktop_api_chats_test beeper_desktop_api_chats_reminders_test beeper_desktop_api_chats_messages_reactions_test beeper_desktop_api_messages_test beeper_desktop_api_assets_test beeper_desktop_api_info_test \ No newline at end of file +test: beeper_desktop_api_test beeper_desktop_api_app_test beeper_desktop_api_app_login_test beeper_desktop_api_app_e2ee_recovery_code_test beeper_desktop_api_app_e2ee_recovery_code_reset_test beeper_desktop_api_app_e2ee_verification_test beeper_desktop_api_app_e2ee_verification_qr_test beeper_desktop_api_app_e2ee_verification_sas_test beeper_desktop_api_accounts_test beeper_desktop_api_accounts_contacts_test beeper_desktop_api_bridges_test beeper_desktop_api_matrix_users_test beeper_desktop_api_matrix_users_account_data_test beeper_desktop_api_matrix_rooms_test beeper_desktop_api_matrix_rooms_account_data_test beeper_desktop_api_matrix_rooms_state_test beeper_desktop_api_matrix_rooms_events_test beeper_desktop_api_matrix_bridges_auth_test beeper_desktop_api_matrix_bridges_contacts_test beeper_desktop_api_matrix_bridges_users_test beeper_desktop_api_matrix_bridges_rooms_test beeper_desktop_api_matrix_bridges_capabilities_test beeper_desktop_api_chats_test beeper_desktop_api_chats_reminders_test beeper_desktop_api_chats_messages_reactions_test beeper_desktop_api_messages_test beeper_desktop_api_assets_test beeper_desktop_api_info_test \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_accounts_contacts_test.sql b/test/sql/beeper_desktop_api_accounts_contacts_test.sql index 3a34024..dc90446 100644 --- a/test/sql/beeper_desktop_api_accounts_contacts_test.sql +++ b/test/sql/beeper_desktop_api_accounts_contacts_test.sql @@ -1,5 +1,5 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api_accounts_contacts.list(account_id := 'accountID') diff --git a/test/sql/beeper_desktop_api_accounts_test.sql b/test/sql/beeper_desktop_api_accounts_test.sql index bee634f..8d462e6 100644 --- a/test/sql/beeper_desktop_api_accounts_test.sql +++ b/test/sql/beeper_desktop_api_accounts_test.sql @@ -1,5 +1,5 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api_accounts.list(); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_e2ee_recovery_code_reset_test.sql b/test/sql/beeper_desktop_api_app_e2ee_recovery_code_reset_test.sql new file mode 100644 index 0000000..d28f18f --- /dev/null +++ b/test/sql/beeper_desktop_api_app_e2ee_recovery_code_reset_test.sql @@ -0,0 +1,10 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app_e2ee_recovery_code_reset.create(); + +SELECT * +FROM beeper_desktop_api_app_e2ee_recovery_code_reset.confirm( + recovery_code := 'x' +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_e2ee_recovery_code_test.sql b/test/sql/beeper_desktop_api_app_e2ee_recovery_code_test.sql new file mode 100644 index 0000000..19dd3c0 --- /dev/null +++ b/test/sql/beeper_desktop_api_app_e2ee_recovery_code_test.sql @@ -0,0 +1,8 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app_e2ee_recovery_code.mark_backed_up(); + +SELECT * +FROM beeper_desktop_api_app_e2ee_recovery_code.verify(recovery_code := 'x'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_e2ee_verification_qr_test.sql b/test/sql/beeper_desktop_api_app_e2ee_verification_qr_test.sql new file mode 100644 index 0000000..917d79a --- /dev/null +++ b/test/sql/beeper_desktop_api_app_e2ee_verification_qr_test.sql @@ -0,0 +1,10 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification_qr.confirm_scanned( + verification_id := 'x' +); + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification_qr.scan(data := 'x'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_e2ee_verification_sas_test.sql b/test/sql/beeper_desktop_api_app_e2ee_verification_sas_test.sql new file mode 100644 index 0000000..bb166fb --- /dev/null +++ b/test/sql/beeper_desktop_api_app_e2ee_verification_sas_test.sql @@ -0,0 +1,10 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification_sas.confirm( + verification_id := 'x' +); + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification_sas.start(verification_id := 'x'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_e2ee_verification_test.sql b/test/sql/beeper_desktop_api_app_e2ee_verification_test.sql new file mode 100644 index 0000000..ab901b9 --- /dev/null +++ b/test/sql/beeper_desktop_api_app_e2ee_verification_test.sql @@ -0,0 +1,11 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification.create(); + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification.accept(verification_id := 'x'); + +SELECT * +FROM beeper_desktop_api_app_e2ee_verification.cancel(verification_id := 'x'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_login_test.sql b/test/sql/beeper_desktop_api_app_login_test.sql new file mode 100644 index 0000000..34f1d27 --- /dev/null +++ b/test/sql/beeper_desktop_api_app_login_test.sql @@ -0,0 +1,23 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app_login.email( + email := 'dev@stainless.com', request := 'request' +); + +SELECT * +FROM beeper_desktop_api_app_login.register( + accept_terms := TRUE, + lead_token := 'leadToken', + request := 'request', + username := 'x' +); + +SELECT * +FROM beeper_desktop_api_app_login.response( + request := 'request', response := 'response' +); + +SELECT * +FROM beeper_desktop_api_app_login.start(); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_app_test.sql b/test/sql/beeper_desktop_api_app_test.sql new file mode 100644 index 0000000..05297ce --- /dev/null +++ b/test/sql/beeper_desktop_api_app_test.sql @@ -0,0 +1,5 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_app.status(); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_assets_test.sql b/test/sql/beeper_desktop_api_assets_test.sql index b246c23..8d16905 100644 --- a/test/sql/beeper_desktop_api_assets_test.sql +++ b/test/sql/beeper_desktop_api_assets_test.sql @@ -1,5 +1,5 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api_assets.download( diff --git a/test/sql/beeper_desktop_api_bridges_test.sql b/test/sql/beeper_desktop_api_bridges_test.sql new file mode 100644 index 0000000..32bf72b --- /dev/null +++ b/test/sql/beeper_desktop_api_bridges_test.sql @@ -0,0 +1,5 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_bridges.list(); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_chats_messages_reactions_test.sql b/test/sql/beeper_desktop_api_chats_messages_reactions_test.sql index d3f8bee..0d59ca0 100644 --- a/test/sql/beeper_desktop_api_chats_messages_reactions_test.sql +++ b/test/sql/beeper_desktop_api_chats_messages_reactions_test.sql @@ -1,16 +1,16 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api_chats_messages_reactions.delete( chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com', - message_id := 'messageID', + message_id := '1343993', reaction_key := 'x' ); SELECT * FROM beeper_desktop_api_chats_messages_reactions.add( chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com', - message_id := 'messageID', + message_id := '1343993', reaction_key := 'x' ); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_chats_reminders_test.sql b/test/sql/beeper_desktop_api_chats_reminders_test.sql index db5873b..9e3d86e 100644 --- a/test/sql/beeper_desktop_api_chats_reminders_test.sql +++ b/test/sql/beeper_desktop_api_chats_reminders_test.sql @@ -1,11 +1,11 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api_chats_reminders.create( chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com', reminder := beeper_desktop_api_chats_reminders.make_create_params_reminder( - remindAtMs := 0, dismissOnIncomingMessage := TRUE + remindAt := '2025-08-31T23:30:12.520Z', dismissOnIncomingMessage := TRUE ) ); diff --git a/test/sql/beeper_desktop_api_chats_test.sql b/test/sql/beeper_desktop_api_chats_test.sql index c46c02e..40b9700 100644 --- a/test/sql/beeper_desktop_api_chats_test.sql +++ b/test/sql/beeper_desktop_api_chats_test.sql @@ -1,14 +1,23 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * -FROM beeper_desktop_api_chats.create(account_id := 'accountID'); +FROM beeper_desktop_api_chats.create( + account_id := 'accountID', + participant_ids := ARRAY['string'], + type := 'single' +); SELECT * FROM beeper_desktop_api_chats.retrieve( chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com' ); +SELECT * +FROM beeper_desktop_api_chats.update( + chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com' +); + SELECT * FROM beeper_desktop_api_chats.list() LIMIT 42; @@ -18,6 +27,33 @@ FROM beeper_desktop_api_chats.archive( chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com' ); +SELECT * +FROM beeper_desktop_api_chats.mark_read( + chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com' +); + +SELECT * +FROM beeper_desktop_api_chats.mark_unread( + chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com' +); + +SELECT * +FROM beeper_desktop_api_chats.notify_anyway( + chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com' +); + SELECT * FROM beeper_desktop_api_chats.search() -LIMIT 42; \ No newline at end of file +LIMIT 42; + +SELECT * +FROM beeper_desktop_api_chats.start( + account_id := 'accountID', + "user" := beeper_desktop_api_chats.make_start_params_user( + id := 'id', + email := 'email', + fullName := 'fullName', + phoneNumber := 'phoneNumber', + username := 'username' + ) +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_info_test.sql b/test/sql/beeper_desktop_api_info_test.sql index 5598e10..e37887f 100644 --- a/test/sql/beeper_desktop_api_info_test.sql +++ b/test/sql/beeper_desktop_api_info_test.sql @@ -1,5 +1,5 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api_info.retrieve(); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_bridges_auth_test.sql b/test/sql/beeper_desktop_api_matrix_bridges_auth_test.sql new file mode 100644 index 0000000..59bff2e --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_bridges_auth_test.sql @@ -0,0 +1,54 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.list_flows(bridge_id := 'bridgeID'); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.list_logins( + bridge_id := 'bridgeID' +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.logout( + bridge_id := 'bridgeID', login_id := 'bcc68892-b180-414f-9516-b4aadf7d0496' +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.start_login( + bridge_id := 'bridgeID', flow_id := 'qr' +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.submit_cookies( + bridge_id := 'bridgeID', + login_process_id := 'loginProcessID', + step_id := 'stepID', + body := $$ + { + "foo": "string" + } + $$::JSONB +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.submit_user_input( + bridge_id := 'bridgeID', + login_process_id := 'loginProcessID', + step_id := 'stepID', + body := $$ + { + "foo": "string" + } + $$::JSONB +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.wait_for_step( + bridge_id := 'bridgeID', + login_process_id := 'loginProcessID', + step_id := 'stepID' +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_auth.whoami(bridge_id := 'bridgeID'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_bridges_capabilities_test.sql b/test/sql/beeper_desktop_api_matrix_bridges_capabilities_test.sql new file mode 100644 index 0000000..8161b3f --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_bridges_capabilities_test.sql @@ -0,0 +1,7 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_bridges_capabilities.retrieve( + bridge_id := 'bridgeID' +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_bridges_contacts_test.sql b/test/sql/beeper_desktop_api_matrix_bridges_contacts_test.sql new file mode 100644 index 0000000..215ee93 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_bridges_contacts_test.sql @@ -0,0 +1,5 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_bridges_contacts.list(bridge_id := 'bridgeID'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_bridges_rooms_test.sql b/test/sql/beeper_desktop_api_matrix_bridges_rooms_test.sql new file mode 100644 index 0000000..a3563f4 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_bridges_rooms_test.sql @@ -0,0 +1,12 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_bridges_rooms.create_dm( + bridge_id := 'bridgeID', identifier := 'identifier' +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_rooms.create_group( + bridge_id := 'bridgeID', group_type := 'groupType' +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_bridges_users_test.sql b/test/sql/beeper_desktop_api_matrix_bridges_users_test.sql new file mode 100644 index 0000000..3427df9 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_bridges_users_test.sql @@ -0,0 +1,10 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_bridges_users.resolve( + bridge_id := 'bridgeID', identifier := 'identifier' +); + +SELECT * +FROM beeper_desktop_api_matrix_bridges_users.search(bridge_id := 'bridgeID'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_rooms_account_data_test.sql b/test/sql/beeper_desktop_api_matrix_rooms_account_data_test.sql new file mode 100644 index 0000000..f2bd342 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_rooms_account_data_test.sql @@ -0,0 +1,21 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_rooms_account_data.retrieve( + user_id := '@alice:example.com', + room_id := '!726s6s6q:example.com', + type := 'org.example.custom.room.config' +); + +SELECT * +FROM beeper_desktop_api_matrix_rooms_account_data.update( + user_id := '@alice:example.com', + room_id := '!726s6s6q:example.com', + type := 'org.example.custom.room.config', + body := $$ + { + "custom_account_data_key": "custom_account_data_value" + } + $$::JSONB +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_rooms_events_test.sql b/test/sql/beeper_desktop_api_matrix_rooms_events_test.sql new file mode 100644 index 0000000..cbdc211 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_rooms_events_test.sql @@ -0,0 +1,8 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_rooms_events.retrieve( + room_id := '!636q39766251:matrix.org', + event_id := '$asfDuShaf7Gafaw:matrix.org' +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_rooms_state_test.sql b/test/sql/beeper_desktop_api_matrix_rooms_state_test.sql new file mode 100644 index 0000000..93c7bb2 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_rooms_state_test.sql @@ -0,0 +1,14 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_rooms_state.retrieve( + room_id := '!636q39766251:example.com', + event_type := 'm.room.name', + state_key := 'state_key' +); + +SELECT * +FROM beeper_desktop_api_matrix_rooms_state.list( + room_id := '!636q39766251:example.com' +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_rooms_test.sql b/test/sql/beeper_desktop_api_matrix_rooms_test.sql new file mode 100644 index 0000000..6c6d50d --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_rooms_test.sql @@ -0,0 +1,13 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_rooms.create(); + +SELECT * +FROM beeper_desktop_api_matrix_rooms.join( + room_id_or_alias := '!monkeys:matrix.org' +); + +SELECT * +FROM beeper_desktop_api_matrix_rooms.leave(room_id := '!nkl290a:matrix.org'); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_users_account_data_test.sql b/test/sql/beeper_desktop_api_matrix_users_account_data_test.sql new file mode 100644 index 0000000..0fb88a4 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_users_account_data_test.sql @@ -0,0 +1,18 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_users_account_data.retrieve( + user_id := '@alice:example.com', type := 'org.example.custom.config' +); + +SELECT * +FROM beeper_desktop_api_matrix_users_account_data.update( + user_id := '@alice:example.com', + type := 'org.example.custom.config', + body := $$ + { + "custom_account_data_key": "custom_config_value" + } + $$::JSONB +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_matrix_users_test.sql b/test/sql/beeper_desktop_api_matrix_users_test.sql new file mode 100644 index 0000000..c451a40 --- /dev/null +++ b/test/sql/beeper_desktop_api_matrix_users_test.sql @@ -0,0 +1,7 @@ +SET datestyle = 'ISO'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_matrix_users.retrieve_profile( + user_id := '@alice:example.com' +); \ No newline at end of file diff --git a/test/sql/beeper_desktop_api_messages_test.sql b/test/sql/beeper_desktop_api_messages_test.sql index 0872843..d4e3d11 100644 --- a/test/sql/beeper_desktop_api_messages_test.sql +++ b/test/sql/beeper_desktop_api_messages_test.sql @@ -1,10 +1,15 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; + +SELECT * +FROM beeper_desktop_api_messages.retrieve( + chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com', message_id := '1343993' +); SELECT * FROM beeper_desktop_api_messages.update( chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com', - message_id := 'messageID', + message_id := '1343993', text := 'x' ); @@ -14,6 +19,11 @@ FROM beeper_desktop_api_messages.list( ) LIMIT 42; +SELECT * +FROM beeper_desktop_api_messages.delete( + chat_id := '!NCdzlIaMjZUmvmvyHU:beeper.com', message_id := '1343993' +); + SELECT * FROM beeper_desktop_api_messages.search() LIMIT 42; diff --git a/test/sql/beeper_desktop_api_test.sql b/test/sql/beeper_desktop_api_test.sql index ddb5b54..05b90fb 100644 --- a/test/sql/beeper_desktop_api_test.sql +++ b/test/sql/beeper_desktop_api_test.sql @@ -1,5 +1,5 @@ SET datestyle = 'ISO'; -SET beeper_desktop_api.beeper_access_token = 'My Access Token'; +SET beeper_desktop_api.access_token = 'My Access Token'; SELECT * FROM beeper_desktop_api.focus(); diff --git a/uv.lock b/uv.lock index 3e068d8..3b6dfce 100644 --- a/uv.lock +++ b/uv.lock @@ -103,7 +103,7 @@ wheels = [ [[package]] name = "beeper_desktop_api" -version = "0.0.1" +version = "5.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" },