diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1d2d29..3429b7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: test: timeout-minutes: 10 name: test - runs-on: ${{ github.repository == 'stainless-sdks/dedalus-sql' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: ${{ startsWith(github.repository, 'stainless-sdks/') && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..3d2ac0b --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.1.0" +} \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 97d2606..6d1924d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 32 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/dedalus-labs/dedalus-918ae3967dc06a6b31d32b88cf02e77784d8234c1a9baf78763de249b7f8928a.yml -openapi_spec_hash: ccb02923079d91569a17162c88da590b -config_hash: 9cc9389d5c9a7e611f3544ede6b6263a +configured_endpoints: 17 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/dedalus-labs/dedalus-c0e28b234478af75f61bcf42f5f32818d96ec93b1d8239fa0ff1c801c0e4b64f.yml +openapi_spec_hash: a70c391bb0957fc90c5dbf251de8afe4 +config_hash: fa45a5bf161b7291cb5ea20c2da83cc0 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5e66ada --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +## 0.1.0 (2026-09-01) + +Full Changelog: [v0.0.1...v0.1.0](https://github.com/dedalus-labs/dedalus-sql/compare/v0.0.1...v0.1.0) + +### ⚠ BREAKING CHANGES + +* **api:** regenerate SDKs from the current public DCS contract + +### Features + +* **api:** regenerate SDKs from the current public DCS contract ([e6532f1](https://github.com/dedalus-labs/dedalus-sql/commit/e6532f17edd9e984354dfea0ca0f215220ae84f7)) +* **stlc:** configurable CI runner and private-production-repo support in workflow templates ([f6bf4e4](https://github.com/dedalus-labs/dedalus-sql/commit/f6bf4e4302d20285e31d79aaf21d8bcc91ca4e44)) + + +### Chores + +* configure new SDK language ([0d0feb6](https://github.com/dedalus-labs/dedalus-sql/commit/0d0feb6b239467a8be26294d448366b02b1b97d0)) +* **internal:** allow the mock server port to be set with STAINLESS_MOCK_PORT ([0c6beb7](https://github.com/dedalus-labs/dedalus-sql/commit/0c6beb709e8d78aeb6bd4743e32714d9049a4ce1)) +* update SDK settings ([f3f3d85](https://github.com/dedalus-labs/dedalus-sql/commit/f3f3d855ecda74429a2273f3c79f98306afb141c)) diff --git a/META.json b/META.json index 69adc80..dc8c5df 100644 --- a/META.json +++ b/META.json @@ -15,12 +15,12 @@ "resources": { "homepage": "https://docs.dedaluslabs.ai", "bugtracker": { - "web": "https://www.github.com/stainless-sdks/dedalus-sql/issues", + "web": "https://www.github.com/dedalus-labs/dedalus-sql/issues", "mailto": "oss@dedaluslabs.ai" }, "repository": { - "url": "git://github.com/stainless-sdks/dedalus-sql.git", - "web": "https://www.github.com/stainless-sdks/dedalus-sql", + "url": "git://github.com/dedalus-labs/dedalus-sql.git", + "web": "https://www.github.com/dedalus-labs/dedalus-sql", "type": "git" } }, diff --git a/README.md b/README.md index 4c9cc80..d212c2c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ > > This extension has not yet been exhaustively tested in production environments and may be missing some features you'd expect in a stable release. As we continue development, there may be breaking changes that require updates to your code. > -> **We'd love your feedback!** Please share any suggestions, bug reports, feature requests, or general thoughts by [filing an issue](https://www.github.com/stainless-sdks/dedalus-sql/issues/new). +> **We'd love your feedback!** Please share any suggestions, bug reports, feature requests, or general thoughts by [filing an issue](https://www.github.com/dedalus-labs/dedalus-sql/issues/new). The Dedalus API PostgreSQL Extension provides convenient access to the [Dedalus REST API](https://docs.dedaluslabs.ai) from PostgreSQL. @@ -19,7 +19,7 @@ The REST API documentation can be found on [docs.dedaluslabs.ai](https://docs.de Clone the repository: ```sh -git clone git@github.com:stainless-sdks/dedalus-sql.git +git clone git@github.com:dedalus-labs/dedalus-sql.git cd dedalus-sql ``` @@ -60,7 +60,9 @@ This extension requires: ```sql SELECT * -FROM dedalus_usage.retrieve(); +FROM dedalus_machines.retrieve( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); ``` ## Client configuration @@ -184,4 +186,4 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience. -We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/dedalus-sql/issues) with questions, bugs, or suggestions. +We are keen for your feedback; please open an [issue](https://www.github.com/dedalus-labs/dedalus-sql/issues) with questions, bugs, or suggestions. diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..b633d29 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,71 @@ +{ + "packages": { + ".": {} + }, + "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json", + "include-v-in-tag": true, + "include-component-in-tag": false, + "versioning": "prerelease", + "prerelease": true, + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "pull-request-header": "Automated Release PR", + "pull-request-title-pattern": "release: ${version}", + "changelog-sections": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "perf", + "section": "Performance Improvements" + }, + { + "type": "revert", + "section": "Reverts" + }, + { + "type": "chore", + "section": "Chores" + }, + { + "type": "docs", + "section": "Documentation" + }, + { + "type": "style", + "section": "Styles" + }, + { + "type": "refactor", + "section": "Refactors" + }, + { + "type": "test", + "section": "Tests", + "hidden": true + }, + { + "type": "build", + "section": "Build System" + }, + { + "type": "ci", + "section": "Continuous Integration", + "hidden": true + } + ], + "reviewers": [ + "@windsornguyen" + ], + "release-type": "simple", + "extra-files": [ + "dedalus.control", + "META.json", + "Makefile" + ] +} \ No newline at end of file diff --git a/scripts/mock b/scripts/mock index 9c7c439..6376077 100755 --- a/scripts/mock +++ b/scripts/mock @@ -4,6 +4,11 @@ set -e cd "$(dirname "$0")/.." +if [ "$1" == "--install" ]; then + npm exec --package=@stdy/cli@0.22.1 -- steady --version + exit 0 +fi + if [[ -n "$1" && "$1" != '--'* ]]; then URL="$1" shift @@ -20,16 +25,18 @@ fi echo "==> Starting mock server with URL ${URL}" # Run steady mock on the given spec +MOCK_PORT="${STAINLESS_MOCK_PORT:-4010}" + if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout npm exec --package=@stdy/cli@0.22.1 -- steady --version - 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 & + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p "$MOCK_PORT" --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 via health endpoint (max 30s) echo -n "Waiting for server" attempts=0 - while ! curl --silent --fail "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1; do + while ! curl --silent --fail "http://127.0.0.1:$MOCK_PORT/_x-steady/health" >/dev/null 2>&1; do if ! kill -0 $! 2>/dev/null; then echo cat .stdy.log @@ -48,5 +55,5 @@ if [ "$1" == "--daemon" ]; then echo else - 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" + npm exec --package=@stdy/cli@0.22.1 -- steady --host 127.0.0.1 -p "$MOCK_PORT" --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/test b/scripts/test index 90bcaea..929a904 100755 --- a/scripts/test +++ b/scripts/test @@ -9,8 +9,10 @@ GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # No Color +MOCK_PORT="${STAINLESS_MOCK_PORT:-4010}" + function steady_is_running() { - curl --silent "http://127.0.0.1:4010/_x-steady/health" >/dev/null 2>&1 + curl --silent "http://127.0.0.1:$MOCK_PORT/_x-steady/health" >/dev/null 2>&1 } kill_server_on_port() { @@ -27,7 +29,7 @@ function is_overriding_api_base_url() { 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 + trap 'kill_server_on_port "$MOCK_PORT"' EXIT # Start the dev server ./scripts/mock --daemon @@ -43,7 +45,7 @@ elif ! steady_is_running ; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the steady command:" echo - 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 -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.22.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p $MOCK_PORT --validator-query-array-format=repeat --validator-form-array-format=repeat --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" echo exit 1 @@ -52,6 +54,10 @@ else echo fi +if [ -n "${STAINLESS_MOCK_PORT:-}" ] && ! is_overriding_api_base_url ; then + export TEST_API_BASE_URL="http://127.0.0.1:$MOCK_PORT" +fi + echo "==> Detecting PostgreSQL Python executable" PYTHON_EXECUTABLE_PATH=$(pg_config --configure | grep -o "PYTHON=[^ ]*" | cut -d= -f2 | tr -d "'") echo "PostgreSQL uses Python $PYTHON_EXECUTABLE_PATH" diff --git a/sql/_dedalus.sql b/sql/_dedalus.sql index f9131fc..a4bd929 100644 --- a/sql/_dedalus.sql +++ b/sql/_dedalus.sql @@ -113,14 +113,6 @@ CREATE TYPE dedalus_internal.page AS ( next_request_options JSONB ); -CREATE SCHEMA IF NOT EXISTS dedalus_usage; - -CREATE TYPE dedalus_usage.machine_compute_usage AS (); -CREATE TYPE dedalus_usage.machine_compute_usage_row AS (); -CREATE TYPE dedalus_usage.machine_storage_usage AS (); -CREATE TYPE dedalus_usage.machine_storage_usage_row AS (); -CREATE TYPE dedalus_usage.org_usage AS (); - CREATE SCHEMA IF NOT EXISTS dedalus_machines; CREATE TYPE dedalus_machines.create_params AS (); @@ -129,17 +121,7 @@ CREATE TYPE dedalus_machines.machine AS (); CREATE TYPE dedalus_machines.machine_list AS (); CREATE TYPE dedalus_machines.machine_list_item AS (); CREATE TYPE dedalus_machines.update_params AS (); - -CREATE SCHEMA IF NOT EXISTS dedalus_machines_artifacts; - -CREATE TYPE dedalus_machines_artifacts.artifact AS (); -CREATE TYPE dedalus_machines_artifacts.artifact_list AS (); - -CREATE SCHEMA IF NOT EXISTS dedalus_machines_previews; - -CREATE TYPE dedalus_machines_previews.preview AS (); -CREATE TYPE dedalus_machines_previews.preview_create_params AS (); -CREATE TYPE dedalus_machines_previews.preview_list AS (); +CREATE TYPE dedalus_machines.machine_retrieve_response AS (); CREATE SCHEMA IF NOT EXISTS dedalus_machines_ssh; @@ -157,17 +139,4 @@ CREATE TYPE dedalus_machines_executions.execution_create_params AS (); CREATE TYPE dedalus_machines_executions.execution_event AS (); CREATE TYPE dedalus_machines_executions.execution_events AS (); CREATE TYPE dedalus_machines_executions.execution_list AS (); -CREATE TYPE dedalus_machines_executions.execution_output AS (); - -CREATE SCHEMA IF NOT EXISTS dedalus_machines_terminals; - -CREATE TYPE dedalus_machines_terminals.terminal AS (); -CREATE TYPE dedalus_machines_terminals.terminal_client_event AS (); -CREATE TYPE dedalus_machines_terminals.terminal_closed_event AS (); -CREATE TYPE dedalus_machines_terminals.terminal_create_params AS (); -CREATE TYPE dedalus_machines_terminals.terminal_error_event AS (); -CREATE TYPE dedalus_machines_terminals.terminal_input_event AS (); -CREATE TYPE dedalus_machines_terminals.terminal_list AS (); -CREATE TYPE dedalus_machines_terminals.terminal_output_event AS (); -CREATE TYPE dedalus_machines_terminals.terminal_resize_event AS (); -CREATE TYPE dedalus_machines_terminals.terminal_server_event AS (); \ No newline at end of file +CREATE TYPE dedalus_machines_executions.execution_output AS (); \ No newline at end of file diff --git a/sql/dedalus_machines.sql b/sql/dedalus_machines.sql index a286612..ea5ba3c 100644 --- a/sql/dedalus_machines.sql +++ b/sql/dedalus_machines.sql @@ -1,21 +1,21 @@ ALTER TYPE dedalus_machines.create_params + ADD ATTRIBUTE autosleep TEXT, ADD ATTRIBUTE memory_mib BIGINT, ADD ATTRIBUTE storage_gib BIGINT, - ADD ATTRIBUTE vcpu DOUBLE PRECISION, - ADD ATTRIBUTE autosleep TEXT; + ADD ATTRIBUTE vcpu DOUBLE PRECISION; CREATE OR REPLACE FUNCTION dedalus_machines.make_create_params( - memory_mib BIGINT, - storage_gib BIGINT, - vcpu DOUBLE PRECISION, - autosleep TEXT DEFAULT NULL + autosleep TEXT DEFAULT NULL, + memory_mib BIGINT DEFAULT NULL, + storage_gib BIGINT DEFAULT NULL, + vcpu DOUBLE PRECISION DEFAULT NULL ) RETURNS dedalus_machines.create_params LANGUAGE SQL IMMUTABLE AS $$ SELECT ROW( - memory_mib, storage_gib, vcpu, autosleep + autosleep, memory_mib, storage_gib, vcpu )::dedalus_machines.create_params; $$; @@ -57,7 +57,7 @@ ALTER TYPE dedalus_machines.machine ADD ATTRIBUTE desired_state TEXT, ADD ATTRIBUTE machine_id TEXT, ADD ATTRIBUTE memory_mib BIGINT, - ADD ATTRIBUTE status dedalus_machines.lifecycle_status, + ADD ATTRIBUTE phase TEXT, ADD ATTRIBUTE storage_gib BIGINT, ADD ATTRIBUTE vcpu DOUBLE PRECISION; @@ -66,7 +66,7 @@ CREATE OR REPLACE FUNCTION dedalus_machines.make_machine( desired_state TEXT, machine_id TEXT, memory_mib BIGINT, - status dedalus_machines.lifecycle_status, + phase TEXT, storage_gib BIGINT, vcpu DOUBLE PRECISION ) @@ -79,7 +79,7 @@ AS $$ desired_state, machine_id, memory_mib, - status, + phase, storage_gib, vcpu )::dedalus_machines.machine; @@ -106,7 +106,7 @@ ALTER TYPE dedalus_machines.machine_list_item ADD ATTRIBUTE desired_state TEXT, ADD ATTRIBUTE machine_id TEXT, ADD ATTRIBUTE memory_mib BIGINT, - ADD ATTRIBUTE status dedalus_machines.lifecycle_status, + ADD ATTRIBUTE phase TEXT, ADD ATTRIBUTE storage_gib BIGINT, ADD ATTRIBUTE vcpu DOUBLE PRECISION; @@ -116,7 +116,7 @@ CREATE OR REPLACE FUNCTION dedalus_machines.make_machine_list_item( desired_state TEXT, machine_id TEXT, memory_mib BIGINT, - status dedalus_machines.lifecycle_status, + phase TEXT, storage_gib BIGINT, vcpu DOUBLE PRECISION ) @@ -130,7 +130,7 @@ AS $$ desired_state, machine_id, memory_mib, - status, + phase, storage_gib, vcpu )::dedalus_machines.machine_list_item; @@ -157,11 +157,44 @@ AS $$ )::dedalus_machines.update_params; $$; -CREATE OR REPLACE FUNCTION dedalus_machines._create( +ALTER TYPE dedalus_machines.machine_retrieve_response + ADD ATTRIBUTE autosleep_seconds BIGINT, + ADD ATTRIBUTE desired_state TEXT, + ADD ATTRIBUTE machine_id TEXT, + ADD ATTRIBUTE memory_mib BIGINT, + ADD ATTRIBUTE status dedalus_machines.lifecycle_status, + ADD ATTRIBUTE storage_gib BIGINT, + ADD ATTRIBUTE vcpu DOUBLE PRECISION; + +CREATE OR REPLACE FUNCTION dedalus_machines.make_machine_retrieve_response( + autosleep_seconds BIGINT, + desired_state TEXT, + machine_id TEXT, memory_mib BIGINT, + status dedalus_machines.lifecycle_status, storage_gib BIGINT, - vcpu DOUBLE PRECISION, - autosleep TEXT DEFAULT NULL + vcpu DOUBLE PRECISION +) +RETURNS dedalus_machines.machine_retrieve_response +LANGUAGE SQL +IMMUTABLE +AS $$ + SELECT ROW( + autosleep_seconds, + desired_state, + machine_id, + memory_mib, + status, + storage_gib, + vcpu + )::dedalus_machines.machine_retrieve_response; +$$; + +CREATE OR REPLACE FUNCTION dedalus_machines._create( + autosleep TEXT DEFAULT NULL, + memory_mib BIGINT DEFAULT NULL, + storage_gib BIGINT DEFAULT NULL, + vcpu DOUBLE PRECISION DEFAULT NULL ) RETURNS JSONB LANGUAGE plpython3u @@ -169,10 +202,10 @@ AS $$ from dedalus_sdk._types import not_given response = GD["__dedalus_context__"].client.machines.with_raw_response.create( - memory_mib=memory_mib, - storage_gib=storage_gib, - vcpu=vcpu, autosleep=not_given if autosleep is None else autosleep, + memory_mib=not_given if memory_mib is None else memory_mib, + storage_gib=not_given if storage_gib is None else storage_gib, + vcpu=not_given if vcpu is None else vcpu, ) # We don't parse the JSON and let PL/Python perform data mapping because PL/Python errors for omitted @@ -182,10 +215,10 @@ AS $$ $$; CREATE OR REPLACE FUNCTION dedalus_machines.create( - memory_mib BIGINT, - storage_gib BIGINT, - vcpu DOUBLE PRECISION, - autosleep TEXT DEFAULT NULL + autosleep TEXT DEFAULT NULL, + memory_mib BIGINT DEFAULT NULL, + storage_gib BIGINT DEFAULT NULL, + vcpu DOUBLE PRECISION DEFAULT NULL ) RETURNS dedalus_machines.machine LANGUAGE plpgsql @@ -194,7 +227,7 @@ AS $$ PERFORM dedalus_internal.ensure_context(); RETURN jsonb_populate_record( NULL::dedalus_machines.machine, - dedalus_machines._create(memory_mib, storage_gib, vcpu, autosleep) + dedalus_machines._create(autosleep, memory_mib, storage_gib, vcpu) ); END; $$; @@ -215,14 +248,15 @@ AS $$ $$; CREATE OR REPLACE FUNCTION dedalus_machines.retrieve(machine_id TEXT) -RETURNS dedalus_machines.machine +RETURNS dedalus_machines.machine_retrieve_response LANGUAGE plpgsql STABLE AS $$ BEGIN PERFORM dedalus_internal.ensure_context(); RETURN jsonb_populate_record( - NULL::dedalus_machines.machine, dedalus_machines._retrieve(machine_id) + NULL::dedalus_machines.machine_retrieve_response, + dedalus_machines._retrieve(machine_id) ); END; $$; @@ -455,40 +489,4 @@ AS $$ NULL::dedalus_machines.machine, dedalus_machines._wake(machine_id) ); END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines._watch( - machine_id TEXT, last_event_id TEXT DEFAULT NULL -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - - response = GD["__dedalus_context__"].client.machines.with_raw_response.watch( - machine_id=machine_id, - last_event_id=not_given if last_event_id is None else last_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 dedalus_machines.watch( - machine_id TEXT, last_event_id TEXT DEFAULT NULL -) -RETURNS dedalus_machines.machine -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines.machine, - dedalus_machines._watch(machine_id, last_event_id) - ); - END; $$; \ No newline at end of file diff --git a/sql/dedalus_machines_artifacts.sql b/sql/dedalus_machines_artifacts.sql deleted file mode 100644 index 16501b9..0000000 --- a/sql/dedalus_machines_artifacts.sql +++ /dev/null @@ -1,232 +0,0 @@ -ALTER TYPE dedalus_machines_artifacts.artifact - ADD ATTRIBUTE artifact_id TEXT, - ADD ATTRIBUTE created_at TIMESTAMP, - ADD ATTRIBUTE machine_id TEXT, - ADD ATTRIBUTE name TEXT, - ADD ATTRIBUTE size_bytes BIGINT, - ADD ATTRIBUTE download_url TEXT, - ADD ATTRIBUTE execution_id TEXT, - ADD ATTRIBUTE expires_at TIMESTAMP, - ADD ATTRIBUTE mime_type TEXT, - ADD ATTRIBUTE sha256 TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts.make_artifact( - artifact_id TEXT, - created_at TIMESTAMP, - machine_id TEXT, - name TEXT, - size_bytes BIGINT, - download_url TEXT DEFAULT NULL, - execution_id TEXT DEFAULT NULL, - expires_at TIMESTAMP DEFAULT NULL, - mime_type TEXT DEFAULT NULL, - sha256 TEXT DEFAULT NULL -) -RETURNS dedalus_machines_artifacts.artifact -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - artifact_id, - created_at, - machine_id, - name, - size_bytes, - download_url, - execution_id, - expires_at, - mime_type, - sha256 - )::dedalus_machines_artifacts.artifact; -$$; - -ALTER TYPE dedalus_machines_artifacts.artifact_list - ADD ATTRIBUTE items dedalus_machines_artifacts.artifact[], - ADD ATTRIBUTE next_cursor TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts.make_artifact_list( - items dedalus_machines_artifacts.artifact[] DEFAULT NULL, - next_cursor TEXT DEFAULT NULL -) -RETURNS dedalus_machines_artifacts.artifact_list -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW(items, next_cursor)::dedalus_machines_artifacts.artifact_list; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts._retrieve( - machine_id TEXT, artifact_id TEXT -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - response = GD["__dedalus_context__"].client.machines.artifacts.with_raw_response.retrieve( - machine_id=machine_id, - artifact_id=artifact_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 dedalus_machines_artifacts.retrieve( - machine_id TEXT, artifact_id TEXT -) -RETURNS dedalus_machines_artifacts.artifact -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_artifacts.artifact, - dedalus_machines_artifacts._retrieve(machine_id, artifact_id) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts._list_first_page_py( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS dedalus_internal.page -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - from pydantic import TypeAdapter - from typing import Any - - page = GD["__dedalus_context__"].client.machines.artifacts.list( - machine_id=machine_id, - cursor=not_given if cursor is None else cursor, - limit=not_given if limit is None else limit, - ) - next_page_info = page.next_page_info() - if next_page_info is None: - next_request_options = None - else: - next_request_options = page._info_to_options(next_page_info).model_dump_json( - exclude_unset=True, - exclude={'post_parser'} - ) - - # We convert to JSON instead of letting 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 calling function later. - type_adapter = TypeAdapter(Any) - return ( - type_adapter.dump_json(page._get_page_items(), exclude_unset=True).decode("utf-8"), - next_request_options - ) -$$; - --- A simpler wrapper around `dedalus_machines_artifacts._list_first_page` that ensures the global client is initialized. -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts._list_first_page( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS dedalus_internal.page -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN dedalus_machines_artifacts._list_first_page_py( - machine_id, cursor, "limit" - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts._list_next_page(request_options JSONB) -RETURNS dedalus_internal.page -LANGUAGE plpython3u -STABLE -AS $$ - import json - from dedalus_sdk.types.machines import Artifact - from dedalus_sdk.pagination import SyncCursorPage - from dedalus_sdk._models import FinalRequestOptions - from pydantic import TypeAdapter - from typing import Any - - page = GD["__dedalus_context__"].client._request_api_list( - model=Artifact, - page=SyncCursorPage[Artifact], - options=FinalRequestOptions.construct(**json.loads(request_options)) - ) - next_page_info = page.next_page_info() - if next_page_info is None: - next_request_options = None - else: - next_request_options = page._info_to_options(next_page_info).model_dump_json( - exclude_unset=True, - exclude={'post_parser'} - ) - - # We convert to JSON instead of letting 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 calling function later. - type_adapter = TypeAdapter(Any) - return ( - type_adapter.dump_json(page._get_page_items(), exclude_unset=True).decode("utf-8"), - next_request_options - ) -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts.list( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS SETOF dedalus_machines_artifacts.artifact -LANGUAGE SQL -STABLE -AS $$ - WITH RECURSIVE paginated AS ( - SELECT page.* - FROM dedalus_machines_artifacts._list_first_page( - machine_id, cursor, "limit" - ) AS page - - UNION ALL - - SELECT page.* - FROM paginated - CROSS JOIN dedalus_machines_artifacts._list_next_page(paginated.next_request_options) AS page - WHERE paginated.next_request_options IS NOT NULL - ) - SELECT (jsonb_populate_recordset(NULL::dedalus_machines_artifacts.artifact, data)).* FROM paginated; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_artifacts._delete( - machine_id TEXT, artifact_id TEXT -) -RETURNS JSONB -LANGUAGE plpython3u -AS $$ - response = GD["__dedalus_context__"].client.machines.artifacts.with_raw_response.delete( - machine_id=machine_id, - artifact_id=artifact_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 dedalus_machines_artifacts.delete( - machine_id TEXT, artifact_id TEXT -) -RETURNS dedalus_machines_artifacts.artifact -LANGUAGE plpgsql -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_artifacts.artifact, - dedalus_machines_artifacts._delete(machine_id, artifact_id) - ); - END; -$$; \ No newline at end of file diff --git a/sql/dedalus_machines_previews.sql b/sql/dedalus_machines_previews.sql deleted file mode 100644 index e8d0a57..0000000 --- a/sql/dedalus_machines_previews.sql +++ /dev/null @@ -1,300 +0,0 @@ -ALTER TYPE dedalus_machines_previews.preview - ADD ATTRIBUTE created_at TIMESTAMP, - ADD ATTRIBUTE machine_id TEXT, - ADD ATTRIBUTE port BIGINT, - ADD ATTRIBUTE preview_id TEXT, - ADD ATTRIBUTE status TEXT, - ADD ATTRIBUTE visibility TEXT, - ADD ATTRIBUTE error_code TEXT, - ADD ATTRIBUTE error_message TEXT, - ADD ATTRIBUTE expires_at TIMESTAMP, - ADD ATTRIBUTE protocol TEXT, - ADD ATTRIBUTE ready_at TIMESTAMP, - ADD ATTRIBUTE retry_after_ms BIGINT, - ADD ATTRIBUTE url TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews.make_preview( - created_at TIMESTAMP, - machine_id TEXT, - port BIGINT, - preview_id TEXT, - status TEXT, - visibility TEXT, - error_code TEXT DEFAULT NULL, - error_message TEXT DEFAULT NULL, - expires_at TIMESTAMP DEFAULT NULL, - protocol TEXT DEFAULT NULL, - ready_at TIMESTAMP DEFAULT NULL, - retry_after_ms BIGINT DEFAULT NULL, - url TEXT DEFAULT NULL -) -RETURNS dedalus_machines_previews.preview -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - created_at, - machine_id, - port, - preview_id, - status, - visibility, - error_code, - error_message, - expires_at, - protocol, - ready_at, - retry_after_ms, - url - )::dedalus_machines_previews.preview; -$$; - -ALTER TYPE dedalus_machines_previews.preview_create_params - ADD ATTRIBUTE port BIGINT, - ADD ATTRIBUTE protocol TEXT, - ADD ATTRIBUTE visibility TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews.make_preview_create_params( - port BIGINT, protocol TEXT DEFAULT NULL, visibility TEXT DEFAULT NULL -) -RETURNS dedalus_machines_previews.preview_create_params -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - port, protocol, visibility - )::dedalus_machines_previews.preview_create_params; -$$; - -ALTER TYPE dedalus_machines_previews.preview_list - ADD ATTRIBUTE items dedalus_machines_previews.preview[], - ADD ATTRIBUTE next_cursor TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews.make_preview_list( - items dedalus_machines_previews.preview[] DEFAULT NULL, - next_cursor TEXT DEFAULT NULL -) -RETURNS dedalus_machines_previews.preview_list -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW(items, next_cursor)::dedalus_machines_previews.preview_list; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews._create( - machine_id TEXT, - port BIGINT, - protocol TEXT DEFAULT NULL, - visibility TEXT DEFAULT NULL -) -RETURNS JSONB -LANGUAGE plpython3u -AS $$ - from dedalus_sdk._types import not_given - - response = GD["__dedalus_context__"].client.machines.previews.with_raw_response.create( - machine_id=machine_id, - port=port, - protocol=not_given if protocol is None else protocol, - 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 dedalus_machines_previews.create( - machine_id TEXT, - port BIGINT, - protocol TEXT DEFAULT NULL, - visibility TEXT DEFAULT NULL -) -RETURNS dedalus_machines_previews.preview -LANGUAGE plpgsql -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_previews.preview, - dedalus_machines_previews._create(machine_id, port, protocol, visibility) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews._retrieve( - machine_id TEXT, preview_id TEXT -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - response = GD["__dedalus_context__"].client.machines.previews.with_raw_response.retrieve( - machine_id=machine_id, - preview_id=preview_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 dedalus_machines_previews.retrieve( - machine_id TEXT, preview_id TEXT -) -RETURNS dedalus_machines_previews.preview -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_previews.preview, - dedalus_machines_previews._retrieve(machine_id, preview_id) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews._list_first_page_py( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS dedalus_internal.page -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - from pydantic import TypeAdapter - from typing import Any - - page = GD["__dedalus_context__"].client.machines.previews.list( - machine_id=machine_id, - cursor=not_given if cursor is None else cursor, - limit=not_given if limit is None else limit, - ) - next_page_info = page.next_page_info() - if next_page_info is None: - next_request_options = None - else: - next_request_options = page._info_to_options(next_page_info).model_dump_json( - exclude_unset=True, - exclude={'post_parser'} - ) - - # We convert to JSON instead of letting 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 calling function later. - type_adapter = TypeAdapter(Any) - return ( - type_adapter.dump_json(page._get_page_items(), exclude_unset=True).decode("utf-8"), - next_request_options - ) -$$; - --- A simpler wrapper around `dedalus_machines_previews._list_first_page` that ensures the global client is initialized. -CREATE OR REPLACE FUNCTION dedalus_machines_previews._list_first_page( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS dedalus_internal.page -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN dedalus_machines_previews._list_first_page_py( - machine_id, cursor, "limit" - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews._list_next_page(request_options JSONB) -RETURNS dedalus_internal.page -LANGUAGE plpython3u -STABLE -AS $$ - import json - from dedalus_sdk.types.machines import Preview - from dedalus_sdk.pagination import SyncCursorPage - from dedalus_sdk._models import FinalRequestOptions - from pydantic import TypeAdapter - from typing import Any - - page = GD["__dedalus_context__"].client._request_api_list( - model=Preview, - page=SyncCursorPage[Preview], - options=FinalRequestOptions.construct(**json.loads(request_options)) - ) - next_page_info = page.next_page_info() - if next_page_info is None: - next_request_options = None - else: - next_request_options = page._info_to_options(next_page_info).model_dump_json( - exclude_unset=True, - exclude={'post_parser'} - ) - - # We convert to JSON instead of letting 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 calling function later. - type_adapter = TypeAdapter(Any) - return ( - type_adapter.dump_json(page._get_page_items(), exclude_unset=True).decode("utf-8"), - next_request_options - ) -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews.list( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS SETOF dedalus_machines_previews.preview -LANGUAGE SQL -STABLE -AS $$ - WITH RECURSIVE paginated AS ( - SELECT page.* - FROM dedalus_machines_previews._list_first_page( - machine_id, cursor, "limit" - ) AS page - - UNION ALL - - SELECT page.* - FROM paginated - CROSS JOIN dedalus_machines_previews._list_next_page(paginated.next_request_options) AS page - WHERE paginated.next_request_options IS NOT NULL - ) - SELECT (jsonb_populate_recordset(NULL::dedalus_machines_previews.preview, data)).* FROM paginated; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_previews._delete( - machine_id TEXT, preview_id TEXT -) -RETURNS JSONB -LANGUAGE plpython3u -AS $$ - response = GD["__dedalus_context__"].client.machines.previews.with_raw_response.delete( - machine_id=machine_id, - preview_id=preview_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 dedalus_machines_previews.delete( - machine_id TEXT, preview_id TEXT -) -RETURNS dedalus_machines_previews.preview -LANGUAGE plpgsql -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_previews.preview, - dedalus_machines_previews._delete(machine_id, preview_id) - ); - END; -$$; \ No newline at end of file diff --git a/sql/dedalus_machines_terminals.sql b/sql/dedalus_machines_terminals.sql deleted file mode 100644 index 21d0697..0000000 --- a/sql/dedalus_machines_terminals.sql +++ /dev/null @@ -1,430 +0,0 @@ -ALTER TYPE dedalus_machines_terminals.terminal - ADD ATTRIBUTE created_at TIMESTAMP, - ADD ATTRIBUTE height BIGINT, - ADD ATTRIBUTE machine_id TEXT, - ADD ATTRIBUTE status TEXT, - ADD ATTRIBUTE terminal_id TEXT, - ADD ATTRIBUTE width BIGINT, - ADD ATTRIBUTE error_code TEXT, - ADD ATTRIBUTE error_message TEXT, - ADD ATTRIBUTE expires_at TIMESTAMP, - ADD ATTRIBUTE protocol TEXT, - ADD ATTRIBUTE ready_at TIMESTAMP, - ADD ATTRIBUTE retry_after_ms BIGINT, - ADD ATTRIBUTE stream_url TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal( - created_at TIMESTAMP, - height BIGINT, - machine_id TEXT, - status TEXT, - terminal_id TEXT, - width BIGINT, - error_code TEXT DEFAULT NULL, - error_message TEXT DEFAULT NULL, - expires_at TIMESTAMP DEFAULT NULL, - protocol TEXT DEFAULT NULL, - ready_at TIMESTAMP DEFAULT NULL, - retry_after_ms BIGINT DEFAULT NULL, - stream_url TEXT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - created_at, - height, - machine_id, - status, - terminal_id, - width, - error_code, - error_message, - expires_at, - protocol, - ready_at, - retry_after_ms, - stream_url - )::dedalus_machines_terminals.terminal; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_client_event - ADD ATTRIBUTE type TEXT, - ADD ATTRIBUTE data TEXT, - ADD ATTRIBUTE height BIGINT, - ADD ATTRIBUTE width BIGINT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_client_event( - type TEXT, - data TEXT DEFAULT NULL, - height BIGINT DEFAULT NULL, - width BIGINT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal_client_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - type, data, height, width - )::dedalus_machines_terminals.terminal_client_event; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_closed_event - ADD ATTRIBUTE type TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_closed_event( - type TEXT -) -RETURNS dedalus_machines_terminals.terminal_closed_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW(type)::dedalus_machines_terminals.terminal_closed_event; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_create_params - ADD ATTRIBUTE height BIGINT, - ADD ATTRIBUTE width BIGINT, - ADD ATTRIBUTE cwd TEXT, - ADD ATTRIBUTE env JSONB, - ADD ATTRIBUTE shell TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_create_params( - height BIGINT, - width BIGINT, - cwd TEXT DEFAULT NULL, - env JSONB DEFAULT NULL, - shell TEXT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal_create_params -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - height, width, cwd, env, shell - )::dedalus_machines_terminals.terminal_create_params; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_error_event - ADD ATTRIBUTE type TEXT, - ADD ATTRIBUTE error_code TEXT, - ADD ATTRIBUTE error_message TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_error_event( - type TEXT, error_code TEXT DEFAULT NULL, error_message TEXT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal_error_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - type, error_code, error_message - )::dedalus_machines_terminals.terminal_error_event; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_input_event - ADD ATTRIBUTE data TEXT, ADD ATTRIBUTE type TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_input_event( - data TEXT, type TEXT -) -RETURNS dedalus_machines_terminals.terminal_input_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW(data, type)::dedalus_machines_terminals.terminal_input_event; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_list - ADD ATTRIBUTE items dedalus_machines_terminals.terminal[], - ADD ATTRIBUTE next_cursor TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_list( - items dedalus_machines_terminals.terminal[] DEFAULT NULL, - next_cursor TEXT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal_list -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW(items, next_cursor)::dedalus_machines_terminals.terminal_list; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_output_event - ADD ATTRIBUTE data TEXT, ADD ATTRIBUTE type TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_output_event( - data TEXT, type TEXT -) -RETURNS dedalus_machines_terminals.terminal_output_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW(data, type)::dedalus_machines_terminals.terminal_output_event; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_resize_event - ADD ATTRIBUTE height BIGINT, - ADD ATTRIBUTE type TEXT, - ADD ATTRIBUTE width BIGINT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_resize_event( - height BIGINT, type TEXT, width BIGINT -) -RETURNS dedalus_machines_terminals.terminal_resize_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - height, type, width - )::dedalus_machines_terminals.terminal_resize_event; -$$; - -ALTER TYPE dedalus_machines_terminals.terminal_server_event - ADD ATTRIBUTE type TEXT, - ADD ATTRIBUTE data TEXT, - ADD ATTRIBUTE error_code TEXT, - ADD ATTRIBUTE error_message TEXT; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.make_terminal_server_event( - type TEXT, - data TEXT DEFAULT NULL, - error_code TEXT DEFAULT NULL, - error_message TEXT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal_server_event -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - type, data, error_code, error_message - )::dedalus_machines_terminals.terminal_server_event; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals._create( - machine_id TEXT, - height BIGINT, - width BIGINT, - cwd TEXT DEFAULT NULL, - env JSONB DEFAULT NULL, - shell TEXT DEFAULT NULL -) -RETURNS JSONB -LANGUAGE plpython3u -AS $$ - import json - from dedalus_sdk._types import not_given - - response = GD["__dedalus_context__"].client.machines.terminals.with_raw_response.create( - machine_id=machine_id, - height=height, - width=width, - cwd=not_given if cwd is None else cwd, - env=not_given if env is None else json.loads(env), - shell=not_given if shell is None else shell, - ) - - # 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 dedalus_machines_terminals.create( - machine_id TEXT, - height BIGINT, - width BIGINT, - cwd TEXT DEFAULT NULL, - env JSONB DEFAULT NULL, - shell TEXT DEFAULT NULL -) -RETURNS dedalus_machines_terminals.terminal -LANGUAGE plpgsql -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_terminals.terminal, - dedalus_machines_terminals._create( - machine_id, height, width, cwd, env, shell - ) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals._retrieve( - machine_id TEXT, terminal_id TEXT -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - response = GD["__dedalus_context__"].client.machines.terminals.with_raw_response.retrieve( - machine_id=machine_id, - terminal_id=terminal_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 dedalus_machines_terminals.retrieve( - machine_id TEXT, terminal_id TEXT -) -RETURNS dedalus_machines_terminals.terminal -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_terminals.terminal, - dedalus_machines_terminals._retrieve(machine_id, terminal_id) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals._list_first_page_py( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS dedalus_internal.page -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - from pydantic import TypeAdapter - from typing import Any - - page = GD["__dedalus_context__"].client.machines.terminals.list( - machine_id=machine_id, - cursor=not_given if cursor is None else cursor, - limit=not_given if limit is None else limit, - ) - next_page_info = page.next_page_info() - if next_page_info is None: - next_request_options = None - else: - next_request_options = page._info_to_options(next_page_info).model_dump_json( - exclude_unset=True, - exclude={'post_parser'} - ) - - # We convert to JSON instead of letting 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 calling function later. - type_adapter = TypeAdapter(Any) - return ( - type_adapter.dump_json(page._get_page_items(), exclude_unset=True).decode("utf-8"), - next_request_options - ) -$$; - --- A simpler wrapper around `dedalus_machines_terminals._list_first_page` that ensures the global client is initialized. -CREATE OR REPLACE FUNCTION dedalus_machines_terminals._list_first_page( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS dedalus_internal.page -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN dedalus_machines_terminals._list_first_page_py( - machine_id, cursor, "limit" - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals._list_next_page(request_options JSONB) -RETURNS dedalus_internal.page -LANGUAGE plpython3u -STABLE -AS $$ - import json - from dedalus_sdk.types.machines import Terminal - from dedalus_sdk.pagination import SyncCursorPage - from dedalus_sdk._models import FinalRequestOptions - from pydantic import TypeAdapter - from typing import Any - - page = GD["__dedalus_context__"].client._request_api_list( - model=Terminal, - page=SyncCursorPage[Terminal], - options=FinalRequestOptions.construct(**json.loads(request_options)) - ) - next_page_info = page.next_page_info() - if next_page_info is None: - next_request_options = None - else: - next_request_options = page._info_to_options(next_page_info).model_dump_json( - exclude_unset=True, - exclude={'post_parser'} - ) - - # We convert to JSON instead of letting 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 calling function later. - type_adapter = TypeAdapter(Any) - return ( - type_adapter.dump_json(page._get_page_items(), exclude_unset=True).decode("utf-8"), - next_request_options - ) -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals.list( - machine_id TEXT, cursor TEXT DEFAULT NULL, "limit" BIGINT DEFAULT NULL -) -RETURNS SETOF dedalus_machines_terminals.terminal -LANGUAGE SQL -STABLE -AS $$ - WITH RECURSIVE paginated AS ( - SELECT page.* - FROM dedalus_machines_terminals._list_first_page( - machine_id, cursor, "limit" - ) AS page - - UNION ALL - - SELECT page.* - FROM paginated - CROSS JOIN dedalus_machines_terminals._list_next_page(paginated.next_request_options) AS page - WHERE paginated.next_request_options IS NOT NULL - ) - SELECT (jsonb_populate_recordset(NULL::dedalus_machines_terminals.terminal, data)).* FROM paginated; -$$; - -CREATE OR REPLACE FUNCTION dedalus_machines_terminals._delete( - machine_id TEXT, terminal_id TEXT -) -RETURNS JSONB -LANGUAGE plpython3u -AS $$ - response = GD["__dedalus_context__"].client.machines.terminals.with_raw_response.delete( - machine_id=machine_id, - terminal_id=terminal_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 dedalus_machines_terminals.delete( - machine_id TEXT, terminal_id TEXT -) -RETURNS dedalus_machines_terminals.terminal -LANGUAGE plpgsql -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_machines_terminals.terminal, - dedalus_machines_terminals._delete(machine_id, terminal_id) - ); - END; -$$; \ No newline at end of file diff --git a/sql/dedalus_usage.sql b/sql/dedalus_usage.sql deleted file mode 100644 index ae3175d..0000000 --- a/sql/dedalus_usage.sql +++ /dev/null @@ -1,289 +0,0 @@ -ALTER TYPE dedalus_usage.machine_compute_usage - ADD ATTRIBUTE granularity TEXT, - ADD ATTRIBUTE period_end TIMESTAMP, - ADD ATTRIBUTE period_start TIMESTAMP, - ADD ATTRIBUTE rows dedalus_usage.machine_compute_usage_row[]; - -CREATE OR REPLACE FUNCTION dedalus_usage.make_machine_compute_usage( - granularity TEXT, - period_end TIMESTAMP, - period_start TIMESTAMP, - rows dedalus_usage.machine_compute_usage_row[] DEFAULT NULL -) -RETURNS dedalus_usage.machine_compute_usage -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - granularity, period_end, period_start, rows - )::dedalus_usage.machine_compute_usage; -$$; - -ALTER TYPE dedalus_usage.machine_compute_usage_row - ADD ATTRIBUTE awake_seconds BIGINT, - ADD ATTRIBUTE bucket_end TIMESTAMP, - ADD ATTRIBUTE bucket_start TIMESTAMP, - ADD ATTRIBUTE cpu_millicore_seconds BIGINT, - ADD ATTRIBUTE last_window_end TIMESTAMP, - ADD ATTRIBUTE machine_id TEXT, - ADD ATTRIBUTE memory_mib_seconds BIGINT, - ADD ATTRIBUTE requested_memory_mib INTEGER, - ADD ATTRIBUTE requested_storage_gib INTEGER, - ADD ATTRIBUTE requested_vcpu DOUBLE PRECISION, - ADD ATTRIBUTE spec_fingerprint TEXT, - ADD ATTRIBUTE window_count BIGINT, - ADD ATTRIBUTE org_metering_bucket_ids TEXT[], - ADD ATTRIBUTE stripe_cpu_identifiers TEXT[], - ADD ATTRIBUTE stripe_memory_identifiers TEXT[], - ADD ATTRIBUTE latest_stripe_emitted_at TIMESTAMP; - -CREATE OR REPLACE FUNCTION dedalus_usage.make_machine_compute_usage_row( - awake_seconds BIGINT, - bucket_end TIMESTAMP, - bucket_start TIMESTAMP, - cpu_millicore_seconds BIGINT, - last_window_end TIMESTAMP, - machine_id TEXT, - memory_mib_seconds BIGINT, - requested_memory_mib INTEGER, - requested_storage_gib INTEGER, - requested_vcpu DOUBLE PRECISION, - spec_fingerprint TEXT, - window_count BIGINT, - org_metering_bucket_ids TEXT[] DEFAULT NULL, - stripe_cpu_identifiers TEXT[] DEFAULT NULL, - stripe_memory_identifiers TEXT[] DEFAULT NULL, - latest_stripe_emitted_at TIMESTAMP DEFAULT NULL -) -RETURNS dedalus_usage.machine_compute_usage_row -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - awake_seconds, - bucket_end, - bucket_start, - cpu_millicore_seconds, - last_window_end, - machine_id, - memory_mib_seconds, - requested_memory_mib, - requested_storage_gib, - requested_vcpu, - spec_fingerprint, - window_count, - org_metering_bucket_ids, - stripe_cpu_identifiers, - stripe_memory_identifiers, - latest_stripe_emitted_at - )::dedalus_usage.machine_compute_usage_row; -$$; - -ALTER TYPE dedalus_usage.machine_storage_usage - ADD ATTRIBUTE period_end TIMESTAMP, - ADD ATTRIBUTE period_start TIMESTAMP, - ADD ATTRIBUTE rows dedalus_usage.machine_storage_usage_row[]; - -CREATE OR REPLACE FUNCTION dedalus_usage.make_machine_storage_usage( - period_end TIMESTAMP, - period_start TIMESTAMP, - rows dedalus_usage.machine_storage_usage_row[] DEFAULT NULL -) -RETURNS dedalus_usage.machine_storage_usage -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - period_end, period_start, rows - )::dedalus_usage.machine_storage_usage; -$$; - -ALTER TYPE dedalus_usage.machine_storage_usage_row - ADD ATTRIBUTE bucket_end TIMESTAMP, - ADD ATTRIBUTE bucket_start TIMESTAMP, - ADD ATTRIBUTE logical_storage_bytes BIGINT, - ADD ATTRIBUTE machine_id TEXT, - ADD ATTRIBUTE org_metering_bucket_id TEXT, - ADD ATTRIBUTE storage_mib_seconds BIGINT, - ADD ATTRIBUTE stripe_storage_identifier TEXT, - ADD ATTRIBUTE latest_stripe_emitted_at TIMESTAMP; - -CREATE OR REPLACE FUNCTION dedalus_usage.make_machine_storage_usage_row( - bucket_end TIMESTAMP, - bucket_start TIMESTAMP, - logical_storage_bytes BIGINT, - machine_id TEXT, - org_metering_bucket_id TEXT, - storage_mib_seconds BIGINT, - stripe_storage_identifier TEXT, - latest_stripe_emitted_at TIMESTAMP DEFAULT NULL -) -RETURNS dedalus_usage.machine_storage_usage_row -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - bucket_end, - bucket_start, - logical_storage_bytes, - machine_id, - org_metering_bucket_id, - storage_mib_seconds, - stripe_storage_identifier, - latest_stripe_emitted_at - )::dedalus_usage.machine_storage_usage_row; -$$; - -ALTER TYPE dedalus_usage.org_usage - ADD ATTRIBUTE billed_awake_seconds BIGINT, - ADD ATTRIBUTE billed_cpu_millicore_seconds BIGINT, - ADD ATTRIBUTE billed_logical_storage_mib_seconds BIGINT, - ADD ATTRIBUTE billed_memory_mib_seconds BIGINT, - ADD ATTRIBUTE included_storage_gib BIGINT, - ADD ATTRIBUTE plan_slug TEXT, - ADD ATTRIBUTE provisioned_storage_gib BIGINT; - -CREATE OR REPLACE FUNCTION dedalus_usage.make_org_usage( - billed_awake_seconds BIGINT, - billed_cpu_millicore_seconds BIGINT, - billed_logical_storage_mib_seconds BIGINT, - billed_memory_mib_seconds BIGINT, - included_storage_gib BIGINT, - plan_slug TEXT, - provisioned_storage_gib BIGINT -) -RETURNS dedalus_usage.org_usage -LANGUAGE SQL -IMMUTABLE -AS $$ - SELECT ROW( - billed_awake_seconds, - billed_cpu_millicore_seconds, - billed_logical_storage_mib_seconds, - billed_memory_mib_seconds, - included_storage_gib, - plan_slug, - provisioned_storage_gib - )::dedalus_usage.org_usage; -$$; - -CREATE OR REPLACE FUNCTION dedalus_usage._retrieve( - period_start TEXT DEFAULT NULL -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - - response = GD["__dedalus_context__"].client.usage.with_raw_response.retrieve( - period_start=not_given if period_start is None else period_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 dedalus_usage.retrieve( - period_start TEXT DEFAULT NULL -) -RETURNS dedalus_usage.org_usage -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_usage.org_usage, dedalus_usage._retrieve(period_start) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_usage._machine_compute( - granularity TEXT DEFAULT NULL, - machine_id TEXT DEFAULT NULL, - period_end TEXT DEFAULT NULL, - period_start TEXT DEFAULT NULL -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - - response = GD["__dedalus_context__"].client.usage.with_raw_response.machine_compute( - granularity=not_given if granularity is None else granularity, - machine_id=not_given if machine_id is None else machine_id, - period_end=not_given if period_end is None else period_end, - period_start=not_given if period_start is None else period_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 dedalus_usage.machine_compute( - granularity TEXT DEFAULT NULL, - machine_id TEXT DEFAULT NULL, - period_end TEXT DEFAULT NULL, - period_start TEXT DEFAULT NULL -) -RETURNS dedalus_usage.machine_compute_usage -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_usage.machine_compute_usage, - dedalus_usage._machine_compute( - granularity, machine_id, period_end, period_start - ) - ); - END; -$$; - -CREATE OR REPLACE FUNCTION dedalus_usage._machine_storage( - machine_id TEXT DEFAULT NULL, - period_end TEXT DEFAULT NULL, - period_start TEXT DEFAULT NULL -) -RETURNS JSONB -LANGUAGE plpython3u -STABLE -AS $$ - from dedalus_sdk._types import not_given - - response = GD["__dedalus_context__"].client.usage.with_raw_response.machine_storage( - machine_id=not_given if machine_id is None else machine_id, - period_end=not_given if period_end is None else period_end, - period_start=not_given if period_start is None else period_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 dedalus_usage.machine_storage( - machine_id TEXT DEFAULT NULL, - period_end TEXT DEFAULT NULL, - period_start TEXT DEFAULT NULL -) -RETURNS dedalus_usage.machine_storage_usage -LANGUAGE plpgsql -STABLE -AS $$ - BEGIN - PERFORM dedalus_internal.ensure_context(); - RETURN jsonb_populate_record( - NULL::dedalus_usage.machine_storage_usage, - dedalus_usage._machine_storage(machine_id, period_end, period_start) - ); - END; -$$; \ No newline at end of file diff --git a/test/parallel_schedule b/test/parallel_schedule index 7edbccd..4dfb7fc 100644 --- a/test/parallel_schedule +++ b/test/parallel_schedule @@ -1,2 +1,2 @@ test: create_extension -test: dedalus_usage_test dedalus_machines_test dedalus_machines_artifacts_test dedalus_machines_previews_test dedalus_machines_ssh_test dedalus_machines_executions_test dedalus_machines_terminals_test \ No newline at end of file +test: dedalus_machines_test dedalus_machines_ssh_test dedalus_machines_executions_test \ No newline at end of file diff --git a/test/sql/dedalus_machines_artifacts_test.sql b/test/sql/dedalus_machines_artifacts_test.sql deleted file mode 100644 index 1a7efed..0000000 --- a/test/sql/dedalus_machines_artifacts_test.sql +++ /dev/null @@ -1,16 +0,0 @@ -SET datestyle = 'ISO'; -SET dedalus.api_key = 'My API Key'; - -SELECT * -FROM dedalus_machines_artifacts.retrieve( - machine_id := 'dm-3', artifact_id := 'artifact_id' -); - -SELECT * -FROM dedalus_machines_artifacts.list(machine_id := 'dm-3') -LIMIT 42; - -SELECT * -FROM dedalus_machines_artifacts.delete( - machine_id := 'dm-3', artifact_id := 'artifact_id' -); \ No newline at end of file diff --git a/test/sql/dedalus_machines_executions_test.sql b/test/sql/dedalus_machines_executions_test.sql index 53428f9..9483da5 100644 --- a/test/sql/dedalus_machines_executions_test.sql +++ b/test/sql/dedalus_machines_executions_test.sql @@ -2,29 +2,37 @@ SET datestyle = 'ISO'; SET dedalus.api_key = 'My API Key'; SELECT * -FROM dedalus_machines_executions.create(machine_id := 'dm-3'); +FROM dedalus_machines_executions.create( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); SELECT * FROM dedalus_machines_executions.retrieve( - machine_id := 'dm-3', execution_id := 'execution_id' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + execution_id := 'execution_id' ); SELECT * -FROM dedalus_machines_executions.list(machine_id := 'dm-3') +FROM dedalus_machines_executions.list( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +) LIMIT 42; SELECT * FROM dedalus_machines_executions.delete( - machine_id := 'dm-3', execution_id := 'execution_id' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + execution_id := 'execution_id' ); SELECT * FROM dedalus_machines_executions.events( - machine_id := 'dm-3', execution_id := 'execution_id' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + execution_id := 'execution_id' ) LIMIT 42; SELECT * FROM dedalus_machines_executions.output( - machine_id := 'dm-3', execution_id := 'execution_id' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + execution_id := 'execution_id' ); \ No newline at end of file diff --git a/test/sql/dedalus_machines_previews_test.sql b/test/sql/dedalus_machines_previews_test.sql deleted file mode 100644 index 66f0d63..0000000 --- a/test/sql/dedalus_machines_previews_test.sql +++ /dev/null @@ -1,19 +0,0 @@ -SET datestyle = 'ISO'; -SET dedalus.api_key = 'My API Key'; - -SELECT * -FROM dedalus_machines_previews.create(machine_id := 'dm-3', port := 0); - -SELECT * -FROM dedalus_machines_previews.retrieve( - machine_id := 'dm-3', preview_id := 'preview_id' -); - -SELECT * -FROM dedalus_machines_previews.list(machine_id := 'dm-3') -LIMIT 42; - -SELECT * -FROM dedalus_machines_previews.delete( - machine_id := 'dm-3', preview_id := 'preview_id' -); \ No newline at end of file diff --git a/test/sql/dedalus_machines_ssh_test.sql b/test/sql/dedalus_machines_ssh_test.sql index 7b5754a..4bc8bc4 100644 --- a/test/sql/dedalus_machines_ssh_test.sql +++ b/test/sql/dedalus_machines_ssh_test.sql @@ -3,19 +3,24 @@ SET dedalus.api_key = 'My API Key'; SELECT * FROM dedalus_machines_ssh.create( - machine_id := 'dm-3', public_key := 'public_key' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + public_key := 'public_key' ); SELECT * FROM dedalus_machines_ssh.retrieve( - machine_id := 'dm-3', session_id := 'session_id' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + session_id := 'session_id' ); SELECT * -FROM dedalus_machines_ssh.list(machine_id := 'dm-3') +FROM dedalus_machines_ssh.list( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +) LIMIT 42; SELECT * FROM dedalus_machines_ssh.delete( - machine_id := 'dm-3', session_id := 'session_id' + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c', + session_id := 'session_id' ); \ No newline at end of file diff --git a/test/sql/dedalus_machines_terminals_test.sql b/test/sql/dedalus_machines_terminals_test.sql deleted file mode 100644 index 95be901..0000000 --- a/test/sql/dedalus_machines_terminals_test.sql +++ /dev/null @@ -1,21 +0,0 @@ -SET datestyle = 'ISO'; -SET dedalus.api_key = 'My API Key'; - -SELECT * -FROM dedalus_machines_terminals.create( - machine_id := 'dm-3', height := 0, width := 0 -); - -SELECT * -FROM dedalus_machines_terminals.retrieve( - machine_id := 'dm-3', terminal_id := 'terminal_id' -); - -SELECT * -FROM dedalus_machines_terminals.list(machine_id := 'dm-3') -LIMIT 42; - -SELECT * -FROM dedalus_machines_terminals.delete( - machine_id := 'dm-3', terminal_id := 'terminal_id' -); \ No newline at end of file diff --git a/test/sql/dedalus_machines_test.sql b/test/sql/dedalus_machines_test.sql index fec0b5e..af8285b 100644 --- a/test/sql/dedalus_machines_test.sql +++ b/test/sql/dedalus_machines_test.sql @@ -2,26 +2,33 @@ SET datestyle = 'ISO'; SET dedalus.api_key = 'My API Key'; SELECT * -FROM dedalus_machines.create(memory_mib := 0, storage_gib := 0, vcpu := 0); +FROM dedalus_machines.create(); SELECT * -FROM dedalus_machines.retrieve(machine_id := 'dm-3'); +FROM dedalus_machines.retrieve( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); SELECT * -FROM dedalus_machines.update(machine_id := 'dm-3'); +FROM dedalus_machines.update( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); SELECT * FROM dedalus_machines.list() LIMIT 42; SELECT * -FROM dedalus_machines.delete(machine_id := 'dm-3'); +FROM dedalus_machines.delete( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); SELECT * -FROM dedalus_machines.sleep(machine_id := 'dm-3'); +FROM dedalus_machines.sleep( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); SELECT * -FROM dedalus_machines.wake(machine_id := 'dm-3'); - -SELECT * -FROM dedalus_machines.watch(machine_id := 'dm-3'); \ No newline at end of file +FROM dedalus_machines.wake( + machine_id := 'dm-ecc2efdd-ddfa-31a9-c6f1-b833d337aa7c' +); \ No newline at end of file diff --git a/test/sql/dedalus_usage_test.sql b/test/sql/dedalus_usage_test.sql deleted file mode 100644 index 7450fe8..0000000 --- a/test/sql/dedalus_usage_test.sql +++ /dev/null @@ -1,11 +0,0 @@ -SET datestyle = 'ISO'; -SET dedalus.api_key = 'My API Key'; - -SELECT * -FROM dedalus_usage.retrieve(); - -SELECT * -FROM dedalus_usage.machine_compute(); - -SELECT * -FROM dedalus_usage.machine_storage(); \ No newline at end of file