Skip to content
Draft

next #12

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
db4b7d0
feat: restoring state from an upstream db
Xetera Nov 29, 2025
fd53f35
feat: add remote controller, syncing queries
Xetera Dec 2, 2025
2a550c5
feat: return full schema on initial sync
Xetera Dec 2, 2025
5c9f363
fix: return an error-able result for queries
Xetera Dec 2, 2025
13ca245
feat: query optimization
Xetera Dec 4, 2025
d0496ee
feat: add tests for optimizer
Xetera Dec 4, 2025
1b3ec46
feat: query optimizer + websockets
Xetera Dec 10, 2025
f9fe275
fix: lockfile
Xetera Dec 10, 2025
f22876d
fix: actions
Xetera Dec 10, 2025
08a59e5
chore: remove unused patch-package
Xetera Dec 10, 2025
04a6d5d
fix: only publish when pushing to main
Xetera Dec 10, 2025
f9efd13
fix: postgres url
Xetera Dec 10, 2025
ccc01aa
fix: run tests and typechecks even when not pushing to main
Xetera Dec 10, 2025
10651b3
chore: slight cleanup of query-optimizer logic
Xetera Dec 10, 2025
e943423
chore: update core library
Xetera Dec 16, 2025
69e3312
fix: don't drop indexes when optimizing
Xetera Dec 16, 2025
8a2f08c
fix: pass `POSTGRES_URL` to the webserver
Xetera Dec 16, 2025
b6a0b4a
wip timescaledb
Xetera Dec 17, 2025
57d5f7a
feat: pull stats from source by default
Xetera Dec 17, 2025
3f20940
fix: avoid mutating websocket headers
veksen Dec 19, 2025
514a63b
fix: avoid blocking API while optimizer is running
veksen Dec 19, 2025
87aecb1
feat: restore query metadata for new api
veksen Dec 19, 2025
a7c531f
fix: reuse existing promise on rerun
veksen Dec 19, 2025
a5c45a7
fix: disable formatter for now
veksen Dec 19, 2025
5e523d6
fix: always return query status even if response is cached
Xetera Dec 22, 2025
9b17a55
feat: attach optimization to the query object
Xetera Dec 22, 2025
410d50b
fix: remove unused queryUnsupported
Xetera Dec 23, 2025
eab6e0a
fix: reset optimizer on connecting to socket
veksen Dec 20, 2025
7911fe0
feat: add nudges to queries
veksen Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# DEBUG=true
POSTGRES_URL=postgres://postgres:123@localhost:5432/umami_dev
POSTGRES_URL=postgres://xetera@localhost:5432/postgres
LOG_PATH=/tmp/postgres_logs/postgres.log
# STATISTICS_PATH=test/umami_test.json
STATISTICS_PATH=statistics.json
6 changes: 4 additions & 2 deletions .github/workflows/build-action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ name: Release Action
on:
workflow_dispatch:
push:
branches:
- main

jobs:
release:
Expand All @@ -27,8 +25,12 @@ jobs:
- name: Typecheck
run: deno check

- name: Run tests
run: deno run test

- name: Upload files to release
uses: softprops/action-gh-release@v2
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
with:
tag_name: v${{ env.DENO_VERSION }}
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/custom.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,5 @@ jobs:
uses: ./
env:
GITHUB_TOKEN: ${{ github.token }}
POSTGRES_URL: http://query_doctor@localhost:5432/testing
POSTGRES_URL: postgres://query_doctor@localhost:5432/testing
LOG_PATH: /var/log/postgresql/postgres.log
4 changes: 2 additions & 2 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
with:
context: .
file: Dockerfile
push: ${{ github.event_name == 'push' }}
push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
# outputs: type=docker
platforms: linux/amd64,linux/arm64
tags: |
Expand All @@ -69,7 +69,7 @@ jobs:
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
- name: Attest
uses: actions/attest-build-provenance@v2
if: ${{ github.event_name == 'push' }}
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subject-digest: ${{ steps.build.outputs.digest }}
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ devenv.local.yaml
# pre-commit
.pre-commit-config.yaml
.zed

node_modules
1 change: 0 additions & 1 deletion action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ runs:
# Run the compiled application
- name: Run Analyzer
shell: bash
working-directory: ${{ github.action_path }}
run: deno run start
env:
PG_DUMP_BINARY: /usr/bin/pg_dump
Expand Down
13 changes: 8 additions & 5 deletions deno.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
{
"$schema": "https://raw.githubusercontent.com/denoland/deno/refs/heads/main/cli/schemas/config-file.v1.json",
"version": "0.1.1",
"unstable": [
"raw-imports"
],
"unstable": ["raw-imports"],
"nodeModulesDir": "auto",
"permissions": {
"run": {
"sys": true,
Expand All @@ -17,22 +16,26 @@
"tasks": {
"start": "deno run --permission-set=run src/main.ts",
"start:dev": "deno run --env-file=.env -A src/main.ts",
"test": "deno test --permission-set=run src",
"dev": "deno run --env-file=.env --permission-set=run --watch src/main.ts"
},
"imports": {
"@actions/core": "npm:@actions/core@^1.11.1",
"@actions/github": "npm:@actions/github@^6.0.1",
"@libpg-query/parser": "npm:@libpg-query/parser@^17.7.0",
"@libpg-query/parser": "npm:@libpg-query/parser@^17.6.3",
"@opentelemetry/api": "jsr:@opentelemetry/api@^1.9.0",
"@pgsql/types": "npm:@pgsql/types@^17.6.1",
"@query-doctor/core": "npm:@query-doctor/core@^0.0.3",
"@query-doctor/core": "npm:@query-doctor/core@^0.1.0",
"@rabbit-company/rate-limiter": "jsr:@rabbit-company/rate-limiter@^3.0.0",
"@std/assert": "jsr:@std/assert@^1.0.14",
"@std/collections": "jsr:@std/collections@^1.1.3",
"@std/data-structures": "jsr:@std/data-structures@^1.0.9",
"@std/fmt": "jsr:@std/fmt@^1.0.8",
"@std/testing": "jsr:@std/testing@^1.0.16",
"@testcontainers/postgresql": "npm:@testcontainers/postgresql@^11.9.0",
"@types/node": "npm:@types/node@^24.9.1",
"@types/nunjucks": "npm:@types/nunjucks@^3.2.6",
"async-sema": "npm:async-sema@^3.1.1",
"chokidar": "npm:chokidar@^4.0.3",
"dedent": "npm:dedent@^1.6.0",
"fast-csv": "npm:fast-csv@^5.0.5",
Expand Down
Loading
Loading