diff --git a/.env b/.env deleted file mode 100644 index 951daa5..0000000 --- a/.env +++ /dev/null @@ -1,11 +0,0 @@ -KURRENTDB_DOCKER_REGISTRY=docker.cloudsmith.io/eventstore/kurrent-staging -KURRENTDB_DOCKER_IMAGE=kurrentdb -KURRENTDB_DOCKER_TAG=ci - -#KURRENTDB_DOCKER_REGISTRY=docker.kurrent.io/eventstore -#KURRENTDB_DOCKER_IMAGE=eventstoredb-ee -#KURRENTDB_DOCKER_TAG=lts - -#KURRENTDB_DOCKER_REGISTRY=docker.kurrentio/eventstore-ee -#KURRENTDB_DOCKER_IMAGE=eventstoredb-commercial -#KURRENTDB_DOCKER_TAG=23.10.5-commercialb-bookworm-slim diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..51ebfae --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,2 @@ +# Review ownership belongs to human maintainers rather than individual or automation accounts. +* @TrogonStack/trogon-eventstore-maintainers diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.yml b/.github/ISSUE_TEMPLATE/BUG_REPORT.yml index 985360f..ad4ce9e 100644 --- a/.github/ISSUE_TEMPLATE/BUG_REPORT.yml +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.yml @@ -44,15 +44,15 @@ body: attributes: label: Package version description: What version of the client you're experiencing the issue with. - placeholder: e.g., KurrentDB-Client-Go 1.1.2 + placeholder: e.g., v0.1.0 validations: required: true - type: input - id: kurrentdb-version + id: server-version attributes: - label: KurrentDB Version + label: TrogonEventStore version description: What version of the database you are using. - placeholder: e.g., KurrentDB v24.10 + placeholder: e.g., v0.1.0 validations: required: true - type: input @@ -60,20 +60,19 @@ body: attributes: label: Connection string description: What connection string you're using. Hide and sensitive information if necessary. - placeholder: e.g., kurrentdb://admin:changeit@localhost:2113 + placeholder: e.g., esdb://admin:changeit@localhost:2113 validations: required: true - type: dropdown id: deployment-environment attributes: label: ☁️ Deployment Environment - description: How is KurrentDB deployed? + description: How is TrogonEventStore deployed? options: - Single-node (Docker) - Single-node (Bare metal/VM) - Multi-node cluster (On-prem) - Multi-node cluster (Cloud) - - Managed KurrentDB Cloud - Other (please specify below) validations: required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9eba204..54c9578 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: false contact_links: - name: Feature Request - url: https://github.com/kurrent-io/KurrentDB-Client-Go/discussions/new?category=ideas&labels=triage&title=Feature%20request%3A%20 + url: https://github.com/TrogonStack/TrogonEventStore-Client-Go/discussions/new?category=ideas about: Request a feature to add to the client - name: Ask a Question - url: https://github.com/kurrent-io/KurrentDB-Client-Go/discussions/new?category=q-a&labels=triage - about: Ask questions and discuss with other community members. \ No newline at end of file + url: https://github.com/TrogonStack/TrogonEventStore-Client-Go/discussions/new?category=q-a + about: Ask questions and discuss with other community members. diff --git a/.github/release-please-config.json b/.github/release-please-config.json new file mode 100644 index 0000000..b16a50b --- /dev/null +++ b/.github/release-please-config.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "bootstrap-sha": "8c6a6bc7c1fe0251cd1e049187232625b4fed141", + "signoff": "SHT Bot <61149376+sht-bot@users.noreply.github.com>", + "packages": { + ".": { + "release-type": "go", + "package-name": "TrogonEventStore-Client-Go", + "component": "TrogonEventStore-Client-Go", + "include-component-in-tag": false, + "include-v-in-tag": true, + "pull-request-title-pattern": "chore${scope}: release${component} ${version}", + "bump-minor-pre-major": false, + "bump-patch-for-minor-pre-major": false + } + } +} diff --git a/.github/release-please-manifest.json b/.github/release-please-manifest.json new file mode 100644 index 0000000..b985ff6 --- /dev/null +++ b/.github/release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.1" +} diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml deleted file mode 100644 index 0d56702..0000000 --- a/.github/workflows/build-docs.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Build Production Site - -on: - push: - branches: [release/**/**] - paths: - - '**.md' - -jobs: - dispatch: - runs-on: ubuntu-latest - steps: - - name: Trigger build - run: curl -X POST -d {} "${{ secrets.CLOUDFLARE_BUILD_HOOK }}" \ No newline at end of file diff --git a/.github/workflows/cherry-pick-pr-for-label.yml b/.github/workflows/cherry-pick-pr-for-label.yml deleted file mode 100644 index f7fa3d2..0000000 --- a/.github/workflows/cherry-pick-pr-for-label.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Cherry pick PR commits for label -on: - pull_request_target: - types: [closed] -jobs: - cherry_pick_pr_for_label: - name: Cherry pick PR commits for label - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Cherry Pick PR for label - uses: kurrent-io/Automations/cherry-pick-pr-for-label@master - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9fcceb2 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: CI + +on: + pull_request: + push: + branches: + - main + +permissions: + contents: read + +jobs: + build: + name: Build and test (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + steps: + - name: Checkout + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + with: + persist-credentials: false + - name: Install Go + uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.1.0 + with: + go-version-file: go.mod + cache: true + - name: Compile packages and tests + run: go test ./... -run "^$" + - name: Run library tests + run: go test ./trogoneventstore + + quality: + name: Quality + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + with: + persist-credentials: false + - name: Install Go + uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.1.0 + with: + go-version-file: go.mod + cache: true + - name: Install generation toolchain + uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3 + with: + install: true + cache: true + - name: Verify generated protobuf bindings + run: mise exec -- make verify-protos + - name: Check formatting + shell: bash + run: | + unformatted=$(gofmt -l .) + if [ -n "$unformatted" ]; then + echo "$unformatted" + exit 1 + fi + - name: Run vet + run: go vet ./... diff --git a/.github/workflows/go-version.yml b/.github/workflows/go-version.yml deleted file mode 100644 index dadd241..0000000 --- a/.github/workflows/go-version.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Get Go version - -on: - workflow_call: - outputs: - go_version: - description: Currently supported Go version - value: ${{ jobs.provide_go_version.outputs.go_version }} - -jobs: - provide_go_version: - name: Provide Go Version - runs-on: ubuntu-latest - env: - GO_VERSION: 1.22 - outputs: - go_version: ${{ steps.get.outputs.version }} - steps: - - name: Get Go version - id: get - run: echo "version=$GO_VERSION" >> $GITHUB_OUTPUT \ No newline at end of file diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml deleted file mode 100644 index bb5f94a..0000000 --- a/.github/workflows/go.yml +++ /dev/null @@ -1,76 +0,0 @@ -on: - pull_request: - paths-ignore: - - "docs/**" - - "samples/**" - - "**.md" - push: - branches: - - main - schedule: - - cron: '0 0 * * 0' # Run every Sunday at midnight UTC - -jobs: - go-version: - name: Get Go version - uses: ./.github/workflows/go-version.yml - - build: - name: Build - needs: go-version - strategy: - fail-fast: false - matrix: - os: [ ubuntu-latest, windows-latest, macos-latest ] - - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: ${{ needs.go-version.outputs.go_version }} - - name: Generate protos and build project - run: make generate-protos-and-build - outputs: - go_version: ${{ needs.go-version.outputs.go_version }} - - tests: - needs: - - go-version - - build - - strategy: - fail-fast: false - matrix: - runtime: [ previous-lts, lts, ci ] - - name: Tests - uses: ./.github/workflows/tests.yml - with: - runtime: ${{ matrix.runtime }} - go_version: ${{ needs.go-version.outputs.go_version }} - secrets: inherit - -# plugins: -# needs: tests -# name: Plugins Tests -# uses: ./.github/workflows/tests.yml -# with: -# runtime: qa -# registry: docker.eventstore.com/eventstore-ee -# image: eventstoredb-commercial -# tag: 24.2.0-jammy -# go_version: ${{ needs.go-version.outputs.go_version }} -# secrets: inherit - - linting: -# needs: plugins - needs: tests - name: Linting - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Linting - run: go vet ./... - - name: Code formatting checks - run: diff -u <(echo -n) <(goimports -d ./) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml new file mode 100644 index 0000000..1c0afde --- /dev/null +++ b/.github/workflows/integration.yml @@ -0,0 +1,57 @@ +name: Integration + +on: + pull_request: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + packages: read + +jobs: + integration: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - name: Checkout + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + with: + persist-credentials: false + - name: Install Go + uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.1.0 + with: + go-version-file: go.mod + cache: true + - name: Start TrogonEventStore + run: make start-server + - name: Run integration tests + run: go test --count=1 ./test + - name: Stop TrogonEventStore + if: always() + run: make stop-server + + oauth: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + with: + persist-credentials: false + - name: Install Go + uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.1.0 + with: + go-version-file: go.mod + cache: true + - name: Start OAuth stack + run: make start-oauth + - name: Run OAuth integration tests + env: + TROGON_EVENTSTORE_OAUTH_TESTS: "1" + run: go test --count=1 ./test -run '^TestOAuthAuthenticationSuite$' + - name: Stop OAuth stack + if: always() + run: make stop-oauth diff --git a/.github/workflows/load-configuration.yml b/.github/workflows/load-configuration.yml deleted file mode 100644 index 595abdb..0000000 --- a/.github/workflows/load-configuration.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Load KurrentDB Runtime Configuration -on: - workflow_call: - inputs: - runtime: - description: "The runtime's name. Current options are: `ci`, `previous-lts`, `latest` and `qa`" - required: true - type: string - - registry: - description: "When in QA mode, the Docker registry to use" - type: string - required: false - - image: - description: "When in QA mode, the Docker image to use" - type: string - required: false - - tag: - description: "When in QA mode, the Docker image tag to use" - type: string - required: false - - outputs: - runtime: - description: The runtime's name - value: ${{ inputs.runtime }} - - registry: - description: The Docker registry - value: ${{ jobs.load.outputs.registry }} - - image: - description: The Docker image - value: ${{ jobs.load.outputs.image }} - - tag: - description: The Docker image tag - value: ${{ jobs.load.outputs.tag }} - -jobs: - load: - runs-on: ubuntu-latest - outputs: - registry: ${{ steps.set.outputs.registry }} - image: ${{ steps.set.outputs.image }} - tag: ${{ steps.set.outputs.tag }} - - steps: - - name: Set KurrentDB Runtime Configuration Properties - id: set - run: | - case ${{ inputs.runtime }} in - "qa") - echo "registry=${{ inputs.registry }}" >> $GITHUB_OUTPUT - echo "image=${{ inputs.image }}" >> $GITHUB_OUTPUT - echo "tag=${{ inputs.tag }}" >> $GITHUB_OUTPUT - ;; - - *) - echo "registry=${{ fromJSON(vars.KURRENTDB_DOCKER_IMAGES)[inputs.runtime].registry }}" >> $GITHUB_OUTPUT - echo "image=${{ fromJSON(vars.KURRENTDB_DOCKER_IMAGES)[inputs.runtime].image }}" >> $GITHUB_OUTPUT - echo "tag=${{ fromJSON(vars.KURRENTDB_DOCKER_IMAGES)[inputs.runtime].tag }}" >> $GITHUB_OUTPUT - ;; - esac \ No newline at end of file diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml deleted file mode 100644 index 8a7e77b..0000000 --- a/.github/workflows/qa.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: "QA" - -on: - workflow_dispatch: - inputs: - tag: - required: false - type: string - default: "ci" - description: "The tag to use for the docker image" - image: - required: false - type: string - default: "kurrentdb" - description: "The docker image to use" - registry: - required: false - type: string - default: "docker.kurrent.io/kurrent-staging" - description: "The docker registry to use" - -jobs: - go-version: - name: Get Go version - uses: ./.github/workflows/go-version.yml - - test: - needs: go-version - name: QA - uses: ./.github/workflows/tests.yml - with: - runtime: qa - registry: ${{ inputs.registry }} - image: ${{ inputs.image }} - tag: ${{ inputs.tag }} - go_version: ${{ needs.go-version.outputs.go_version }} - secrets: inherit diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 0000000..e61f84d --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,24 @@ +name: Release Please + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: write + issues: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Create release pull request or release + uses: googleapis/release-please-action@5c625bfb5d1ff62eadeeb3772007f7f66fdcf071 # v4.4.1 + with: + token: ${{ secrets.GH_PAT_RELEASE_PLEASE_ACTION }} + config-file: .github/release-please-config.json + manifest-file: .github/release-please-manifest.json diff --git a/.github/workflows/semconv.yml b/.github/workflows/semconv.yml new file mode 100644 index 0000000..e7123b3 --- /dev/null +++ b/.github/workflows/semconv.yml @@ -0,0 +1,40 @@ +name: SemConv + +on: + pull_request_target: + types: [opened, edited, synchronize, reopened] + +permissions: + pull-requests: read + +jobs: + validate: + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - name: Validate pull request title and commits + shell: bash + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + PR_TITLE: ${{ github.event.pull_request.title }} + REPOSITORY: ${{ github.repository }} + run: | + pattern='^(feat|fix|chore)(\([A-Za-z0-9][A-Za-z0-9._/-]*\))?!?: .+' + [[ "$PR_TITLE" =~ $pattern ]] || exit 1 + commit_records=$(gh api --paginate "repos/$REPOSITORY/pulls/$PR_NUMBER/commits" --jq '.[] | {parent_count: (.parents | length), subject: (.commit.message | split("\n")[0])}') || exit 1 + [ -n "$commit_records" ] || exit 1 + invalid=0 + commits=0 + while IFS= read -r record; do + parent_count=$(jq -er '.parent_count' <<< "$record") || exit 1 + subject=$(jq -er '.subject' <<< "$record") || exit 1 + [ "$parent_count" -gt 1 ] && continue + commits=$((commits + 1)) + if [[ ! "$subject" =~ $pattern ]]; then + echo "Invalid commit subject: $subject" >&2 + invalid=1 + fi + done <<< "$commit_records" + [ "$commits" -gt 0 ] || exit 1 + exit "$invalid" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index fc44def..0000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,112 +0,0 @@ -name: Tests - -on: - workflow_call: - inputs: - runtime: - required: true - type: string - - go_version: - required: true - type: string - - registry: - description: "When in QA mode, the Docker registry to use" - type: string - required: false - - image: - description: "When in QA mode, the Docker image to use" - type: string - required: false - - tag: - description: "When in QA mode, the Docker image tag to use" - type: string - required: false - -jobs: - load_configuration: - uses: ./.github/workflows/load-configuration.yml - with: - runtime: ${{ inputs.runtime }} - registry: ${{ inputs.registry }} - image: ${{ inputs.image }} - tag: ${{ inputs.tag }} - - test: - needs: load_configuration - name: Test - timeout-minutes: 10 - - strategy: - fail-fast: false - matrix: - test: [ Streams, PersistentSubscriptions, Projections ] - - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: ${{ inputs.go_version }} - - - name: Login to Cloudsmith - uses: docker/login-action@v3 - with: - registry: docker.kurrent.io - username: ${{ secrets.CLOUDSMITH_CICD_USER }} - password: ${{ secrets.CLOUDSMITH_CICD_TOKEN }} - - - name: Misc tests - run: go test --count=1 -v ./kurrentdb -run TestMisc - - - name: Start KurrentDB - run: make start-kurrentdb - env: - KURRENTDB_DOCKER_REGISTRY: ${{ needs.load_configuration.outputs.registry }} - KURRENTDB_DOCKER_IMAGE: ${{ needs.load_configuration.outputs.image }} - KURRENTDB_DOCKER_TAG: ${{ needs.load_configuration.outputs.tag }} - - - name: Run Go Tests - run: go test --count=1 -v ./test -run Test${{ matrix.test }} - - oauth-test: - needs: load_configuration - name: OAuth Test - timeout-minutes: 10 - - runs-on: ubuntu-latest - # OAuth e2e runs only on the `ci` runtime: that image ships the licensed - # OAuth plugin and the kurrentd entrypoint the stack expects (the lts / - # previous-lts images are EventStoreDB-branded with a different layout). The - # steps are also skipped when the license secret is unavailable, e.g. on - # pull requests from forks, so the job stays green. - env: - KURRENTDB_LICENSE_KEY: ${{ secrets.KURRENTDB_TEST_LICENSE_KEY }} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: ${{ inputs.go_version }} - - - name: Login to Cloudsmith - if: inputs.runtime == 'ci' && env.KURRENTDB_LICENSE_KEY != '' - uses: docker/login-action@v3 - with: - registry: docker.kurrent.io - username: ${{ secrets.CLOUDSMITH_CICD_USER }} - password: ${{ secrets.CLOUDSMITH_CICD_TOKEN }} - - - name: Start OAuth stack - if: inputs.runtime == 'ci' && env.KURRENTDB_LICENSE_KEY != '' - run: make start-oauth - env: - KURRENTDB_DOCKER_REGISTRY: ${{ needs.load_configuration.outputs.registry }} - KURRENTDB_DOCKER_IMAGE: ${{ needs.load_configuration.outputs.image }} - KURRENTDB_DOCKER_TAG: ${{ needs.load_configuration.outputs.tag }} - - - name: Run OAuth tests - if: inputs.runtime == 'ci' && env.KURRENTDB_LICENSE_KEY != '' - run: go test --count=1 -v ./test -run TestOAuthAuthenticationSuite \ No newline at end of file diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 0000000..42ec3be --- /dev/null +++ b/.mise.toml @@ -0,0 +1,2 @@ +[tools] +protoc = "36.0" diff --git a/CHANGELOG.md b/CHANGELOG.md index c298e69..7ac0acc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,3 @@ -This changelog is no longer maintained. The information has been moved to the [GitHub release notes](https://github.com/kurrent-io/KurrentDB-Client-Go/releases) page. +# Changelog + +Release notes are maintained by Release Please on the [GitHub Releases](https://github.com/TrogonStack/TrogonEventStore-Client-Go/releases) page. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2aa1a52..f62c9db 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,40 +1,16 @@ -# Contributing to KurrentDB Client Go - -## Working with the Git - -The client uses `main` as the main development branch. It contains all changes to the upcoming release. - -We do our best to ensure a clean history. To do so, we ask contributors to squash their commits into a set or single -logical commit. - -**To contribute to KurrentDB Client Go**: - -1. Fork the repository. -2. Create a feature branch from the `main` branch. -3. It's recommended that feature branches use a rebase strategy (see more in [Git documentation](https://git-scm.com/book/en/v2/Git-Branching-Rebasing)). We also highly recommend using clear commit messages that represent the unit of change. -4. Rebase the latest source branch from the main repository before sending PR. -5. When ready to create the Pull Request on GitHub [check to see what has previously changed](https://github.com/kurrent-io/KurrentDB-Client-Go/compare). - -## Samples - -Code samples are in the [`samples`](/samples) folder. They're orchestrated in the separate [documentation repository](https://github.com/kurrent-io/documentation). The Kurrent Documentation site is publicly accessible at https://docs.kurrent.io/. - -## Code style - -1. **Formatting**: Use `gofmt` to format your code. This tool is the standard for Go code formatting and ensures consistency across the codebase. -2. **Linting**: Use `golint` to check for style mistakes. This tool helps maintain code quality by enforcing Go idioms and best practices. -3. **Imports**: Organize imports into three groups: standard library packages, third-party packages, and local packages. Separate these groups with a blank line. -4. **Comments**: Use comments to explain the purpose of the code. Exported functions and types should have comments that start with the name of the function or type. -5. **Naming**: Follow Go naming conventions. Use camelCase for variable names, PascalCase for exported names, and ALL_CAPS for constants. -6. **Error Handling**: Handle errors explicitly. Check for errors and handle them appropriately. Do not ignore errors. -7. **Testing**: Write tests for your code. Use the `testing` package and aim for high test coverage. Ensure tests are clear and concise. -8. **Concurrency**: Use goroutines and channels appropriately. Avoid common pitfalls - -## Licensing and legal rights - -By contributing to KurrentDB Client Go: - -1. You assert that contribution is your original work -2. You assert that you have the right to assign the copyright for the work -3. You accept the [Contributor License Agreement](https://gist.github.com/eventstore-bot/7a1e56c21e81f44a625a7462403298bf) (CLA) for your contribution -4. You accept the [License](LICENSE.md) +# Contributing to the TrogonEventStore Go client + +Open an issue or pull request in this repository. Pull request titles and commit +subjects must use `feat`, `fix`, or `chore` Conventional Commit prefixes. Every +commit must include a DCO sign-off. + +Before opening a pull request, run: + +```sh +gofmt -w . +go vet ./... +go test ./... +``` + +Integration changes must also be tested against the repository Docker Compose +stack. diff --git a/INSTALL.md b/INSTALL.md index 26aa370..df0fd3b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,48 +1,19 @@ -# Installing KurrentDB-Client-Go - -## Using the latest version - -If you want to use the latest version of this library run: - -```sh -go get github.com/kurrent-io/KurrentDB-Client-Go@latest -``` - -This will record a dependency on `github.com/kurrent-io/KurrentDB-Client-Go` in your go module. You can now import and -use the APIs in your project. The next time you `go build`, `go test`, or `go run` your project, -`github.com/kurrent-io/KurrentDB-Client-Go` and its dependencies will be downloaded (if needed), and detailed dependency -version info will be added to your `go.mod` file (or you can also run `go mod tidy` to do this directly). - -## Using a specific version - -If you want to use a particular version of the `github.com/kurrent-io/KurrentDB-Client-Go` library, -you can indicate which version of `KurrentDB-Client-Go` your project requires: - -```sh -go get github.com/kurrent-io/KurrentDB-Client-Go@v0.1.0 -``` - -You can now import and use the `github.com/kurrent-io/KurrentDB-Client-Go` APIs in your project. -The next time you `go build`, `go test`, or `go run` your project, -`github.com/kurrent-io/KurrentDB-Client-Go` and its dependencies will be downloaded (if needed), -and detailed dependency version info will be added to your `go.mod` file -(or you can also run `go mod tidy` to do this directly). - -## Troubleshooting - -### Go modules disabled - -If you get a message like `cannot use path@version syntax in GOPATH mode`, -you likely do not have go modules enabled. This should be on by default in all -supported versions of Go. - -```sh -export GO111MODULE=on -``` - -Ensure your project has a `go.mod` file defined at the root of your project. -If you do not already have one, `go mod init` will create one for you: - -```sh -go mod init -``` \ No newline at end of file +# Installing TrogonEventStore-Client-Go + +Install the latest tagged release: + +```sh +go get github.com/TrogonStack/TrogonEventStore-Client-Go@latest +``` + +Install a specific release: + +```sh +go get github.com/TrogonStack/TrogonEventStore-Client-Go@v0.1.0 +``` + +Import the public package: + +```go +import "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" +``` diff --git a/KurrentLogo-Black.png b/KurrentLogo-Black.png deleted file mode 100644 index 0ff9694..0000000 Binary files a/KurrentLogo-Black.png and /dev/null differ diff --git a/KurrentLogo-Plum.png b/KurrentLogo-Plum.png deleted file mode 100644 index a27a816..0000000 Binary files a/KurrentLogo-Plum.png and /dev/null differ diff --git a/KurrentLogo-White.png b/KurrentLogo-White.png deleted file mode 100644 index e49bfb0..0000000 Binary files a/KurrentLogo-White.png and /dev/null differ diff --git a/LICENSE b/LICENSE index 0fdf685..fbeae2f 100644 --- a/LICENSE +++ b/LICENSE @@ -187,6 +187,7 @@ identification within third-party archives. Copyright 2011-2025 Kurrent, Inc + Copyright 2026 Straw Hat, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Makefile b/Makefile index cb157fb..05e62d1 100644 --- a/Makefile +++ b/Makefile @@ -4,58 +4,65 @@ help: @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) OS := $(shell uname) - -GENERATE_PROTOS_FLAG= -EVENTSTORE_DOCKER_REGISTRY ?= docker.eventstore.com/eventstore-ce -EVENTSTORE_DOCKER_IMAGE ?= eventstoredb-ce -EVENTSTORE_DOCKER_TAG ?= latest +MODULE := github.com/TrogonStack/TrogonEventStore-Client-Go +PROTO_ROOT := protos +PROTO_FILES := $(shell find $(PROTO_ROOT)/trogoneventstore -type f -name '*.proto' | sort) +# google.rpc bindings are consumed from google.golang.org/genproto, as declared by their go_package options. +EXTERNAL_GO_PROTO_FILES := $(PROTO_ROOT)/trogoneventstore/protocols/v1/code.proto $(PROTO_ROOT)/trogoneventstore/protocols/v1/status.proto +CLIENT_PROTO_FILES := $(filter-out $(EXTERNAL_GO_PROTO_FILES),$(PROTO_FILES)) +PROTOC_GEN_GO_VERSION := v1.36.9 +PROTOC_GEN_GO_GRPC_VERSION := v1.5.1 .PHONY: build -build: ## Build based on the OS. -ifeq ($(OS),Linux) - ./build.sh $(GENERATE_PROTOS_FLAG) -else ifeq ($(OS),Darwin) - ./build.sh $(GENERATE_PROTOS_FLAG) -else - pwsh.exe -File ".\build.ps1" $(GENERATE_PROTOS_FLAG) -endif - -.PHONY: generate-protos-and-build -generate-protos-and-build: ## Generate protobuf and gRPC files while building. -ifeq ($(OS),Linux) - $(MAKE) build GENERATE_PROTOS_FLAG=--generate-protos -else ifeq ($(OS),Darwin) - $(MAKE) build GENERATE_PROTOS_FLAG=--generate-protos -else - $(MAKE) build GENERATE_PROTOS_FLAG=-generateProtos -endif - -.PHONY: start-kurrentdb -start-kurrentdb: +build: ## Compile all packages. + go build ./... + +.PHONY: validate-protos +validate-protos: ## Compile every checked-in protobuf source. + @descriptor=$$(mktemp); \ + trap 'rm -f "$$descriptor"' EXIT; \ + protoc -I $(PROTO_ROOT) --include_imports --descriptor_set_out="$$descriptor" $(PROTO_FILES) + +.PHONY: generate-protos +generate-protos: validate-protos ## Regenerate repository-owned protobuf and gRPC bindings. + @tool_dir=$$(mktemp -d); \ + trap 'rm -rf "$$tool_dir"' EXIT; \ + GOBIN="$$tool_dir" go install google.golang.org/protobuf/cmd/protoc-gen-go@$(PROTOC_GEN_GO_VERSION); \ + GOBIN="$$tool_dir" go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@$(PROTOC_GEN_GO_GRPC_VERSION); \ + PATH="$$tool_dir:$$PATH" protoc -I $(PROTO_ROOT) \ + --go_out=. --go_opt=module=$(MODULE) \ + --go-grpc_out=. --go-grpc_opt=module=$(MODULE) \ + $(CLIENT_PROTO_FILES) + +.PHONY: verify-protos +verify-protos: generate-protos ## Fail when generated protobuf bindings drift. + @git diff --exit-code -- $(PROTO_ROOT) + +.PHONY: start-server +start-server: ## Start the TrogonEventStore integration-test cluster. @docker --version @docker compose up -d - @echo "Waiting for containers to be healthy..." - @until [ "$$(docker inspect -f '{{.State.Health.Status}}' $$(docker ps -q) | grep -c healthy)" -eq "$$(docker ps -q | wc -l)" ]; do \ - printf "."; \ - sleep 2; \ - done; \ - echo ""; \ - echo "✅ All containers are healthy!" - @docker compose ps - -.PHONY: stop-kurrentdb -stop-kurrentdb: + @for endpoint in http://localhost:2114/-/liveness https://localhost:2115/-/liveness; do \ + attempt=0; \ + until curl --insecure --fail --silent "$$endpoint" >/dev/null; do \ + attempt=$$((attempt + 1)); \ + [ "$$attempt" -lt 60 ] || exit 1; \ + sleep 1; \ + done; \ + done + +.PHONY: stop-server +stop-server: ## Stop the TrogonEventStore integration-test cluster. @docker compose down -v --remove-orphans .PHONY: start-oauth -start-oauth: ## Start the OAuth stack (Keycloak + an OAuth KurrentDB node). Requires KURRENTDB_LICENSE_KEY. +start-oauth: ## Start the OAuth integration-test stack. @docker compose -f docker-compose.oauth.yml up -d --wait - @docker compose -f docker-compose.oauth.yml ps .PHONY: stop-oauth -stop-oauth: - @KURRENTDB_LICENSE_KEY=unset docker compose -f docker-compose.oauth.yml down -v --remove-orphans +stop-oauth: ## Stop the OAuth integration-test stack. + @docker compose -f docker-compose.oauth.yml down -v --remove-orphans .PHONY: test -test: ## Run tests - go test --count=1 -v ./test +test: ## Run all tests. + go test --count=1 ./... diff --git a/README.md b/README.md index 3069ba9..aaaa3fb 100644 --- a/README.md +++ b/README.md @@ -1,134 +1,50 @@ - - - - - Kurrent - - +# TrogonEventStore Go client -# KurrentDB Go Client +[![CI](https://github.com/TrogonStack/TrogonEventStore-Client-Go/actions/workflows/ci.yml/badge.svg)](https://github.com/TrogonStack/TrogonEventStore-Client-Go/actions/workflows/ci.yml) +[![Integration](https://github.com/TrogonStack/TrogonEventStore-Client-Go/actions/workflows/integration.yml/badge.svg)](https://github.com/TrogonStack/TrogonEventStore-Client-Go/actions/workflows/integration.yml) +[![Go Reference](https://pkg.go.dev/badge/github.com/TrogonStack/TrogonEventStore-Client-Go.svg)](https://pkg.go.dev/github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore) -[![PkgGoDev](https://pkg.go.dev/badge/github.com/kurrent-io/KurrentDB-Client-Go)](https://pkg.go.dev/github.com/kurrent-io/KurrentDB-Client-Go) -[![CI](https://github.com/kurrent-io/KurrentDB-Client-Go/actions/workflows/ci.yml/badge.svg)](https://github.com/kurrent-io/KurrentDB-Client-Go/actions/workflows/ci.yml) -[![LTS](https://github.com/kurrent-io/KurrentDB-Client-Go/actions/workflows/lts.yml/badge.svg)](https://github.com/kurrent-io/KurrentDB-Client-Go/actions/workflows/lts.yml) -[![Previous LTS](https://github.com/kurrent-io/KurrentDB-Client-Go/actions/workflows/previous-lts.yml/badge.svg)](https://github.com/kurrent-io/KurrentDB-Client-Go/actions/workflows/previous-lts.yml) +The Go client for [TrogonEventStore](https://github.com/TrogonStack/TrogonEventStore). -KurrentDB is a database that's engineered for modern software applications and event-driven architectures. Its -event-native design simplifies data modeling and preserves data integrity while the integrated streaming engine solves -distributed messaging challenges and ensures data consistency. +This project is derived from an Apache-2.0 licensed client. The license retains +the original copyright notice and identifies modifications by Straw Hat, LLC. -"KurrentDB Client Go" is the client for talking to [KurrentDB](https://kurrent.io/). +## Install -The fastest way to add this client to a project is to run `go get github.com/kurrent-io/KurrentDB-Client-Go@latest` with -go, See [INSTALL.md](/INSTALL.md) for detailed installation instructions and troubleshooting. - -### Documentation - -* [API Reference](https://pkg.go.dev/github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb) -* [Samples](https://github.com/kurrent-io/KurrentDB-Client-Go/tree/main/samples) - -## Communities - -[Join our global community](https://www.kurrent.io/community) of developers. - -- [Discuss](https://discuss.kurrent.io/) -- [Discord (Kurrent)](https://discord.gg/Phn9pmCw3t) -- [Discord (ddd-cqrs-es)](https://discord.com/invite/sEZGSHNNbH) - -## Contributing - -Development is done on the `main` branch. -We attempt to do our best to ensure that the history remains clean and to do so, we generally ask contributors to squash -their commits into a set or single logical commit. - -- [Create an issue](https://github.com/kurrent-io/KurrentDB-Client-Go/issues) -- [Documentation](https://docs.kurrent.io/) -- [Contributing guide](https://github.com/kurrent-io/KurrentDB-Client-Go/blob/main/CONTRIBUTING.md) - -## Building the client - -The client is built using the [Go](https://golang.org/) programming language. To build the client, you need to have Go -installed on your machine. You can download it from the official Go website. -Once you have Go installed, you can build the client by running the following command in the root directory of the -project: - -```bash -make build +```sh +go get github.com/TrogonStack/TrogonEventStore-Client-Go@latest ``` -The build scripts: `build.sh` and `build.ps1` are also available for Linux and Windows respectively to simplify the -build process. - -### Running the tests - -Testing requires [Docker](https://www.docker.com/) and [Docker Compose](https://www.docker.com/) to be installed. - -Start all required KurrentDB services using the provided `docker-compose` configuration: - -```bash -make start-kurrentdb +```go +import "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ``` -To stop the services, you can run: - -```bash -make stop-kurrentdb -``` +See [INSTALL.md](INSTALL.md) and the [API guides](docs/api/getting-started.md). -You can launch the tests as follows: +## Build and test -``` -make test +```sh +make build +go test ./trogoneventstore ``` -Alternatively, you can run the tests using the `go test` command: +Integration tests run against `ghcr.io/trogonstack/trogoneventstore:ci`: -```bash -go test ./... +```sh +make start-server +go test ./test +make stop-server ``` -By default, the test suite uses the Docker image: `docker.kurrent.io/eventstore/eventstoredb-ee:lts`. To run the tests -with a different image, set the environment variables listed below. - -For example, to use the commercial image -`docker.kurrentio/eventstore-ee/eventstoredb-commercial:23.10.5-commercialb-bookworm-slim`, configure your environment -with: +Override the server image with `TROGON_EVENTSTORE_SERVER_IMAGE` when testing a +specific image. -| Variable Name | Example Value | -|-----------------------------|-----------------------------------| -| `KURRENTDB_DOCKER_REGISTRY` | docker.kurrentio/eventstore-ee | -| `KURRENTDB_DOCKER_IMAGE` | eventstoredb-commercial | -| `KURRENTDB_DOCKER_TAG` | 23.10.5-commercialb-bookworm-slim | - -These variables combine to form the complete image reference used during testing. - -### Running the OAuth tests - -The OAuth authentication tests run against a separate stack (a Keycloak identity -provider plus a KurrentDB node configured for OAuth) defined in -`docker-compose.oauth.yml`. They are kept apart from the main suite because OAuth -is a licensed feature: the node needs a license key, and the image must include -the OAuth plugin. The `TestOAuthAuthenticationSuite` suite skips when the stack -is not running, so it does not affect the default `make test` run. - -Set a license key, then start the stack and run the suite: - -```bash -export KURRENTDB_LICENSE_KEY= -make start-oauth -go test ./test -run TestOAuthAuthenticationSuite -make stop-oauth -``` +## Releases -The `KURRENTDB_DOCKER_*` variables select the image as above; it must be one that -ships the OAuth plugin. These tests are not part of the default CI matrix — -enabling them there requires a license-key secret, a plugin-capable image, and a -matrix entry that runs `make start-oauth` before the suite. +Release Please creates version pull requests and GitHub releases. Go consumers +use the generated `vX.Y.Z` module tags directly. This project does not publish +to a package registry. -## More resources +## License -- [Release notes](https://kurrent.io/blog/release-notes) -- [Beginners Guide to Event Sourcing](https://kurrent.io/event-sourcing) -- [Articles](https://kurrent.io/blog) -- [Webinars](https://kurrent.io/webinars) -- [Contact us](https://kurrent.io/contact) +Licensed under Apache-2.0. See [LICENSE](LICENSE). diff --git a/build.ps1 b/build.ps1 deleted file mode 100644 index 68bbea2..0000000 --- a/build.ps1 +++ /dev/null @@ -1,91 +0,0 @@ -[CmdletBinding()] -Param( - [switch] $generateProtos -) - -$ErrorActionPreference = "Stop" - -function Exec { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true, Position = 0)][scriptblock]$Command, - [Parameter(Mandatory = $false, Position = 1)][string]$ErrorMessage = ("Failed executing {0}" -F $Command) - ) - - . $Command - if ($LASTEXITCODE -ne 0) { - throw ("Exec: " + $ErrorMessage) - } -} - -$protobufVersion = "26.0" -$protocTarball = "protoc-$protobufVersion-win64.zip" -$protocUrl = "https://github.com/protocolbuffers/protobuf/releases/download/v$protobufVersion/$protocTarball" - -go version - -# Required tools -New-Item -Path . -Name "tools" -ItemType "directory" -Force | Out-Null -Push-Location tools - -if (-not (Test-Path -LiteralPath "protobuf")) { - Write-Host "Installing protoc $protobufVersion locally..." - - Invoke-WebRequest -Uri $protocUrl -OutFile $protocTarball - Expand-Archive -LiteralPath $protocTarball -DestinationPath "protobuf" -Force - Remove-Item $protocTarball - - Write-Host "done." -} - -Pop-Location -# end - -if ($generateProtos) { - Exec { go install google.golang.org/protobuf/cmd/protoc-gen-go@latest } "Cannot run go command" - Exec { go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest } "Cannot run go command" - - # We don't check the env variables because Github actions don't set $GOPATH. - $gopath = Exec { go env GOPATH } "Cannot get $$GOPATH" - - Write-Host "Generating gRPC code..." - - $baseOutDir = "$pwd\protos" - - Get-ChildItem -Path "protos" -Recurse -Filter "*.proto" | ForEach-Object { - $file = $_ - $protoName = [System.IO.Path]::GetFileNameWithoutExtension($file.Name) - $protoDir = $file.DirectoryName - $outputDir = Join-Path $protoDir $protoName - - # Create the output directory for this proto file - New-Item -Path $outputDir -ItemType "directory" -Force | Out-Null - - Write-Host "Compiling $($file.Name) into $protoName folder..." - - # Generate Go files with a custom go_package option to control the output - # First, generate into a temp location, then move to the correct subfolder - $tempDir = Join-Path $env:TEMP "protogen_$protoName" - New-Item -Path $tempDir -ItemType "directory" -Force | Out-Null - - try { - Exec { tools\protobuf\bin\protoc --proto_path=$pwd\protos --go_out=$tempDir --go-grpc_out=$tempDir --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --plugin=protoc-gen-go=$gopath\bin\protoc-gen-go.exe --plugin=protoc-gen-go-grpc=$gopath\bin\protoc-gen-go-grpc.exe $file } "Cannot run protoc" - - # Move generated files from temp directory to the correct subfolder - Get-ChildItem -Path $tempDir -Recurse -Filter "*.pb.go" | ForEach-Object { - Move-Item $_.FullName $outputDir -Force - } - } finally { - # Clean up temp directory - Remove-Item $tempDir -Recurse -Force -ErrorAction SilentlyContinue - } - - Write-Host "done." - } - - Write-Host "Code generation completed." -} - -Write-Host "Compiling project..." -go build -v .\kurrentdb .\samples -Write-Host "done." diff --git a/build.sh b/build.sh deleted file mode 100755 index 013c3dc..0000000 --- a/build.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash - -set -e - -PROTOBUF_VERSION="26.0" -UNAME_S=`uname -s` -OS="" -GENERATE_PROTOS=0 - -if [ $UNAME_S = "Linux" ] -then - OS="linux-x86_64" -elif [ $UNAME_S = "Darwin" ] -then - OS="osx-x86_64" -else - echo "Unsupported operating system" - exit 1 -fi - -PROTOC_TARBALL="protoc-$PROTOBUF_VERSION-$OS.zip" -PROTOC_URL="https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOBUF_VERSION/$PROTOC_TARBALL" - -# Collect submitted flags. -for flag in "$@" -do - if [ $flag = "--generate-protos" ] - then - GENERATE_PROTOS=1 - fi -done -#end - -go version - -# Required tools -mkdir -p tools -pushd tools > /dev/null - -if [ ! -d protobuf ] -then - echo "Installing protoc $PROTOBUF_VERSION locally..." - - curl -LOs $PROTOC_URL - unzip -qu $PROTOC_TARBALL -d protobuf - rm $PROTOC_TARBALL - - echo "done." -fi - -popd > /dev/null -# end - -if [ $GENERATE_PROTOS -eq 1 ] -then - go install "google.golang.org/protobuf/cmd/protoc-gen-go@latest" - go install "google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest" - - gopath=`go env GOPATH` - - for proto in $(find protos -name "*.proto") - do - realbname=$(basename $proto .proto) - bname=$(echo $realbname | tr '.' '_' | tr '-' '_') - mkdir -p protos/$bname - echo "Compiling $realbname.proto ..." - tools/protobuf/bin/protoc --proto_path=$PWD/protos --go_out=./protos/$bname --go-grpc_out=./protos/$bname --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative --plugin=protoc-gen-go=$gopath/bin/protoc-gen-go --plugin=protoc-gen-go-grpc=$gopath/bin/protoc-gen-go-grpc $PWD/$proto - echo "done." - done - - echo "Protobuf code generation completed!" -fi - -echo "Compiling project..." -go build -v ./kurrentdb ./samples -echo "done." diff --git a/docker-compose.oauth.yml b/docker-compose.oauth.yml index d6a12a0..513d2e1 100644 --- a/docker-compose.oauth.yml +++ b/docker-compose.oauth.yml @@ -1,79 +1,49 @@ -# OAuth integration-test stack: a Keycloak identity provider plus a single -# KurrentDB node configured for OAuth authentication. Kept separate from the -# main docker-compose.yml because OAuth is a licensed feature - the node needs -# KURRENTDB_LICENSE_KEY to start, so it must not be part of the default -# `make start-kurrentdb` flow. Bring it up with `make start-oauth`. name: tests-oauth services: keycloak: - container_name: keycloak - image: quay.io/keycloak/keycloak:24.0 - command: start --import-realm + image: quay.io/keycloak/keycloak:24.0@sha256:f8ade94c1d0ad2f2fa7734a455fee5392764f402c43ca35e9af6bf63a2541dc9 + command: start-dev --import-realm ports: - - "8443:8443" + - "127.0.0.1:18080:8080" volumes: - ./oauth/realm-export.json:/opt/keycloak/data/import/realm-export.json:ro - - ./certs:/certs environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin - KC_HTTPS_CERTIFICATE_FILE: /certs/node1/node.crt - KC_HTTPS_CERTIFICATE_KEY_FILE: /certs/node1/node.key + KC_HEALTH_ENABLED: "true" KC_HOSTNAME: localhost - KC_HOSTNAME_PORT: "8443" + KC_HOSTNAME_PORT: "18080" KC_HOSTNAME_STRICT: "false" - KC_HTTP_ENABLED: "false" - KC_HEALTH_ENABLED: "true" healthcheck: - test: ["CMD", "bash", "-c", "echo > /dev/tcp/127.0.0.1/8443"] + test: ["CMD", "bash", "-c", "echo > /dev/tcp/127.0.0.1/8080"] interval: 5s timeout: 3s retries: 30 - start_period: 60s + start_period: 30s - single-oauth: - container_name: single-oauth - # The image must include the OAuth plugin (a licensed feature). The default - # is the public latest image, which carries it; CI overrides these vars to - # the registry/tag under test. - image: ${KURRENTDB_DOCKER_REGISTRY:-kurrentplatform}/${KURRENTDB_DOCKER_IMAGE:-kurrentdb}:${KURRENTDB_DOCKER_TAG:-latest} - # Root so the entrypoint can install the test CA into the OS trust store. - user: "0" + server: + image: ${TROGON_EVENTSTORE_SERVER_IMAGE:-ghcr.io/trogonstack/trogoneventstore:ci} depends_on: keycloak: condition: service_healthy - # Lets the node reach the Keycloak issuer at https://localhost:8443 (the - # same host the token's issuer claim uses) via the published host port. - extra_hosts: - - "localhost:host-gateway" environment: - EVENTSTORE_CERTIFICATE_FILE: "/etc/kurrentdb/certs/node1/node.crt" - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE: "/etc/kurrentdb/certs/node1/node.key" - EVENTSTORE_TRUSTED_ROOT_CERTIFICATES_PATH: "/etc/kurrentdb/certs/ca" - EVENTSTORE_ADVERTISE_HOST_TO_CLIENT_AS: "localhost" + EVENTSTORE_CONFIG: /etc/eventstore/oauth.conf + EVENTSTORE_CERTIFICATE_FILE: /etc/eventstore/certs/node1/node.crt + EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE: /etc/eventstore/certs/node1/node.key + EVENTSTORE_TRUSTED_ROOT_CERTIFICATES_PATH: /etc/eventstore/certs/ca + EVENTSTORE_ADVERTISE_HOST_TO_CLIENT_AS: localhost EVENTSTORE_ADVERTISE_NODE_PORT_TO_CLIENT_AS: "2116" - EVENTSTORE_ALLOW_UNKNOWN_OPTIONS: "true" - EVENTSTORE_AUTHENTICATION_TYPE: "oauth" - EVENTSTORE_AUTHENTICATION_CONFIG: "/etc/kurrentdb/kurrentdb.conf" - EVENTSTORE_LICENSING__LICENSE_KEY: "${KURRENTDB_LICENSE_KEY:?OAuth tests require a KURRENTDB_LICENSE_KEY}" - # The OAuth plugin validates the issuer over HTTPS using the OS trust store - # (not the KurrentDB trusted-roots path), so install the test CA before - # starting the node. - entrypoint: > - sh -c ' - cp /etc/kurrentdb/certs/ca/ca.crt /usr/local/share/ca-certificates/local-ca.crt; - update-ca-certificates; - exec /opt/kurrentdb/kurrentd; - ' + EVENTSTORE_TELEMETRY_OPTOUT: "true" + EVENTSTORE_LOG_FAILED_AUTHENTICATION_ATTEMPTS: "true" ports: - "2116:2113" volumes: - - ./certs:/etc/kurrentdb/certs - - ./oauth/oauth.conf:/etc/kurrentdb/kurrentdb.conf:ro + - ./certs:/etc/eventstore/certs:ro + - ./oauth/oauth.conf:/etc/eventstore/oauth.conf:ro healthcheck: - test: ["CMD-SHELL", "curl -sSfk https://localhost:2113/health/live || exit 1"] + test: ["CMD-SHELL", "curl -sSfk https://localhost:2113/-/liveness || exit 1"] interval: 5s timeout: 3s retries: 30 - start_period: 60s + start_period: 30s diff --git a/docker-compose.yml b/docker-compose.yml index 0352f6c..91ae5fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,7 @@ name: tests services: single-insecure: container_name: single-insecure - image: ${KURRENTDB_DOCKER_REGISTRY:-kurrentplatform}/${KURRENTDB_DOCKER_IMAGE:-kurrentdb}:${KURRENTDB_DOCKER_TAG:-lts} + image: ${TROGON_EVENTSTORE_SERVER_IMAGE:-ghcr.io/trogonstack/trogoneventstore:ci} ports: - "2114:2113" environment: @@ -11,11 +11,11 @@ services: single-secure: container_name: single-secure - image: ${KURRENTDB_DOCKER_REGISTRY:-kurrentplatform}/${KURRENTDB_DOCKER_IMAGE:-kurrentdb}:${KURRENTDB_DOCKER_TAG:-lts} + image: ${TROGON_EVENTSTORE_SERVER_IMAGE:-ghcr.io/trogonstack/trogoneventstore:ci} environment: - EVENTSTORE_CERTIFICATE_FILE: "/etc/kurrentdb/certs/node1/node.crt" - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE: "/etc/kurrentdb/certs/node1/node.key" - EVENTSTORE_TRUSTED_ROOT_CERTIFICATES_PATH: "/etc/kurrentdb/certs/ca" + EVENTSTORE_CERTIFICATE_FILE: "/etc/eventstore/certs/node1/node.crt" + EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE: "/etc/eventstore/certs/node1/node.key" + EVENTSTORE_TRUSTED_ROOT_CERTIFICATES_PATH: "/etc/eventstore/certs/ca" EVENTSTORE_ADVERTISE_HOST_TO_CLIENT_AS: "localhost" EVENTSTORE_ADVERTISE_NODE_PORT_TO_CLIENT_AS: "2115" EVENTSTORE_RUN_PROJECTIONS: "All" @@ -24,18 +24,18 @@ services: ports: - "2115:2113" volumes: - - ./certs:/etc/kurrentdb/certs + - ./certs:/etc/eventstore/certs cluster-node-1: &template container_name: cluster-node-1 - image: ${KURRENTDB_DOCKER_REGISTRY:-kurrentplatform}/${KURRENTDB_DOCKER_IMAGE:-kurrentdb}:${KURRENTDB_DOCKER_TAG:-lts} + image: ${TROGON_EVENTSTORE_SERVER_IMAGE:-ghcr.io/trogonstack/trogoneventstore:ci} env_file: - shared.env environment: - EVENTSTORE_GOSSIP_SEED=172.30.240.12:2113,172.30.240.13:2113 - EVENTSTORE_REPLICATION_IP=172.30.240.11 - - EVENTSTORE_CERTIFICATE_FILE=/etc/kurrentdb/certs/node1/node.crt - - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/etc/kurrentdb/certs/node1/node.key + - EVENTSTORE_CERTIFICATE_FILE=/etc/eventstore/certs/node1/node.crt + - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/etc/eventstore/certs/node1/node.key - EVENTSTORE_ADVERTISE_NODE_PORT_TO_CLIENT_AS=2111 ports: - 2111:2113 @@ -43,7 +43,7 @@ services: clusternetwork: ipv4_address: 172.30.240.11 volumes: - - ./certs:/etc/kurrentdb/certs + - ./certs:/etc/eventstore/certs restart: unless-stopped cluster-node-2: @@ -52,8 +52,8 @@ services: environment: - EVENTSTORE_GOSSIP_SEED=172.30.240.11:2113,172.30.240.13:2113 - EVENTSTORE_REPLICATION_IP=172.30.240.12 - - EVENTSTORE_CERTIFICATE_FILE=/etc/kurrentdb/certs/node2/node.crt - - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/etc/kurrentdb/certs/node2/node.key + - EVENTSTORE_CERTIFICATE_FILE=/etc/eventstore/certs/node2/node.crt + - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/etc/eventstore/certs/node2/node.key - EVENTSTORE_ADVERTISE_NODE_PORT_TO_CLIENT_AS=2112 ports: - 2112:2113 @@ -67,8 +67,8 @@ services: environment: - EVENTSTORE_GOSSIP_SEED=172.30.240.11:2113,172.30.240.12:2113 - EVENTSTORE_REPLICATION_IP=172.30.240.13 - - EVENTSTORE_CERTIFICATE_FILE=/etc/kurrentdb/certs/node3/node.crt - - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/etc/kurrentdb/certs/node3/node.key + - EVENTSTORE_CERTIFICATE_FILE=/etc/eventstore/certs/node3/node.crt + - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/etc/eventstore/certs/node3/node.key - EVENTSTORE_ADVERTISE_NODE_PORT_TO_CLIENT_AS=2113 ports: - 2113:2113 @@ -78,7 +78,7 @@ services: networks: clusternetwork: - name: kurrentdb.local + name: trogoneventstore-go-client driver: bridge ipam: driver: default diff --git a/docs/.vuepress/configs/theme.ts b/docs/.vuepress/configs/theme.ts index 41aefcd..a86adcb 100644 --- a/docs/.vuepress/configs/theme.ts +++ b/docs/.vuepress/configs/theme.ts @@ -1,13 +1,13 @@ import type {ThemeOptions} from "vuepress-theme-hope"; export const themeOptions: ThemeOptions = { - logo: "/Kurrent Logo - Plum.svg", - logoDark: "/Kurrent Logo - White.svg", + logo: "/TrogonStack Logo - Plum.svg", + logoDark: "/TrogonStack Logo - White.svg", docsDir: 'docs', editLink: false, lastUpdated: true, toc: true, - repo: "https://github.com/kurrent-io", + repo: "https://github.com/TrogonStack", repoLabel: "GitHub", repoDisplay: true, contributors: false, diff --git a/docs/.vuepress/public/js/snippet.js b/docs/.vuepress/public/js/snippet.js deleted file mode 100644 index 14064ad..0000000 --- a/docs/.vuepress/public/js/snippet.js +++ /dev/null @@ -1,86 +0,0 @@ -!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys getNextSurveyStep".split(" "),n=0;n -1) { - var c = document.querySelector("link[rel='canonical']"); - args.push({ - __t: "bpc", - c: c && c.getAttribute("href") || undefined, - p: location.pathname, - u: location.href, - s: location.search, - t: document.title, - r: document.referrer - }); - } - - args.unshift(e); - analytics.push(args); - return analytics; - }; - }; - - for (var i = 0; i < analytics.methods.length; i++) { - var key = analytics.methods[i]; - analytics[key] = analytics.factory(key); - } - - analytics.load = function (key, options) { - var t = document.createElement("script"); - t.type = "text/javascript"; - t.async = true; - t.setAttribute("data-global-segment-analytics-key", globalAnalyticsKey) - t.src = "https://cloud.kurrent.io/segment/ajs/REDACTED"; - - var first = document.getElementsByTagName("script")[0]; - first.parentNode.insertBefore(t, first); - analytics._loadOptions = options; - }; - analytics._writeKey = "REDACTED"; - analytics.SNIPPET_VERSION = "5.2.1"; - analytics.load("REDACTED"); -})(); diff --git a/docs/.vuepress/public/robots.txt b/docs/.vuepress/public/robots.txt deleted file mode 100644 index dbe84f0..0000000 --- a/docs/.vuepress/public/robots.txt +++ /dev/null @@ -1,15 +0,0 @@ -User-agent: * - -Disallow: /.algolia/ -Disallow: /.github/ -Disallow: /.vscode/ -Disallow: /import/ -Disallow: /.gitattributes -Disallow: /.gitignore -Disallow: /.node-version -Disallow: /codeql-analysis.yml -Disallow: /package.json -Disallow: /serve.js -Disallow: /yarn.lock - -Sitemap: https://docs.kurrent.io/sitemap.xml diff --git a/docs/api/appending-events.md b/docs/api/appending-events.md index 3a2e6cd..ca058ee 100644 --- a/docs/api/appending-events.md +++ b/docs/api/appending-events.md @@ -4,7 +4,7 @@ order: 2 # Appending events -When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using this API. +When you start working with TrogonEventStore, your application streams are empty. The first meaningful operation is to add one or more events to the database using this API. ::: tip Check the [Getting Started](getting-started.md) guide to learn how to configure and use the client SDK. @@ -12,7 +12,7 @@ Check the [Getting Started](getting-started.md) guide to learn how to configure ## Append your first event -The simplest way to append an event to KurrentDB is to create an `EventData` object and call `AppendToStream` method. +The simplest way to append an event to TrogonEventStore is to create an `EventData` object and call `AppendToStream` method. ```go{20-24} type OrderPlaced struct { @@ -30,12 +30,12 @@ if err != nil { panic(err) } -options := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, +options := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, } -result, err := db.AppendToStream(context.Background(), "orders-123", options, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, +result, err := db.AppendToStream(context.Background(), "orders-123", options, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "OrderPlaced", Data: bytes, }) @@ -51,23 +51,23 @@ If you are new to Event Sourcing, please study the [Handling concurrency](#handl ## Working with EventData -Events appended to KurrentDB must be wrapped in an `EventData` object. This allows you to specify the event's content, the type of event, and whether it's in JSON format. In its simplest form, you need three arguments: **eventId**, **eventType**, and **eventData**. +Events appended to TrogonEventStore must be wrapped in an `EventData` object. This allows you to specify the event's content, the type of event, and whether it's in JSON format. In its simplest form, you need three arguments: **eventId**, **eventType**, and **eventData**. ### EventID -This takes the format of a `UUID` and is used to uniquely identify the event you are trying to append. If two events with the same `UUID` are appended to the same stream in quick succession, KurrentDB will only append one of the events to the stream. +This takes the format of a `UUID` and is used to uniquely identify the event you are trying to append. If two events with the same `UUID` are appended to the same stream in quick succession, TrogonEventStore will only append one of the events to the stream. For example, the following code will only append a single event: ```go{7-12} -_, err = db.AppendToStream(context.Background(), "orders-456", kurrentdb.AppendToStreamOptions{}, event) +_, err = db.AppendToStream(context.Background(), "orders-456", trogoneventstore.AppendToStreamOptions{}, event) if err != nil { panic(err) } // attempt to append the same event again -_, err = db.AppendToStream(context.Background(), "orders-456", kurrentdb.AppendToStreamOptions{}, event) +_, err = db.AppendToStream(context.Background(), "orders-456", trogoneventstore.AppendToStreamOptions{}, event) if err != nil { panic(err) @@ -82,19 +82,19 @@ It is common to see the explicit event code type name used as the type as it mak ### Data -Representation of your event data. It is recommended that you store your events as JSON objects. This allows you to take advantage of all of KurrentDB's functionality, such as projections. That said, you can save events using whatever format suits your workflow. Eventually, the data will be stored as encoded bytes. +Representation of your event data. It is recommended that you store your events as JSON objects. This allows you to take advantage of all of TrogonEventStore's functionality, such as projections. That said, you can save events using whatever format suits your workflow. Eventually, the data will be stored as encoded bytes. ### Metadata -Storing additional information alongside your event that is part of the event itself is standard practice. This can be correlation IDs, timestamps, access information, etc. KurrentDB allows you to store a separate byte array containing this information to keep it separate. +Storing additional information alongside your event that is part of the event itself is standard practice. This can be correlation IDs, timestamps, access information, etc. TrogonEventStore allows you to store a separate byte array containing this information to keep it separate. ### ContentType -The content type indicates whether the event is stored as JSON or binary format. You can choose between `kurrentdb.ContentTypeJson` and `kurrentdb.ContentTypeBinary` when creating your `EventData` object. +The content type indicates whether the event is stored as JSON or binary format. You can choose between `trogoneventstore.ContentTypeJson` and `trogoneventstore.ContentTypeBinary` when creating your `EventData` object. ## Handling concurrency -When appending events to a stream, you can supply a *stream state*. Your client uses this to inform KurrentDB of the state or version you expect the stream to be in when appending an event. If the stream isn't in that state, an exception will be thrown. +When appending events to a stream, you can supply a *stream state*. Your client uses this to inform TrogonEventStore of the state or version you expect the stream to be in when appending an event. If the stream isn't in that state, an exception will be thrown. For example, if you try to append the same record twice, expecting both times that the stream doesn't exist, you will get an exception on the second: @@ -109,12 +109,12 @@ if err != nil { panic(err) } -options := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, +options := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, } -_, err = db.AppendToStream(context.Background(), "order-123", options, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, +_, err = db.AppendToStream(context.Background(), "order-123", options, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "OrderPlaced", Data: bytes, }) @@ -133,27 +133,27 @@ if err != nil { } // attempt to append the same event again -_, err = db.AppendToStream(context.Background(), "order-123", options, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, +_, err = db.AppendToStream(context.Background(), "order-123", options, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "OrderPlaced", Data: bytes, }) ``` There are several available expected revision options: -- `kurrentdb.Any` - No concurrency check -- `kurrentdb.NoStream{}` - Stream should not exist -- `kurrentdb.StreamExists{}` - Stream should exist -- `kurrentdb.StreamRevision{}` - Stream should be at specific revision +- `trogoneventstore.Any` - No concurrency check +- `trogoneventstore.NoStream{}` - Stream should not exist +- `trogoneventstore.StreamExists{}` - Stream should exist +- `trogoneventstore.StreamRevision{}` - Stream should be at specific revision This check can be used to implement optimistic concurrency. When retrieving a -stream from KurrentDB, note the current version number. When you save it back, +stream from TrogonEventStore, note the current version number. When you save it back, you can determine if somebody else has modified the record in the meantime. ```go{6,32,35-39,50-54} -ropts := kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, +ropts := trogoneventstore.ReadStreamOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, } stream, err := db.ReadStream(context.Background(), "orders-123", ropts, 1) @@ -181,12 +181,12 @@ if err != nil { panic(err) } -aopts := kurrentdb.AppendToStreamOptions{ +aopts := trogoneventstore.AppendToStreamOptions{ StreamState: lastEvent.OriginalStreamRevision(), } -_, err = db.AppendToStream(context.Background(), "orders-123", aopts, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, +_, err = db.AppendToStream(context.Background(), "orders-123", aopts, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "OrderPlaced", Data: bytes, }) @@ -200,8 +200,8 @@ if err != nil { panic(err) } -_, err = db.AppendToStream(context.Background(), "orders-123", aopts, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, +_, err = db.AppendToStream(context.Background(), "orders-123", aopts, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "OrderPlaced", Data: bytes, }) @@ -215,8 +215,8 @@ You can provide user credentials to append the data as follows. This will overri result, err := db.AppendToStream( context.Background(), "orders", - kurrentdb.AppendToStreamOptions{ - Authenticated: &kurrentdb.Credentials{ + trogoneventstore.AppendToStreamOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit" } @@ -224,198 +224,3 @@ result, err := db.AppendToStream( event ) ``` - -## Atomic appends - -KurrentDB provides two operations for appending events to one or more streams in a single atomic transaction: `AppendRecords` and `MultiStreamAppend`. Both guarantee that either all writes succeed or the entire operation fails, but they differ in how records are organized, ordered, and validated. - -| | `AppendRecords` | `MultiStreamAppend` | -|------------------------|-----------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------| -| **Available since** | KurrentDB 26.1 | KurrentDB 25.1 | -| **Record ordering** | Interleaved. Records from different streams can be mixed, and their exact order is preserved in the global log. | Grouped. All records for a stream are sent together; ordering across streams is not guaranteed. | -| **Consistency checks** | Decoupled. Can validate the state of any stream, including streams not being written to. | Coupled. Expected state is specified per stream being written to. | -| **Protocol** | Unary RPC. All records and checks sent in a single request. | Client-streaming RPC. Records are streamed per stream. | - -::: warning -Metadata must be a valid JSON object, using string keys and string values only. -Binary metadata is not supported in this version to maintain compatibility with -KurrentDB's metadata handling. This restriction will be lifted in the next major -release. -::: - -### AppendRecords - -::: note -This feature is only available in KurrentDB 26.1 and later. -::: - -`AppendRecords` appends events to one or more streams atomically. Each record specifies which stream it targets, and the exact order of records is preserved in the global log across all streams. - -#### Single stream - -The simplest usage appends events to a single stream: - -```go -orderData, _ := json.Marshal(map[string]interface{}{ - "orderId": "123", -}) - -result, err := db.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - { - Stream: "order-123", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderPlaced", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, - { - Stream: "order-123", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderShipped", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, -}) -``` - -You can also pass a consistency check for optimistic concurrency: - -```go -result, err := db.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - { - Stream: "order-123", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderPlaced", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, -}, - kurrentdb.StreamStateCheck{Stream: "order-123", ExpectedState: kurrentdb.NoStream{}}, -) -``` - -#### Multiple streams - -Use `AppendRecord` to target different streams. Records can be interleaved freely, and the global log preserves the exact order you specify: - -```go -orderData, _ := json.Marshal(map[string]interface{}{"orderId": "123"}) -inventoryData, _ := json.Marshal(map[string]interface{}{"itemId": "abc", "quantity": 2}) - -result, err := db.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - { - Stream: "order-stream", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderCreated", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, - { - Stream: "inventory-stream", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "ItemReserved", - ContentType: kurrentdb.ContentTypeJson, - Data: inventoryData, - }, - }, - { - Stream: "order-stream", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderConfirmed", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, -}) -``` - -#### Consistency checks - -Consistency checks let you validate the state of any stream, including streams you are not writing to, before the append is committed. All checks are evaluated atomically: if any check fails, the entire operation is rejected and an `AppendConsistencyViolationError` is returned with details about every failing check and the actual state observed. - -```go -result, err := db.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - { - Stream: "order-stream", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderConfirmed", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, -}, - // ensure the inventory stream exists before confirming the order, - // even though we are not writing to it - kurrentdb.StreamStateCheck{Stream: "inventory-stream", ExpectedState: kurrentdb.StreamExists{}}, -) - -if err != nil { - var violationErr *kurrentdb.AppendConsistencyViolationError - if errors.As(err, &violationErr) { - for _, v := range violationErr.Violations { - log.Printf("Check %d violated on stream %s: expected %v, actual %v", - v.CheckIndex, v.Stream, v.ExpectedState, v.ActualState) - } - } -} -``` - -This decoupling of checks from writes enables [Dynamic Consistency Boundary](https://www.eventstore.com/blog/dynamic-consistency-boundary) patterns, where a business decision depends on the state of multiple streams but the resulting event is written to only one of them. - -### MultiStreamAppend - -::: note -This feature is only available in KurrentDB 25.1 and later. -::: - -`MultiStreamAppend` appends events to one or more streams atomically. Records are grouped per stream using `AppendStreamRequest`, where each request specifies a stream name, an expected state, and the events for that stream. - -```go -orderData, _ := json.Marshal(OrderCreated{OrderId: "12345", Amount: 99.99}) -paymentData, _ := json.Marshal(PaymentProcessed{PaymentId: "PAY-789", Amount: 99.99, Method: "credit_card"}) - -metadata := map[string]string{"source": "web-store"} -metadataBytes, _ := json.Marshal(metadata) - -requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: "order-stream-1", - Events: slices.Values([]kurrentdb.EventData{{ - EventID: uuid.New(), - EventType: "OrderCreated", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - Metadata: metadataBytes, - }}), - ExpectedStreamState: kurrentdb.Any{}, - }, - { - StreamName: "payment-stream-1", - Events: slices.Values([]kurrentdb.EventData{{ - EventID: uuid.New(), - EventType: "PaymentProcessed", - ContentType: kurrentdb.ContentTypeJson, - Data: paymentData, - Metadata: metadataBytes, - }}), - ExpectedStreamState: kurrentdb.Any{}, - }, -} - -result, err := db.MultiStreamAppend(context.Background(), slices.Values(requests)) -``` - -Each stream can only appear once in the request. The expected state is validated per stream before the transaction is committed. - -The result returns the position of the last appended record in the transaction and a collection of responses for each stream. diff --git a/docs/api/authentication.md b/docs/api/authentication.md index 3752581..4b1a120 100644 --- a/docs/api/authentication.md +++ b/docs/api/authentication.md @@ -11,7 +11,7 @@ X.509 certificates are digital certificates that use the X.509 public key infras ## Prerequisites -1. KurrentDB 25.0 or greater, or EventStoreDB 24.10 or later. +1. A TrogonEventStore deployment with OAuth support enabled. 2. A valid X.509 certificate configured on the Database. See [configuration steps](@server/security/user-authentication.html#user-x-509-certificates) for more details. ## Connect using an x.509 certificate @@ -32,11 +32,11 @@ The client supports the following parameters: To authenticate, include these two parameters in your connection string or constructor when initializing the client: ```go -settings, err := kurrentdb.ParseConnectionString("kurrentdb://admin:changeit@{endpoint}?tls=true&userCertFile={pathToCaFile}&userKeyFile={pathToKeyFile}") +settings, err := trogoneventstore.ParseConnectionString("esdb://admin:changeit@{endpoint}?tls=true&userCertFile={pathToCaFile}&userKeyFile={pathToKeyFile}") if err != nil { panic(err) } -db, err := kurrentdb.NewClient(settings) -``` \ No newline at end of file +db, err := trogoneventstore.NewClient(settings) +``` diff --git a/docs/api/delete-stream.md b/docs/api/delete-stream.md index 68db988..096cdfb 100644 --- a/docs/api/delete-stream.md +++ b/docs/api/delete-stream.md @@ -4,15 +4,15 @@ order: 9 # Deleting Events -In KurrentDB, you can delete events and streams either partially or +In TrogonEventStore, you can delete events and streams either partially or completely. Settings like $maxAge and $maxCount help control how long events are kept or how many events are stored in a stream, but they won't delete the entire -stream. When you need to fully remove a stream, KurrentDB offers two +stream. When you need to fully remove a stream, TrogonEventStore offers two options: Soft Delete and Hard Delete. ## Soft delete -Soft delete in KurrentDB allows you to mark a stream for deletion without +Soft delete in TrogonEventStore allows you to mark a stream for deletion without completely removing it, so you can still add new events later. While you can do this through the UI, using code is often better for automating the process, handling many streams at once, or including custom rules. Code is especially @@ -20,8 +20,8 @@ helpful for large-scale deletions or when you need to integrate soft deletes into other workflows. ```go -options := kurrentdb.DeleteStreamOptions{ - StreamState: kurrentdb.Any{}, +options := trogoneventstore.DeleteStreamOptions{ + StreamState: trogoneventstore.Any{}, } _, err = client.DeleteStream(context.Background(), streamName, options) ``` @@ -35,7 +35,7 @@ process. The stream can still be reopened by appending new events. ## Hard delete -Hard delete in KurrentDB permanently removes a stream and its events. While +Hard delete in TrogonEventStore permanently removes a stream and its events. While you can use the HTTP API, code is often better for automating the process, managing multiple streams, and ensuring precise control. Code is especially useful when you need to integrate hard delete into larger workflows or apply @@ -43,8 +43,8 @@ specific conditions. Note that when a stream is hard deleted, you cannot reuse the stream name, it will raise an exception if you try to append to it again. ```go -options := kurrentdb.TombstoneStreamOptions{ - StreamState: kurrentdb.Any{}, +options := trogoneventstore.TombstoneStreamOptions{ + StreamState: trogoneventstore.Any{}, } _, err = client.TombstoneStream(context.Background(), streamName, options) ``` \ No newline at end of file diff --git a/docs/api/getting-started.md b/docs/api/getting-started.md index 94beffc..ad1729e 100644 --- a/docs/api/getting-started.md +++ b/docs/api/getting-started.md @@ -4,8 +4,8 @@ order: 1 # Getting started -This guide will help you get started with KurrentDB in your Go application. -It covers the basic steps to connect to KurrentDB, create events, append them +This guide will help you get started with TrogonEventStore in your Go application. +It covers the basic steps to connect to TrogonEventStore, create events, append them to streams, and read them back. ## Required packages @@ -13,37 +13,37 @@ to streams, and read them back. Add the following dependencies to your `go.mod` file: ```bash -go get http://github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb +go get github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore ``` -## Connecting to KurrentDB +## Connecting to TrogonEventStore -To connect your application to KurrentDB, you need to configure and create a client instance. +To connect your application to TrogonEventStore, you need to configure and create a client instance. ::: tip Insecure clusters -The recommended way to connect to KurrentDB is using secure mode (which is -the default). However, if your KurrentDB instance is running in insecure +The recommended way to connect to TrogonEventStore is using secure mode (which is +the default). However, if your TrogonEventStore instance is running in insecure mode, you must explicitly set `tls=false` in your connection string or client configuration. ::: -KurrentDB uses connection strings to configure the client connection. The connection string supports two protocols: +TrogonEventStore uses connection strings to configure the client connection. The connection string supports two protocols: -- **`kurrentdb://`** - for connecting directly to specific node endpoints (single node or multi-node cluster with explicit endpoints) -- **`kurrentdb+discover://`** - for connecting using cluster discovery via DNS or gossip endpoints +- **`esdb://`** - for connecting directly to specific node endpoints (single node or multi-node cluster with explicit endpoints) +- **`trogoneventstore+discover://`** - for connecting using cluster discovery via DNS or gossip endpoints -When using `kurrentdb://`, you specify the exact endpoints to connect to. The client will connect directly to these endpoints. For multi-node clusters, you can specify multiple endpoints separated by commas, and the client will query each node's Gossip API to get cluster information, then picks a node based on the URI's node preference. +When using `esdb://`, you specify the exact endpoints to connect to. The client will connect directly to these endpoints. For multi-node clusters, you can specify multiple endpoints separated by commas, and the client will query each node's Gossip API to get cluster information, then picks a node based on the URI's node preference. -With `kurrentdb+discover://`, the client uses cluster discovery to find available nodes. This is particularly useful when you have a DNS A record pointing to cluster nodes or when you want the client to automatically discover the cluster topology. +With `trogoneventstore+discover://`, the client uses cluster discovery to find available nodes. This is particularly useful when you have a DNS A record pointing to cluster nodes or when you want the client to automatically discover the cluster topology. ::: info Gossip support -Since version 22.10, kurrentdb supports gossip on single-node deployments, so -`kurrentdb+discover://` can be used for any topology, including single-node setups. +Since version 22.10, trogoneventstore supports gossip on single-node deployments, so +`trogoneventstore+discover://` can be used for any topology, including single-node setups. ::: For cluster connections using discovery, use the following format: ``` -kurrentdb+discover://admin:changeit@cluster.dns.name:2113 +trogoneventstore+discover://admin:changeit@cluster.dns.name:2113 ``` Where `cluster.dns.name` is a DNS `A` record that points to all cluster nodes. @@ -51,13 +51,13 @@ Where `cluster.dns.name` is a DNS `A` record that points to all cluster nodes. For direct connections to specific endpoints, you can specify individual nodes: ``` -kurrentdb://admin:changeit@node1.dns.name:2113,node2.dns.name:2113,node3.dns.name:2113 +esdb://admin:changeit@node1.dns.name:2113,node2.dns.name:2113,node3.dns.name:2113 ``` Or for a single node: ``` -kurrentdb://admin:changeit@localhost:2113 +esdb://admin:changeit@localhost:2113 ``` There are a number of query parameters that can be used in the connection string to instruct the cluster how and where the connection should be established. All query parameters are optional. @@ -78,27 +78,27 @@ There are a number of query parameters that can be used in the connection string | `userCertFile` | String, file path | None | User certificate file for X.509 authentication. | | `userKeyFile` | String, file path | None | Key file for the user certificate used for X.509 authentication. | -When connecting to an insecure instance, specify `tls=false` parameter. For example, for a node running locally use `kurrentdb://localhost:2113?tls=false`. Note that usernames and passwords aren't provided there because insecure deployments don't support authentication and authorisation. +When connecting to an insecure instance, specify `tls=false` parameter. For example, for a node running locally use `esdb://localhost:2113?tls=false`. Note that usernames and passwords aren't provided there because insecure deployments don't support authentication and authorisation. ## Creating a client First, create a client and get it connected to the database. ```go -settings, err := kurrentdb.ParseConnectionString("kurrentdb://localhost:2113?tls=false") +settings, err := trogoneventstore.ParseConnectionString("esdb://localhost:2113?tls=false") if err != nil { panic(err) } -db, err := kurrentdb.NewClient(settings) +db, err := trogoneventstore.NewClient(settings) ``` The client instance can be used as a singleton across the whole application. It doesn't need to open or close the connection. ## Creating an event -You can write anything to KurrentDB as events. The client needs a byte array as the event payload. Normally, you'd use a serialized object, and it's up to you to choose the serialization method. +You can write anything to TrogonEventStore as events. The client needs a byte array as the event payload. Normally, you'd use a serialized object, and it's up to you to choose the serialization method. The code snippet below creates an event object instance, serializes it, and adds it as a payload to the `EventData` structure, which the client can then write to the database. @@ -134,8 +134,8 @@ if err != nil { panic(err) } -eventData := kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, +eventData := trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "OrderCreated", Data: data, } @@ -148,7 +148,7 @@ Each event in the database has its own unique identifier (UUID). The database us In the snippet below, we append the event to the stream `orders`. ```go -_, err = db.AppendToStream(context.Background(), "orders", kurrentdb.AppendToStreamOptions{}, eventData) +_, err = db.AppendToStream(context.Background(), "orders", trogoneventstore.AppendToStreamOptions{}, eventData) ``` Here we are appending events without checking if the stream exists or if the stream version matches the expected event version. See more advanced scenarios in [appending events documentation](./appending-events.md). @@ -158,7 +158,7 @@ Here we are appending events without checking if the stream exists or if the str Finally, we can read events back from the `orders` stream. ```go -stream, err := db.ReadStream(context.Background(), "orders", kurrentdb.ReadStreamOptions{}, 10) +stream, err := db.ReadStream(context.Background(), "orders", trogoneventstore.ReadStreamOptions{}, 10) if err != nil { panic(err) @@ -180,4 +180,4 @@ for { // Process the order event fmt.Printf("Order event: %s - %s\n", event.Event.EventType, string(event.Event.Data)) } -``` \ No newline at end of file +``` diff --git a/docs/api/persistent-subscriptions.md b/docs/api/persistent-subscriptions.md index d490786..6610335 100644 --- a/docs/api/persistent-subscriptions.md +++ b/docs/api/persistent-subscriptions.md @@ -34,7 +34,7 @@ stream, which includes all events. ### Subscribing to a Specific Stream ```go -err := client.CreatePersistentSubscription(context.Background(), "order-123", "subscription-group", kurrentdb.PersistentStreamSubscriptionOptions{}) +err := client.CreatePersistentSubscription(context.Background(), "order-123", "subscription-group", trogoneventstore.PersistentStreamSubscriptionOptions{}) if err != nil { panic(err) @@ -44,9 +44,9 @@ if err != nil { ### Subscribing to `$all` ```go -options := kurrentdb.PersistentAllSubscriptionOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, +options := trogoneventstore.PersistentAllSubscriptionOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Prefixes: []string{"test"}, }, } @@ -59,7 +59,7 @@ if err != nil { ``` ::: note -As from EventStoreDB 21.10, the ability to subscribe to `$all` supports +Subscriptions to `$all` support [server-side filtering](subscriptions.md#server-side-filtering). You can create a subscription group for `$all` similarly to how you would for a specific stream: @@ -83,7 +83,7 @@ speed of your processing. The code below shows how to connect to an existing subscription group for a specific stream: ```go -sub, err := client.SubscribeToPersistentSubscription(context.Background(), "order-123", "subscription-group", kurrentdb.SubscribeToPersistentSubscriptionOptions{}) +sub, err := client.SubscribeToPersistentSubscription(context.Background(), "order-123", "subscription-group", trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -107,7 +107,7 @@ for { The code below shows how to connect to an existing subscription group for `$all`: ```go -sub, err := client.SubscribeToPersistentSubscriptionToAll(context.Background(), "subscription-group", kurrentdb.SubscribeToPersistentSubscriptionOptions{}) +sub, err := client.SubscribeToPersistentSubscriptionToAll(context.Background(), "subscription-group", trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -138,7 +138,7 @@ reason, then you can Nack (not acknowledge) the message and tell the server how to handle the failure. ```go{11} -sub, err := client.SubscribeToPersistentSubscription(context.Background(), "order-123", "subscription-group", kurrentdb.SubscribeToPersistentSubscriptionOptions{}) +sub, err := client.SubscribeToPersistentSubscription(context.Background(), "order-123", "subscription-group", trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -193,7 +193,7 @@ resources. For use with an indexing projection such as the system `$by_category` projection. -KurrentDB inspects the event for its source stream id, hashing the id to one +TrogonEventStore inspects the event for its source stream id, hashing the id to one of 1024 buckets assigned to individual clients. When a client disconnects, its buckets are assigned to other clients. When a client connects, it is assigned some existing buckets. This naively attempts to maintain a balanced workload. diff --git a/docs/api/projections.md b/docs/api/projections.md index 18b14b5..11558a5 100644 --- a/docs/api/projections.md +++ b/docs/api/projections.md @@ -5,20 +5,20 @@ title: Projections # Projection management -The client provides a way to manage projections in KurrentDB. +The client provides a way to manage projections in TrogonEventStore. For a detailed explanation of projections, see the [server documentation](@server/features/projections/README.md). ## Create a client ```go -conf, err := kurrentdb.ParseConnectionString(connectionString) +conf, err := trogoneventstore.ParseConnectionString(connectionString) if err != nil { panic(err) } -client, err := kurrentdb.NewProjectionClient(conf) +client, err := trogoneventstore.NewProjectionClient(conf) ``` ## Create a projection @@ -46,7 +46,22 @@ fromAll() ` name := fmt.Sprintf("countEvent_Create_%s", uuid.New()) -err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{}) +err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{}) + +if err != nil { + panic(err) +} +``` + +Caller-supplied annotations can be attached to a projection definition: + +```go +err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{ + Annotations: map[string]string{ + "deployment": "blue", + "owner": "inventory", + }, +}) if err != nil { panic(err) @@ -56,10 +71,10 @@ if err != nil { Trying to create projections with the same name will result in an error: ```go -err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{}) +err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{}) -if esdbErr, ok := kurrentdb.FromError(err); !ok { - if esdbErr.IsErrorCode(kurrentdb.ErrorCodeUnknown) && strings.Contains(esdbErr.Err().Error(), "Conflict") { +if esdbErr, ok := trogoneventstore.FromError(err); !ok { + if esdbErr.IsErrorCode(trogoneventstore.ErrorCodeUnknown) && strings.Contains(esdbErr.Err().Error(), "Conflict") { log.Printf("projection %s already exists", name) return } @@ -71,7 +86,7 @@ if esdbErr, ok := kurrentdb.FromError(err); !ok { It is possible to restart the entire projection subsystem using the projections management client API. The user must be in the `$ops` or `$admin` group to perform this operation. ```go -err := client.RestartSubsystem(context.Background(), kurrentdb.GenericProjectionOptions{}) +err := client.RestartSubsystem(context.Background(), trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -85,7 +100,7 @@ start to process events even after restarting the server or the projection subsystem. You must have access to a projection to enable it, see the [ACL documentation](@server/security/user-authorization.md). ```go -err := client.Enable(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) +err := client.Enable(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -95,10 +110,10 @@ if err != nil { You can only enable an existing projection. When you try to enable a non-existing projection, you'll get an error: ```go -err := client.Enable(context.Background(), "projection that doesn't exist", kurrentdb.GenericProjectionOptions{}) +err := client.Enable(context.Background(), "projection that doesn't exist", trogoneventstore.GenericProjectionOptions{}) -if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { +if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -112,7 +127,7 @@ Once disabled, the projection will not process events even after restarting the You must have access to a projection to disable it, see the [ACL documentation](@server/security/user-authorization.md). ```go -err := client.Disable(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) +err := client.Disable(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -122,10 +137,10 @@ if err != nil { You can only disable an existing projection. When you try to disable a non-existing projection, you'll get an error: ```go -err := client.Disable(context.Background(), "projection that doesn't exist", kurrentdb.GenericProjectionOptions{}) +err := client.Disable(context.Background(), "projection that doesn't exist", trogoneventstore.GenericProjectionOptions{}) -if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { +if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -135,7 +150,7 @@ if esdbError, ok := kurrentdb.FromError(err); !ok { ## Delete a projection ```go -err := client.Delete(context.Background(), "$by_category", kurrentdb.DeleteProjectionOptions{}) +err := client.Delete(context.Background(), "$by_category", trogoneventstore.DeleteProjectionOptions{}) if err != nil { panic(err) @@ -147,7 +162,7 @@ if err != nil { Aborts a projection, this will not save the projection's checkpoint. ```go -err := client.Abort(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) +err := client.Abort(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -157,10 +172,10 @@ if err != nil { You can only abort an existing projection. When you try to abort a non-existing projection, you'll get an error: ```go -err := client.Abort(context.Background(), "projection that doesn't exist", kurrentdb.GenericProjectionOptions{}) +err := client.Abort(context.Background(), "projection that doesn't exist", trogoneventstore.GenericProjectionOptions{}) -if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { +if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -172,7 +187,7 @@ if esdbError, ok := kurrentdb.FromError(err); !ok { Resets a projection, which causes deleting the projection checkpoint. This will force the projection to start afresh and re-emit events. Streams that are written to from the projection will also be soft-deleted. ```go -err := client.Reset(context.Background(), "$by_category", kurrentdb.ResetProjectionOptions{}) +err := client.Reset(context.Background(), "$by_category", trogoneventstore.ResetProjectionOptions{}) if err != nil { panic(err) @@ -182,10 +197,10 @@ if err != nil { Resetting a projection that does not exist will result in an error. ```go -err := client.Reset(context.Background(), "projection that doesn't exist", kurrentdb.ResetProjectionOptions{}) +err := client.Reset(context.Background(), "projection that doesn't exist", trogoneventstore.ResetProjectionOptions{}) -if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { +if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -197,13 +212,13 @@ if esdbError, ok := kurrentdb.FromError(err); !ok { Updates a projection with a given name. The query parameter contains the new JavaScript. Updating system projections using this operation is not supported at the moment. ```go -err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{}) +err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{}) if err != nil { panic(err) } -err = client.Update(context.Background(), name, newScript, kurrentdb.UpdateProjectionOptions{}) +err = client.Update(context.Background(), name, newScript, trogoneventstore.UpdateProjectionOptions{}) if err != nil { panic(err) @@ -213,10 +228,10 @@ if err != nil { You can only update an existing projection. When you try to update a non-existing projection, you'll get an error: ```go -err := client.Update(context.Background(), "projection that doesn't exist", script, kurrentdb.UpdateProjectionOptions{}) +err := client.Update(context.Background(), "projection that doesn't exist", script, trogoneventstore.UpdateProjectionOptions{}) -if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { +if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -229,7 +244,7 @@ Returns a list of all projections, user defined & system projections. See the [projection details](#projection-details) section for an explanation of the returned values. ```go -projections, err := client.ListAll(context.Background(), kurrentdb.GenericProjectionOptions{}) +projections, err := client.ListAll(context.Background(), trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -255,7 +270,7 @@ Returns a list of all continuous projections. See the [projection details](#projection-details) section for an explanation of the returned values. ```go -projections, err := client.ListContinuous(context.Background(), kurrentdb.GenericProjectionOptions{}) +projections, err := client.ListContinuous(context.Background(), trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -281,7 +296,7 @@ Gets the status of a named projection. See the [projection details](#projection-details) section for an explanation of the returned values. ```go -projection, err := client.GetStatus(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) +projection, err := client.GetStatus(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -306,7 +321,7 @@ type Foobar struct { Count int64 } -value, err := client.GetState(context.Background(), projectionName, kurrentdb.GetStateProjectionOptions{}) +value, err := client.GetState(context.Background(), projectionName, trogoneventstore.GetStateProjectionOptions{}) if err != nil { panic(err) @@ -336,7 +351,7 @@ type Baz struct { Result int64 } -value, err := client.GetResult(context.Background(), projectionName, kurrentdb.GetResultProjectionOptions{}) +value, err := client.GetResult(context.Background(), projectionName, trogoneventstore.GetResultProjectionOptions{}) if err != nil { panic(err) diff --git a/docs/api/reading-events.md b/docs/api/reading-events.md index dfcf27a..c56abbf 100644 --- a/docs/api/reading-events.md +++ b/docs/api/reading-events.md @@ -4,16 +4,16 @@ order: 3 # Reading Events -KurrentDB provides two primary methods for reading events: reading from an +TrogonEventStore provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the `$all` stream to access all events across the entire event store. -Events in KurrentDB are organized within individual streams and use two +Events in TrogonEventStore are organized within individual streams and use two distinct positioning systems to track their location. The **revision number** is a 64-bit signed integer (`long`) that represents the sequential position of an event within its specific stream. Events are numbered starting from 0, with each new event receiving the next sequential revision number (0, 1, 2, 3...). The -**global position** represents the event's location in KurrentDB's global +**global position** represents the event's location in TrogonEventStore's global transaction log and consists of two coordinates: the `commit` position (where the transaction was committed in the log) and the `prepare` position (where the transaction was initially prepared). @@ -36,14 +36,14 @@ section below. The simplest way to read a stream forwards is to supply a stream name, read direction, and revision from which to start. The revision can be specified in several ways: -- Use `kurrentdb.Start{}` to begin from the very beginning of the stream -- Use `kurrentdb.End{}` to begin from the current end of the stream -- Use `kurrentdb.StreamRevision{}` with a specific revision number (64-bit signed integer) +- Use `trogoneventstore.Start{}` to begin from the very beginning of the stream +- Use `trogoneventstore.End{}` to begin from the current end of the stream +- Use `trogoneventstore.StreamRevision{}` with a specific revision number (64-bit signed integer) ```go{3} -options := kurrentdb.ReadStreamOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Forwards, +options := trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Forwards, } stream, err := db.ReadStream(context.Background(), "some-stream", options, 100) @@ -57,8 +57,8 @@ defer stream.Close() You can also start reading from a specific revision in the stream: ```go{2} -options:= kurrentdb.ReadStreamOptions{ - From: kurrentdb.Revision(10), +options:= trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Revision(10), } ``` @@ -92,17 +92,17 @@ In the example below, we read a maximum of 10 events from the stream: stream, err := db.ReadStream( context.Background(), "order-123", - kurrentdb.ReadStreamOptions{}, + trogoneventstore.ReadStreamOptions{}, 10 ) ``` #### resolveLinkTos -When using projections to create new events you can set whether the generated events are pointers to existing events. Setting this value to true will tell KurrentDB to return the event as well as the event linking to it. +When using projections to create new events you can set whether the generated events are pointers to existing events. Setting this value to true will tell TrogonEventStore to return the event as well as the event linking to it. ```go -options:= kurrentdb.ReadAllOptions{ +options:= trogoneventstore.ReadAllOptions{ ResolveLinkTos: true, } ``` @@ -112,9 +112,9 @@ options:= kurrentdb.ReadAllOptions{ The credentials used to read the data can be used by the subscription as follows. This will override the default credentials set on the connection. ```go{3-6} -options := kurrentdb.ReadStreamOptions{ - From: kurrentdb.Start{}, - Authenticated: &kurrentdb.Credentials{ +options := trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Start{}, + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, @@ -126,9 +126,9 @@ options := kurrentdb.ReadStreamOptions{ In addition to reading a stream forwards, streams can be read backwards. To read all the events backwards, set the `fromRevision` to `END`: ```go{2-3} -options:= kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, +options:= trogoneventstore.ReadStreamOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, } stream, err := db.ReadStream(context.Background(), "some-stream", ropts, 10) @@ -147,7 +147,7 @@ It is important to handle this error when attempting to iterate a stream that ma For example: ```go{13-14} -stream, err := db.ReadStream(context.Background(), "order-123", kurrentdb.ReadStreamOptions{}, 100) +stream, err := db.ReadStream(context.Background(), "order-123", trogoneventstore.ReadStreamOptions{}, 100) if err != nil { panic(err) @@ -158,8 +158,8 @@ defer stream.Close() for { event, err := stream.Recv() - if err, ok := kurrentdb.FromError(err); !ok { - if err.Code() == kurrentdb.ErrorCodeResourceNotFound { + if err, ok := trogoneventstore.FromError(err); !ok { + if err.Code() == trogoneventstore.ErrorCodeResourceNotFound { fmt.Print("Stream not found") } else if errors.Is(err, io.EOF) { break @@ -187,9 +187,9 @@ transaction log position can be specified in several ways: - Use `fromPosition` with a specific `Position` object containing commit and prepare coordinates ```go{1-4} -options := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Forwards, +options := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Forwards, } stream, err := db.ReadAll(context.Background(), options, 100) @@ -198,9 +198,9 @@ stream, err := db.ReadAll(context.Background(), options, 100) You can also start reading from a specific position in the transaction log: ```go{3-6} -options := kurrentdb.ReadAllOptions{ +options := trogoneventstore.ReadAllOptions{ ResolveLinkTos: false, - From: &kurrentdb.Position{ + From: &trogoneventstore.Position{ Commit: 10, Prepare: 10, }, @@ -239,20 +239,20 @@ In the example below, we read a maximum of 10 events: stream, err := db.ReadStream( context.Background(), "order-123", - kurrentdb.ReadAllOptions{}, + trogoneventstore.ReadAllOptions{}, 10 ) ``` #### resolveLinkTos -When using projections to create new events you can set whether the generated events are pointers to existing events. Setting this value to true will tell KurrentDB to return the event as well as the event linking to it. +When using projections to create new events you can set whether the generated events are pointers to existing events. Setting this value to true will tell TrogonEventStore to return the event as well as the event linking to it. ```go{3} -options := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, +options := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, ResolveLinkTos: true, - Direction: kurrentdb.Forwards, + Direction: trogoneventstore.Forwards, } ``` @@ -260,9 +260,9 @@ options := kurrentdb.ReadAllOptions{ The credentials used to read the data can be used by the subscription as follows. This will override the default credentials set on the connection. ```go{3-6} -options := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Authenticated: &kurrentdb.Credentials{ +options := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, @@ -272,12 +272,12 @@ options := kurrentdb.ReadAllOptions{ ### Reading backwards In addition to reading the `$all` stream forwards, it can be read backwards. To -read all the events backwards, set the _direction_ to `kurrentdb.Backwards`: +read all the events backwards, set the _direction_ to `trogoneventstore.Backwards`: ```go{2-3} -options := kurrentdb.ReadAllOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, +options := trogoneventstore.ReadAllOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, } ``` @@ -287,12 +287,12 @@ Read one event backwards to find the last position in the `$all` stream. ### Handling system events -KurrentDB will also return system events when reading from the `$all` stream. In most cases you can ignore these events. +TrogonEventStore will also return system events when reading from the `$all` stream. In most cases you can ignore these events. All system events begin with `$` or `$$` and can be easily ignored by checking the `EventType` property. ```go{22-24} -stream, err := db.ReadAll(context.Background(), kurrentdb.ReadAllOptions{}, 100) +stream, err := db.ReadAll(context.Background(), trogoneventstore.ReadAllOptions{}, 100) if err != nil { panic(err) diff --git a/docs/api/subscriptions.md b/docs/api/subscriptions.md index 9a18736..ea08959 100644 --- a/docs/api/subscriptions.md +++ b/docs/api/subscriptions.md @@ -19,7 +19,7 @@ You can subscribe to a single stream or to `$all` to process all events in the d **Stream subscription:** ```go -stream, err := db.SubscribeToStream(context.Background(), "order-123", kurrentdb.SubscribeToStreamOptions{}) +stream, err := db.SubscribeToStream(context.Background(), "order-123", trogoneventstore.SubscribeToStreamOptions{}) if err != nil { panic(err) @@ -46,7 +46,7 @@ for { **`$all` subscription:** ```go -stream, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{}) +stream, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{}) if err != nil { panic(err) @@ -87,8 +87,8 @@ The positions provided to the subscriptions are exclusive. You will only receive To subscribe to a stream from a specific position, provide a stream position (`Start{}`, `End{}` or a 64-bit signed integer representing the revision number): ```go{2} -db.SubscribeToStream(context.Background(), "order-123", kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Revision(20), +db.SubscribeToStream(context.Background(), "order-123", trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Revision(20), }) ``` @@ -97,8 +97,8 @@ db.SubscribeToStream(context.Background(), "order-123", kurrentdb.SubscribeToStr For the `$all` stream, provide a `Position` structure with prepare and commit positions: ```go{2-5} -db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.Position{ +db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.Position{ Commit: 1_056, Prepare: 1_056, }, @@ -111,19 +111,19 @@ Subscribe to the end of a stream to get only new events: ```go // Stream -options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.End{}, +options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.End{}, } // $all -db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.End{}, +db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.End{}, }) ``` ## Resolving link-to events -Link-to events point to events in other streams in KurrentDB. These are +Link-to events point to events in other streams in TrogonEventStore. These are generally created by projections such as the `$by_event_type` projection which links events of the same event type into the same stream. This makes it easier to look up all events of a specific type. @@ -138,8 +138,8 @@ link-to events are not resolved. You can change this behaviour by setting the `resolveLinkTos` parameter to `true`: ```go{3} -options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, +options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, ResolveLinkTos: true, } @@ -169,8 +169,8 @@ need to store the current position of the subscription somewhere, and then use it to restore the subscription from the point where it dropped off: ```go{22-25} -options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, +options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, } for { @@ -192,7 +192,7 @@ for { if event.EventAppeared != nil { // handles the event... - options.From = kurrentdb.Revision(event.EventAppeared.OriginalEvent().EventNumber) + options.From = trogoneventstore.Revision(event.EventAppeared.OriginalEvent().EventNumber) } } } @@ -203,8 +203,8 @@ stream. As mentioned previously, the `$all` stream position consists of two big integers (prepare and commit positions), not one: ```go{21-24} -options = kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.Start{}, +options = trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.Start{}, } for { @@ -233,8 +233,8 @@ for { ## Handling Subscription State Changes -::: info KurrentDB 23.10.0+ -This feature requires KurrentDB version 23.10.0 or later. +::: info TrogonEventStore 23.10.0+ +This feature requires TrogonEventStore version 23.10.0 or later. ::: When a subscription processes historical events and reaches the end of the @@ -242,8 +242,8 @@ stream, it transitions from "catching up" to "live" mode. You can detect this transition using the `caughtUp` event on the subscription. ```go{22-25} -options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, +options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, } for { @@ -293,8 +293,8 @@ the client will use the credentials specified for the client, if you specified those. ```go{2-5} -db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Authenticated: &kurrentdb.Credentials{ +db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, @@ -303,7 +303,7 @@ db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ ## Server-side Filtering -KurrentDB allows you to filter events while subscribing to the `$all` stream to only receive the events you care about. You can filter by event type or stream name using a regular expression or a prefix. Server-side filtering is currently only available on the `$all` stream. +TrogonEventStore allows you to filter events while subscribing to the `$all` stream to only receive the events you care about. You can filter by event type or stream name using a regular expression or a prefix. Server-side filtering is currently only available on the `$all` stream. ::: tip Server-side filtering was introduced as a simpler alternative to projections. You should consider filtering before creating a projection to include the events you care about. @@ -312,9 +312,9 @@ Server-side filtering was introduced as a simpler alternative to projections. Yo **Basic filtering:** ```go -db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, +db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Prefixes: []string{"test-", "other-"}, }, }) @@ -325,8 +325,8 @@ db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ System events are prefixed with `$` and can be filtered out when subscribing to `$all`: ```go -sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: kurrentdb.ExcludeSystemEventsFilter(), +sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: trogoneventstore.ExcludeSystemEventsFilter(), }) ``` @@ -335,9 +335,9 @@ sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOpti **By prefix:** ```go -sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, +sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Prefixes: []string{"customer-"}, }, }) @@ -346,9 +346,9 @@ sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOpti **By regular expression:** ```go -sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, +sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Regex: "^user|^company", }, }) @@ -359,9 +359,9 @@ sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOpti **By prefix:** ```go -sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, +sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Prefixes: []string{"user-"}, }, }) @@ -370,9 +370,9 @@ sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOpti **By regular expression:** ```go -sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, +sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Regex: "^user|^company", }, }) @@ -392,7 +392,7 @@ A checkpoint is the position of an event in the `$all` stream to which your appl To create a checkpoint, store the event's commit or prepare position. ::: warning -If your database contains events created by the legacy TCP client using the [transaction feature](https://docs.kurrent.io/clients/tcp/dotnet/21.2/appending.html#transactions), you should store both the commit and prepare positions together as your checkpoint. +If your database contains events created by the legacy TCP client using the [transaction feature](legacy TCP client documentation#transactions), you should store both the commit and prepare positions together as your checkpoint. ::: ### Updating checkpoints at regular intervals @@ -428,9 +428,9 @@ By default, the checkpoint notification is sent after every 32 non-system events You can adjust the checkpoint interval to change how often the client is notified. ```go{6} -sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, +sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Regex: "/^[^\\$].*/", }, CheckpointInterval: 1, diff --git a/docs/package.json b/docs/package.json index 14f729c..286c97c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "type": "module", - "author": "Kurrent Inc", + "author": "Straw Hat, LLC", "devDependencies": { "@babel/cli": "^7.24.8", "@babel/core": "^7.24.9", diff --git a/go.mod b/go.mod index ea8c644..b7310f3 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/kurrent-io/KurrentDB-Client-Go +module github.com/TrogonStack/TrogonEventStore-Client-Go go 1.24.0 diff --git a/kurrentdb/append_records_options.go b/kurrentdb/append_records_options.go deleted file mode 100644 index 3df9093..0000000 --- a/kurrentdb/append_records_options.go +++ /dev/null @@ -1,47 +0,0 @@ -package kurrentdb - -import "time" - -// AppendRecord represents a record to be appended to a specific stream in an AppendRecords operation. -// Each record specifies its own target stream, allowing interleaved writes across multiple streams. -type AppendRecord struct { - // Stream is the name of the target stream for this record. - Stream string - // Record is the event data to append. - Record EventData -} - -// ConsistencyCheck represents a pre-commit condition that must hold true for the transaction to succeed. -// Checks are decoupled from writes: a check can reference any stream, whether or not the request writes to it. -type ConsistencyCheck interface { - isConsistencyCheck() -} - -// StreamStateCheck asserts a stream is at a specific revision or lifecycle state before commit. -type StreamStateCheck struct { - // Stream is the name of the stream to check. - Stream string - // ExpectedState is the expected state of the stream (revision number or state constant). - ExpectedState StreamState -} - -func (StreamStateCheck) isConsistencyCheck() {} - -// appendRecordsOptions is an internal options type used to satisfy the options interface for gRPC call configuration. -type appendRecordsOptions struct{} - -func (o *appendRecordsOptions) kind() operationKind { - return regularOperation -} - -func (o *appendRecordsOptions) credentials() *Credentials { - return nil -} - -func (o *appendRecordsOptions) deadline() *time.Duration { - return nil -} - -func (o *appendRecordsOptions) requiresLeader() bool { - return false -} diff --git a/kurrentdb/errors.go b/kurrentdb/errors.go deleted file mode 100644 index 39002df..0000000 --- a/kurrentdb/errors.go +++ /dev/null @@ -1,300 +0,0 @@ -package kurrentdb - -import ( - "fmt" - - streamErrors "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/streams/errors" - "google.golang.org/grpc/status" -) - -// ErrorCode KurrentDB error code. -type ErrorCode int - -const ( - // ErrorCodeUnknown unclassified error. - ErrorCodeUnknown ErrorCode = iota - // ErrorCodeUnsupportedFeature a request not supported by the targeted KurrentDB node was sent. - ErrorCodeUnsupportedFeature - // ErrorCodeDeadlineExceeded a gRPC deadline exceeded error. - ErrorCodeDeadlineExceeded - // ErrorCodeUnauthenticated a request requires authentication and the authentication failed. - ErrorCodeUnauthenticated - // ErrorCodeResourceNotFound a remote resource was not found or because its access was denied. - ErrorCodeResourceNotFound - // ErrorCodeResourceAlreadyExists a creation request was made for a resource that already exists. - ErrorCodeResourceAlreadyExists - // ErrorCodeConnectionClosed when a connection is already closed. - ErrorCodeConnectionClosed - // ErrorCodeWrongExpectedVersion when an append request failed the optimistic concurrency on the server. - ErrorCodeWrongExpectedVersion - // ErrorCodeStreamRevisionConflict when an append request failed due to a stream revision conflict. - ErrorCodeStreamRevisionConflict - // ErrorCodeStreamTombstoned requested stream is tombstoned. - ErrorCodeStreamTombstoned - // ErrorCodeAppendRecordSizeExceeded when an append record exceeds the maximum allowed size. - ErrorCodeAppendRecordSizeExceeded - // ErrorCodeAppendTransactionSizeExceeded when an append transaction exceeds the maximum allowed size. - ErrorCodeAppendTransactionSizeExceeded - // ErrorCodeAccessDenied a request requires the right ACL. - ErrorCodeAccessDenied - // ErrorCodeStreamDeleted requested stream is deleted. - ErrorCodeStreamDeleted - // ErrorCodeParsing error when parsing data. - ErrorCodeParsing - // ErrorCodeInternalClient unexpected error from the client library, worthy of a GitHub issue. - ErrorCodeInternalClient - // ErrorCodeInternalServer unexpected error from the server, worthy of a GitHub issue. - ErrorCodeInternalServer - // ErrorCodeNotLeader when a request needing a leader node was executed on a follower node. - ErrorCodeNotLeader - // ErrorAborted when the server aborted the request. - ErrorAborted - // ErrorUnavailable when the KurrentDB node became unavailable. - ErrorUnavailable - // ErrorCodeAppendConsistencyViolation when one or more consistency checks failed during an AppendRecords operation. - ErrorCodeAppendConsistencyViolation -) - -// Error main client error type. -type Error struct { - code ErrorCode - err error -} - -// Code returns an error code. -func (e *Error) Code() ErrorCode { - return e.code -} - -// Err returns underlying error. -func (e *Error) Err() error { - return e.err -} - -// IsErrorCode checks if the error code is the same as the given one. -func (e *Error) IsErrorCode(code ErrorCode) bool { - return e.code == code -} - -func (e *Error) Error() string { - msg := "" - - switch e.code { - case ErrorCodeUnsupportedFeature: - msg = "[ErrorCodeUnsupportedFeature] request not supported by the targeted KurrentDB node" - case ErrorCodeDeadlineExceeded: - msg = "[ErrorCodeDeadlineExceeded] gRPC deadline exceeded error" - case ErrorCodeUnauthenticated: - msg = "[ErrorCodeUnauthenticated] request requires authentication and the authentication failed" - case ErrorCodeResourceNotFound: - msg = "[ErrorCodeResourceNotFound] a remote resource was not found or its access was denied" - case ErrorCodeResourceAlreadyExists: - msg = "[ErrorCodeResourceAlreadyExists] a creation request was made for a resource that already exists" - case ErrorCodeConnectionClosed: - msg = "[ErrorCodeConnectionClosed] the connection is already closed" - case ErrorCodeWrongExpectedVersion: - msg = "[ErrorCodeWrongExpectedVersion] an append request failed the optimistic concurrency on the server" - case ErrorCodeAccessDenied: - msg = "[ErrorCodeAccessDenied] the request requires the right ACL" - case ErrorCodeStreamDeleted: - msg = "[ErrorCodeStreamDeleted] requested stream is deleted" - case ErrorCodeParsing: - msg = "[ErrorCodeParsing] error when parsing data" - case ErrorCodeInternalClient: - msg = "[ErrorCodeInternalClient] unexpected error from the client library, worthy of a GitHub issue" - case ErrorCodeInternalServer: - msg = "[ErrorCodeInternalServer] unexpected error from the server, worthy of a GitHub issue" - case ErrorCodeNotLeader: - msg = "[ErrorCodeNotLeader] the request needing a leader node was executed on a follower node" - case ErrorUnavailable: - msg = "[ErrorUnavailable] the server is not ready to accept requests" - case ErrorCodeAppendConsistencyViolation: - msg = "[ErrorCodeAppendConsistencyViolation] one or more consistency checks failed during append" - - default: - msg = fmt.Sprintf("[ErrorCode %d] (sorry, this error code is not supported by the Error() method)", e.code) - } - - if e.err != nil { - msg = fmt.Sprintf("%s: %v", msg, e.Err()) - } - - return msg -} - -func (e *Error) Unwrap() error { - return e.Err() -} - -func FromError(err error) (*Error, bool) { - if err == nil { - return nil, true - } - - if esErr, ok := err.(*Error); ok { - return esErr, false - } - - return &Error{code: ErrorCodeUnknown, err: err}, false -} - -func unsupportedFeatureError() error { - return &Error{code: ErrorCodeUnsupportedFeature} -} - -func unknownError() error { - return &Error{code: ErrorCodeUnknown} -} - -// getDetail attempts to extract rich error details from a gRPC status error -func getDetail(err error) *Error { - s, ok := status.FromError(err) - if !ok || s == nil { - return nil - } - - for _, d := range s.Details() { - switch detail := d.(type) { - case *streamErrors.StreamRevisionConflictErrorDetails: - expectedState := convertInt64ToStreamState(detail.ExpectedRevision) - actualState := convertInt64ToStreamState(detail.ActualRevision) - return &Error{ - code: ErrorCodeStreamRevisionConflict, - err: &StreamRevisionConflictError{ - Stream: detail.Stream, - ExpectedRevision: expectedState, - ActualRevision: actualState, - }, - } - case *streamErrors.StreamTombstonedErrorDetails: - return &Error{ - code: ErrorCodeStreamTombstoned, - err: &StreamTombstoneError{Stream: detail.Stream}, - } - case *streamErrors.AppendRecordSizeExceededErrorDetails: - return &Error{ - code: ErrorCodeAppendRecordSizeExceeded, - err: &AppendRecordSizeExceededError{ - Stream: detail.Stream, - RecordId: detail.RecordId, - Size: detail.Size, - MaxSize: detail.MaxSize, - }, - } - case *streamErrors.AppendTransactionSizeExceededErrorDetails: - return &Error{ - code: ErrorCodeAppendTransactionSizeExceeded, - err: &AppendTransactionSizeExceededError{ - Size: detail.Size, - MaxSize: detail.MaxSize, - }, - } - case *streamErrors.AppendConsistencyViolationErrorDetails: - violations := make([]ConsistencyViolation, 0, len(detail.Violations)) - for _, v := range detail.Violations { - if ss := v.GetStreamState(); ss != nil { - violations = append(violations, ConsistencyViolation{ - CheckIndex: v.CheckIndex, - Stream: ss.Stream, - ExpectedState: convertInt64ToStreamState(ss.ExpectedState), - ActualState: convertInt64ToStreamState(ss.ActualState), - }) - } - } - return &Error{ - code: ErrorCodeAppendConsistencyViolation, - err: &AppendConsistencyViolationError{Violations: violations}, - } - } - } - - return nil -} - -// convertInt64ToStreamState converts an int64 revision value to the appropriate StreamState implementation -func convertInt64ToStreamState(revision int64) StreamState { - switch revision { - case -1: - return NoStream{} - case -2: - return Any{} - case -4: - return StreamExists{} - default: - if revision >= 0 { - return StreamRevision{Value: uint64(revision)} - } - // For any other negative values, treat as StreamRevision with the raw value - return StreamRevision{Value: uint64(revision)} - } -} - -// StreamRevisionConflictError represents a conflict in stream revision during append. -type StreamRevisionConflictError struct { - Stream string - ExpectedRevision StreamState - ActualRevision StreamState -} - -func (e *StreamRevisionConflictError) Error() string { - return fmt.Sprintf("[ErrorCodeStreamRevisionConflict] stream revision conflict: stream=%s expected_revision=%v actual_revision=%v", e.Stream, e.ExpectedRevision, e.ActualRevision) -} - -// StreamDeletedError represents an error when attempting to access a deleted stream. -type StreamDeletedError struct { - Stream string -} - -func (e *StreamDeletedError) Error() string { - return fmt.Sprintf("[ErrorCodeStreamDeleted] stream deleted: stream=%s", e.Stream) -} - -// StreamTombstoneError represents an error when attempting to access a deleted stream. -type StreamTombstoneError struct { - Stream string -} - -func (e *StreamTombstoneError) Error() string { - return fmt.Sprintf("[ErrorCodeStreamTombstone] stream deleted: stream=%s", e.Stream) -} - -// AppendRecordSizeExceededError represents an error when an append record exceeds the maximum allowed size. -type AppendRecordSizeExceededError struct { - Stream string - RecordId string - Size int32 - MaxSize int32 -} - -func (e *AppendRecordSizeExceededError) Error() string { - exceededBy := e.Size - e.MaxSize - return fmt.Sprintf("[ErrorCodeAppendRecordSizeExceeded] The size of record %s (%d bytes) exceeds the maximum allowed size of %d bytes by %d bytes", e.RecordId, e.Size, e.MaxSize, exceededBy) -} - -// AppendTransactionSizeExceededError represents an error when an append transaction exceeds the maximum allowed size. -type AppendTransactionSizeExceededError struct { - Size int32 - MaxSize int32 -} - -func (e *AppendTransactionSizeExceededError) Error() string { - exceededBy := e.Size - e.MaxSize - return fmt.Sprintf("[ErrorCodeAppendTransactionSizeExceeded] The total size of the append transaction (%d bytes) exceeds the maximum allowed size of %d bytes by %d bytes", e.Size, e.MaxSize, exceededBy) -} - -// AppendConsistencyViolationError represents an error when one or more consistency checks failed during an AppendRecords operation. -type AppendConsistencyViolationError struct { - Violations []ConsistencyViolation -} - -func (e *AppendConsistencyViolationError) Error() string { - return fmt.Sprintf("[ErrorCodeAppendConsistencyViolation] %d consistency check(s) violated", len(e.Violations)) -} - -// ConsistencyViolation represents a single consistency check that was violated. -type ConsistencyViolation struct { - CheckIndex int32 - Stream string - ExpectedState StreamState - ActualState StreamState -} diff --git a/oauth/oauth.conf b/oauth/oauth.conf index ac8e682..e6cdc1e 100644 --- a/oauth/oauth.conf +++ b/oauth/oauth.conf @@ -1,17 +1,13 @@ ReplicationIp: 0.0.0.0 NodeIp: 0.0.0.0 -# Test fixture only - not a production template. DisableIssuerValidation is set -# because the issuer (https://localhost:8443) differs across the host/container -# boundary; it must not be used in a real deployment. -AuthenticationType: oauth - -OAuth: - Issuer: https://localhost:8443/realms/kurrent - Audience: kurrentdb-client - ClientId: kurrentdb-client - ClientSecret: secret - DisableIssuerValidation: true - -AuthorizationConfig: - RoleClaimType: role +Auth: + Methods: + - oauth + OAuth: + Issuer: http://localhost:18080/realms/trogon-eventstore + MetadataAddress: http://keycloak:8080/realms/trogon-eventstore/.well-known/openid-configuration + Audiences: + - trogon-eventstore-client + RoleClaimType: role + RequireHttpsMetadata: false diff --git a/oauth/realm-export.json b/oauth/realm-export.json index ccc06fc..6fd35db 100644 --- a/oauth/realm-export.json +++ b/oauth/realm-export.json @@ -1,104 +1,87 @@ { - "realm": "kurrent", - "enabled": true, - "accessTokenLifespan": 120, - "roles": { - "realm": [ - { "name": "$admins", "composite": false }, - { "name": "$ops", "composite": false } - ] - }, - "clientScopes": [ - { - "name": "profile", - "protocol": "openid-connect", - "attributes": { "include.in.token.scope": "true" }, - "protocolMappers": [ - { - "name": "username", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-property-mapper", - "config": { - "user.attribute": "username", - "claim.name": "preferred_username", - "id.token.claim": "true", - "access.token.claim": "true", - "userinfo.token.claim": "true", - "jsonType.label": "String" - } - } - ] - }, - { - "name": "roles", - "description": "Adds realm roles to the access token", - "protocol": "openid-connect", - "attributes": { "include.in.token.scope": "true" }, - "protocolMappers": [ - { - "name": "roles", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-realm-role-mapper", - "config": { - "claim.name": "role", - "multivalued": "true", - "id.token.claim": "true", - "access.token.claim": "true", - "jsonType.label": "String", - "userinfo.token.claim": "true" - } - } - ] - } - ], - "clients": [ - { - "clientId": "kurrentdb-client", - "enabled": true, - "publicClient": true, - "standardFlowEnabled": false, - "directAccessGrantsEnabled": true, - "defaultClientScopes": ["profile", "roles"], - "protocolMappers": [ - { - "name": "audience", - "protocol": "openid-connect", - "protocolMapper": "oidc-audience-mapper", - "config": { - "included.client.audience": "kurrentdb-client", - "id.token.claim": "false", - "access.token.claim": "true" - } - } - ] - } - ], - "users": [ - { - "username": "admin", - "enabled": true, - "emailVerified": true, - "email": "admin@example.com", - "firstName": "Admin", - "lastName": "User", - "requiredActions": [], - "credentials": [ - { "type": "password", "value": "changeit", "temporary": false } - ], - "realmRoles": ["$admins"] - }, - { - "username": "noroles", - "enabled": true, - "emailVerified": true, - "email": "noroles@example.com", - "firstName": "No", - "lastName": "Roles", - "requiredActions": [], - "credentials": [ - { "type": "password", "value": "changeit", "temporary": false } - ], - "realmRoles": [] - } - ] + "realm": "trogon-eventstore", + "enabled": true, + "accessTokenLifespan": 120, + "requiredActions": [ + { + "alias": "VERIFY_PROFILE", + "name": "Verify Profile", + "providerId": "VERIFY_PROFILE", + "enabled": false, + "defaultAction": false, + "priority": 90 + } + ], + "roles": { + "realm": [ + { "name": "$admins", "composite": false } + ] + }, + "clientScopes": [ + { + "name": "roles", + "protocol": "openid-connect", + "attributes": { "include.in.token.scope": "true" }, + "protocolMappers": [ + { + "name": "roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "config": { + "claim.name": "role", + "multivalued": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "jsonType.label": "String" + } + } + ] + } + ], + "clients": [ + { + "clientId": "trogon-eventstore-client", + "enabled": true, + "publicClient": true, + "standardFlowEnabled": false, + "directAccessGrantsEnabled": true, + "defaultClientScopes": ["roles"], + "protocolMappers": [ + { + "name": "audience", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-mapper", + "config": { + "included.client.audience": "trogon-eventstore-client", + "id.token.claim": "false", + "access.token.claim": "true" + } + } + ] + } + ], + "users": [ + { + "username": "admin", + "enabled": true, + "firstName": "Admin", + "lastName": "User", + "requiredActions": [], + "credentials": [ + { "type": "password", "value": "changeit", "temporary": false } + ], + "realmRoles": ["$admins"] + }, + { + "username": "noroles", + "enabled": true, + "firstName": "No", + "lastName": "Roles", + "requiredActions": [], + "credentials": [ + { "type": "password", "value": "changeit", "temporary": false } + ], + "realmRoles": [] + } + ] } diff --git a/protos/kurrentdb/protocols/v1/code/code.pb.go b/protos/kurrentdb/protocols/v1/code/code.pb.go deleted file mode 100644 index 8436403..0000000 --- a/protos/kurrentdb/protocols/v1/code/code.pb.go +++ /dev/null @@ -1,329 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/code.proto - -package code - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// The canonical error codes for gRPC APIs. -// -// Sometimes multiple error codes may apply. Services should return -// the most specific error code that applies. For example, prefer -// `OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply. -// Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`. -type Code int32 - -const ( - // Not an error; returned on success - // - // HTTP Mapping: 200 OK - Code_OK Code = 0 - // The operation was cancelled, typically by the caller. - // - // HTTP Mapping: 499 Client Closed Request - Code_CANCELLED Code = 1 - // Unknown error. For example, this error may be returned when - // a `Status` value received from another address space belongs to - // an error space that is not known in this address space. Also - // errors raised by APIs that do not return enough error information - // may be converted to this error. - // - // HTTP Mapping: 500 Internal Server Error - Code_UNKNOWN Code = 2 - // The client specified an invalid argument. Note that this differs - // from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments - // that are problematic regardless of the state of the system - // (e.g., a malformed file name). - // - // HTTP Mapping: 400 Bad Request - Code_INVALID_ARGUMENT Code = 3 - // The deadline expired before the operation could complete. For operations - // that change the state of the system, this error may be returned - // even if the operation has completed successfully. For example, a - // successful response from a server could have been delayed long - // enough for the deadline to expire. - // - // HTTP Mapping: 504 Gateway Timeout - Code_DEADLINE_EXCEEDED Code = 4 - // Some requested entity (e.g., file or directory) was not found. - // - // Note to server developers: if a request is denied for an entire class - // of users, such as gradual feature rollout or undocumented whitelist, - // `NOT_FOUND` may be used. If a request is denied for some users within - // a class of users, such as user-based access control, `PERMISSION_DENIED` - // must be used. - // - // HTTP Mapping: 404 Not Found - Code_NOT_FOUND Code = 5 - // The entity that a client attempted to create (e.g., file or directory) - // already exists. - // - // HTTP Mapping: 409 Conflict - Code_ALREADY_EXISTS Code = 6 - // The caller does not have permission to execute the specified - // operation. `PERMISSION_DENIED` must not be used for rejections - // caused by exhausting some resource (use `RESOURCE_EXHAUSTED` - // instead for those errors). `PERMISSION_DENIED` must not be - // used if the caller can not be identified (use `UNAUTHENTICATED` - // instead for those errors). This error code does not imply the - // request is valid or the requested entity exists or satisfies - // other pre-conditions. - // - // HTTP Mapping: 403 Forbidden - Code_PERMISSION_DENIED Code = 7 - // The request does not have valid authentication credentials for the - // operation. - // - // HTTP Mapping: 401 Unauthorized - Code_UNAUTHENTICATED Code = 16 - // Some resource has been exhausted, perhaps a per-user quota, or - // perhaps the entire file system is out of space. - // - // HTTP Mapping: 429 Too Many Requests - Code_RESOURCE_EXHAUSTED Code = 8 - // The operation was rejected because the system is not in a state - // required for the operation's execution. For example, the directory - // to be deleted is non-empty, an rmdir operation is applied to - // a non-directory, etc. - // - // Service implementors can use the following guidelines to decide - // between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: - // - // (a) Use `UNAVAILABLE` if the client can retry just the failing call. - // (b) Use `ABORTED` if the client should retry at a higher level - // (e.g., when a client-specified test-and-set fails, indicating the - // client should restart a read-modify-write sequence). - // (c) Use `FAILED_PRECONDITION` if the client should not retry until - // the system state has been explicitly fixed. E.g., if an "rmdir" - // fails because the directory is non-empty, `FAILED_PRECONDITION` - // should be returned since the client should not retry unless - // the files are deleted from the directory. - // - // HTTP Mapping: 400 Bad Request - Code_FAILED_PRECONDITION Code = 9 - // The operation was aborted, typically due to a concurrency issue such as - // a sequencer check failure or transaction abort. - // - // See the guidelines above for deciding between `FAILED_PRECONDITION`, - // `ABORTED`, and `UNAVAILABLE`. - // - // HTTP Mapping: 409 Conflict - Code_ABORTED Code = 10 - // The operation was attempted past the valid range. E.g., seeking or - // reading past end-of-file. - // - // Unlike `INVALID_ARGUMENT`, this error indicates a problem that may - // be fixed if the system state changes. For example, a 32-bit file - // system will generate `INVALID_ARGUMENT` if asked to read at an - // offset that is not in the range [0,2^32-1], but it will generate - // `OUT_OF_RANGE` if asked to read from an offset past the current - // file size. - // - // There is a fair bit of overlap between `FAILED_PRECONDITION` and - // `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific - // error) when it applies so that callers who are iterating through - // a space can easily look for an `OUT_OF_RANGE` error to detect when - // they are done. - // - // HTTP Mapping: 400 Bad Request - Code_OUT_OF_RANGE Code = 11 - // The operation is not implemented or is not supported/enabled in this - // service. - // - // HTTP Mapping: 501 Not Implemented - Code_UNIMPLEMENTED Code = 12 - // Internal errors. This means that some invariants expected by the - // underlying system have been broken. This error code is reserved - // for serious errors. - // - // HTTP Mapping: 500 Internal Server Error - Code_INTERNAL Code = 13 - // The service is currently unavailable. This is most likely a - // transient condition, which can be corrected by retrying with - // a backoff. Note that it is not always safe to retry - // non-idempotent operations. - // - // See the guidelines above for deciding between `FAILED_PRECONDITION`, - // `ABORTED`, and `UNAVAILABLE`. - // - // HTTP Mapping: 503 Service Unavailable - Code_UNAVAILABLE Code = 14 - // Unrecoverable data loss or corruption. - // - // HTTP Mapping: 500 Internal Server Error - Code_DATA_LOSS Code = 15 -) - -// Enum value maps for Code. -var ( - Code_name = map[int32]string{ - 0: "OK", - 1: "CANCELLED", - 2: "UNKNOWN", - 3: "INVALID_ARGUMENT", - 4: "DEADLINE_EXCEEDED", - 5: "NOT_FOUND", - 6: "ALREADY_EXISTS", - 7: "PERMISSION_DENIED", - 16: "UNAUTHENTICATED", - 8: "RESOURCE_EXHAUSTED", - 9: "FAILED_PRECONDITION", - 10: "ABORTED", - 11: "OUT_OF_RANGE", - 12: "UNIMPLEMENTED", - 13: "INTERNAL", - 14: "UNAVAILABLE", - 15: "DATA_LOSS", - } - Code_value = map[string]int32{ - "OK": 0, - "CANCELLED": 1, - "UNKNOWN": 2, - "INVALID_ARGUMENT": 3, - "DEADLINE_EXCEEDED": 4, - "NOT_FOUND": 5, - "ALREADY_EXISTS": 6, - "PERMISSION_DENIED": 7, - "UNAUTHENTICATED": 16, - "RESOURCE_EXHAUSTED": 8, - "FAILED_PRECONDITION": 9, - "ABORTED": 10, - "OUT_OF_RANGE": 11, - "UNIMPLEMENTED": 12, - "INTERNAL": 13, - "UNAVAILABLE": 14, - "DATA_LOSS": 15, - } -) - -func (x Code) Enum() *Code { - p := new(Code) - *p = x - return p -} - -func (x Code) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Code) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v1_code_proto_enumTypes[0].Descriptor() -} - -func (Code) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v1_code_proto_enumTypes[0] -} - -func (x Code) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Code.Descriptor instead. -func (Code) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_code_proto_rawDescGZIP(), []int{0} -} - -var File_kurrentdb_protocols_v1_code_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v1_code_proto_rawDesc = "" + - "\n" + - "!kurrentdb/protocols/v1/code.proto\x12\n" + - "google.rpc*\xb7\x02\n" + - "\x04Code\x12\x06\n" + - "\x02OK\x10\x00\x12\r\n" + - "\tCANCELLED\x10\x01\x12\v\n" + - "\aUNKNOWN\x10\x02\x12\x14\n" + - "\x10INVALID_ARGUMENT\x10\x03\x12\x15\n" + - "\x11DEADLINE_EXCEEDED\x10\x04\x12\r\n" + - "\tNOT_FOUND\x10\x05\x12\x12\n" + - "\x0eALREADY_EXISTS\x10\x06\x12\x15\n" + - "\x11PERMISSION_DENIED\x10\a\x12\x13\n" + - "\x0fUNAUTHENTICATED\x10\x10\x12\x16\n" + - "\x12RESOURCE_EXHAUSTED\x10\b\x12\x17\n" + - "\x13FAILED_PRECONDITION\x10\t\x12\v\n" + - "\aABORTED\x10\n" + - "\x12\x10\n" + - "\fOUT_OF_RANGE\x10\v\x12\x11\n" + - "\rUNIMPLEMENTED\x10\f\x12\f\n" + - "\bINTERNAL\x10\r\x12\x0f\n" + - "\vUNAVAILABLE\x10\x0e\x12\r\n" + - "\tDATA_LOSS\x10\x0fBX\n" + - "\x0ecom.google.rpcB\tCodeProtoP\x01Z3google.golang.org/genproto/googleapis/rpc/code;code\xa2\x02\x03RPCb\x06proto3" - -var ( - file_kurrentdb_protocols_v1_code_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_code_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v1_code_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_code_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_code_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_code_proto_rawDesc), len(file_kurrentdb_protocols_v1_code_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v1_code_proto_rawDescData -} - -var file_kurrentdb_protocols_v1_code_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kurrentdb_protocols_v1_code_proto_goTypes = []any{ - (Code)(0), // 0: google.rpc.Code -} -var file_kurrentdb_protocols_v1_code_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v1_code_proto_init() } -func file_kurrentdb_protocols_v1_code_proto_init() { - if File_kurrentdb_protocols_v1_code_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_code_proto_rawDesc), len(file_kurrentdb_protocols_v1_code_proto_rawDesc)), - NumEnums: 1, - NumMessages: 0, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_kurrentdb_protocols_v1_code_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_code_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v1_code_proto_enumTypes, - }.Build() - File_kurrentdb_protocols_v1_code_proto = out.File - file_kurrentdb_protocols_v1_code_proto_goTypes = nil - file_kurrentdb_protocols_v1_code_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v1/projections/projections.pb.go b/protos/kurrentdb/protocols/v1/projections/projections.pb.go deleted file mode 100644 index 161e7a2..0000000 --- a/protos/kurrentdb/protocols/v1/projections/projections.pb.go +++ /dev/null @@ -1,2017 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/projections.proto - -package projections - -import ( - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - structpb "google.golang.org/protobuf/types/known/structpb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type CreateReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *CreateReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateReq) Reset() { - *x = CreateReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateReq) ProtoMessage() {} - -func (x *CreateReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateReq.ProtoReflect.Descriptor instead. -func (*CreateReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{0} -} - -func (x *CreateReq) GetOptions() *CreateReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type CreateResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateResp) Reset() { - *x = CreateResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateResp) ProtoMessage() {} - -func (x *CreateResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateResp.ProtoReflect.Descriptor instead. -func (*CreateResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{1} -} - -type UpdateReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *UpdateReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateReq) Reset() { - *x = UpdateReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateReq) ProtoMessage() {} - -func (x *UpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateReq.ProtoReflect.Descriptor instead. -func (*UpdateReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{2} -} - -func (x *UpdateReq) GetOptions() *UpdateReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type UpdateResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateResp) Reset() { - *x = UpdateResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateResp) ProtoMessage() {} - -func (x *UpdateResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateResp.ProtoReflect.Descriptor instead. -func (*UpdateResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{3} -} - -type DeleteReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *DeleteReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteReq) Reset() { - *x = DeleteReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteReq) ProtoMessage() {} - -func (x *DeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. -func (*DeleteReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{4} -} - -func (x *DeleteReq) GetOptions() *DeleteReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type DeleteResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteResp) Reset() { - *x = DeleteResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteResp) ProtoMessage() {} - -func (x *DeleteResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. -func (*DeleteResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{5} -} - -type StatisticsReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *StatisticsReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StatisticsReq) Reset() { - *x = StatisticsReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StatisticsReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatisticsReq) ProtoMessage() {} - -func (x *StatisticsReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StatisticsReq.ProtoReflect.Descriptor instead. -func (*StatisticsReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{6} -} - -func (x *StatisticsReq) GetOptions() *StatisticsReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type StatisticsResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - Details *StatisticsResp_Details `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StatisticsResp) Reset() { - *x = StatisticsResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StatisticsResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatisticsResp) ProtoMessage() {} - -func (x *StatisticsResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StatisticsResp.ProtoReflect.Descriptor instead. -func (*StatisticsResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{7} -} - -func (x *StatisticsResp) GetDetails() *StatisticsResp_Details { - if x != nil { - return x.Details - } - return nil -} - -type StateReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *StateReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StateReq) Reset() { - *x = StateReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StateReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StateReq) ProtoMessage() {} - -func (x *StateReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StateReq.ProtoReflect.Descriptor instead. -func (*StateReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{8} -} - -func (x *StateReq) GetOptions() *StateReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type StateResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - State *structpb.Value `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StateResp) Reset() { - *x = StateResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StateResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StateResp) ProtoMessage() {} - -func (x *StateResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StateResp.ProtoReflect.Descriptor instead. -func (*StateResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{9} -} - -func (x *StateResp) GetState() *structpb.Value { - if x != nil { - return x.State - } - return nil -} - -type ResultReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *ResultReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResultReq) Reset() { - *x = ResultReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResultReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResultReq) ProtoMessage() {} - -func (x *ResultReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResultReq.ProtoReflect.Descriptor instead. -func (*ResultReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{10} -} - -func (x *ResultReq) GetOptions() *ResultReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type ResultResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - Result *structpb.Value `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResultResp) Reset() { - *x = ResultResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResultResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResultResp) ProtoMessage() {} - -func (x *ResultResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[11] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResultResp.ProtoReflect.Descriptor instead. -func (*ResultResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{11} -} - -func (x *ResultResp) GetResult() *structpb.Value { - if x != nil { - return x.Result - } - return nil -} - -type ResetReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *ResetReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResetReq) Reset() { - *x = ResetReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResetReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResetReq) ProtoMessage() {} - -func (x *ResetReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResetReq.ProtoReflect.Descriptor instead. -func (*ResetReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{12} -} - -func (x *ResetReq) GetOptions() *ResetReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type ResetResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResetResp) Reset() { - *x = ResetResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResetResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResetResp) ProtoMessage() {} - -func (x *ResetResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResetResp.ProtoReflect.Descriptor instead. -func (*ResetResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{13} -} - -type EnableReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *EnableReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EnableReq) Reset() { - *x = EnableReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnableReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnableReq) ProtoMessage() {} - -func (x *EnableReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[14] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnableReq.ProtoReflect.Descriptor instead. -func (*EnableReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{14} -} - -func (x *EnableReq) GetOptions() *EnableReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type EnableResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EnableResp) Reset() { - *x = EnableResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnableResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnableResp) ProtoMessage() {} - -func (x *EnableResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[15] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnableResp.ProtoReflect.Descriptor instead. -func (*EnableResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{15} -} - -type DisableReq struct { - state protoimpl.MessageState `protogen:"open.v1"` - Options *DisableReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DisableReq) Reset() { - *x = DisableReq{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DisableReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DisableReq) ProtoMessage() {} - -func (x *DisableReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[16] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DisableReq.ProtoReflect.Descriptor instead. -func (*DisableReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{16} -} - -func (x *DisableReq) GetOptions() *DisableReq_Options { - if x != nil { - return x.Options - } - return nil -} - -type DisableResp struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DisableResp) Reset() { - *x = DisableResp{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DisableResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DisableResp) ProtoMessage() {} - -func (x *DisableResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[17] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DisableResp.ProtoReflect.Descriptor instead. -func (*DisableResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{17} -} - -type CreateReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Mode: - // - // *CreateReq_Options_OneTime - // *CreateReq_Options_Transient_ - // *CreateReq_Options_Continuous_ - Mode isCreateReq_Options_Mode `protobuf_oneof:"mode"` - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - EngineVersion int32 `protobuf:"varint,5,opt,name=engine_version,json=engineVersion,proto3" json:"engine_version,omitempty"` // 0 or 1 = v1 (default), 2 = v2 - Properties map[string]*structpb.Value `protobuf:"bytes,6,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateReq_Options) Reset() { - *x = CreateReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateReq_Options) ProtoMessage() {} - -func (x *CreateReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[18] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateReq_Options.ProtoReflect.Descriptor instead. -func (*CreateReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *CreateReq_Options) GetMode() isCreateReq_Options_Mode { - if x != nil { - return x.Mode - } - return nil -} - -func (x *CreateReq_Options) GetOneTime() *shared.Empty { - if x != nil { - if x, ok := x.Mode.(*CreateReq_Options_OneTime); ok { - return x.OneTime - } - } - return nil -} - -func (x *CreateReq_Options) GetTransient() *CreateReq_Options_Transient { - if x != nil { - if x, ok := x.Mode.(*CreateReq_Options_Transient_); ok { - return x.Transient - } - } - return nil -} - -func (x *CreateReq_Options) GetContinuous() *CreateReq_Options_Continuous { - if x != nil { - if x, ok := x.Mode.(*CreateReq_Options_Continuous_); ok { - return x.Continuous - } - } - return nil -} - -func (x *CreateReq_Options) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *CreateReq_Options) GetEngineVersion() int32 { - if x != nil { - return x.EngineVersion - } - return 0 -} - -func (x *CreateReq_Options) GetProperties() map[string]*structpb.Value { - if x != nil { - return x.Properties - } - return nil -} - -type isCreateReq_Options_Mode interface { - isCreateReq_Options_Mode() -} - -type CreateReq_Options_OneTime struct { - OneTime *shared.Empty `protobuf:"bytes,1,opt,name=one_time,json=oneTime,proto3,oneof"` -} - -type CreateReq_Options_Transient_ struct { - Transient *CreateReq_Options_Transient `protobuf:"bytes,2,opt,name=transient,proto3,oneof"` -} - -type CreateReq_Options_Continuous_ struct { - Continuous *CreateReq_Options_Continuous `protobuf:"bytes,3,opt,name=continuous,proto3,oneof"` -} - -func (*CreateReq_Options_OneTime) isCreateReq_Options_Mode() {} - -func (*CreateReq_Options_Transient_) isCreateReq_Options_Mode() {} - -func (*CreateReq_Options_Continuous_) isCreateReq_Options_Mode() {} - -type CreateReq_Options_Transient struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateReq_Options_Transient) Reset() { - *x = CreateReq_Options_Transient{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateReq_Options_Transient) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateReq_Options_Transient) ProtoMessage() {} - -func (x *CreateReq_Options_Transient) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateReq_Options_Transient.ProtoReflect.Descriptor instead. -func (*CreateReq_Options_Transient) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{0, 0, 1} -} - -func (x *CreateReq_Options_Transient) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -type CreateReq_Options_Continuous struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - EmitEnabled bool `protobuf:"varint,2,opt,name=emit_enabled,json=emitEnabled,proto3" json:"emit_enabled,omitempty"` - TrackEmittedStreams bool `protobuf:"varint,3,opt,name=track_emitted_streams,json=trackEmittedStreams,proto3" json:"track_emitted_streams,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateReq_Options_Continuous) Reset() { - *x = CreateReq_Options_Continuous{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateReq_Options_Continuous) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateReq_Options_Continuous) ProtoMessage() {} - -func (x *CreateReq_Options_Continuous) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateReq_Options_Continuous.ProtoReflect.Descriptor instead. -func (*CreateReq_Options_Continuous) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{0, 0, 2} -} - -func (x *CreateReq_Options_Continuous) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateReq_Options_Continuous) GetEmitEnabled() bool { - if x != nil { - return x.EmitEnabled - } - return false -} - -func (x *CreateReq_Options_Continuous) GetTrackEmittedStreams() bool { - if x != nil { - return x.TrackEmittedStreams - } - return false -} - -type UpdateReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - // Types that are valid to be assigned to EmitOption: - // - // *UpdateReq_Options_EmitEnabled - // *UpdateReq_Options_NoEmitOptions - EmitOption isUpdateReq_Options_EmitOption `protobuf_oneof:"emit_option"` - Properties map[string]*structpb.Value `protobuf:"bytes,5,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateReq_Options) Reset() { - *x = UpdateReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateReq_Options) ProtoMessage() {} - -func (x *UpdateReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateReq_Options.ProtoReflect.Descriptor instead. -func (*UpdateReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *UpdateReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateReq_Options) GetQuery() string { - if x != nil { - return x.Query - } - return "" -} - -func (x *UpdateReq_Options) GetEmitOption() isUpdateReq_Options_EmitOption { - if x != nil { - return x.EmitOption - } - return nil -} - -func (x *UpdateReq_Options) GetEmitEnabled() bool { - if x != nil { - if x, ok := x.EmitOption.(*UpdateReq_Options_EmitEnabled); ok { - return x.EmitEnabled - } - } - return false -} - -func (x *UpdateReq_Options) GetNoEmitOptions() *shared.Empty { - if x != nil { - if x, ok := x.EmitOption.(*UpdateReq_Options_NoEmitOptions); ok { - return x.NoEmitOptions - } - } - return nil -} - -func (x *UpdateReq_Options) GetProperties() map[string]*structpb.Value { - if x != nil { - return x.Properties - } - return nil -} - -type isUpdateReq_Options_EmitOption interface { - isUpdateReq_Options_EmitOption() -} - -type UpdateReq_Options_EmitEnabled struct { - EmitEnabled bool `protobuf:"varint,3,opt,name=emit_enabled,json=emitEnabled,proto3,oneof"` -} - -type UpdateReq_Options_NoEmitOptions struct { - NoEmitOptions *shared.Empty `protobuf:"bytes,4,opt,name=no_emit_options,json=noEmitOptions,proto3,oneof"` -} - -func (*UpdateReq_Options_EmitEnabled) isUpdateReq_Options_EmitOption() {} - -func (*UpdateReq_Options_NoEmitOptions) isUpdateReq_Options_EmitOption() {} - -type DeleteReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - DeleteEmittedStreams bool `protobuf:"varint,2,opt,name=delete_emitted_streams,json=deleteEmittedStreams,proto3" json:"delete_emitted_streams,omitempty"` - DeleteStateStream bool `protobuf:"varint,3,opt,name=delete_state_stream,json=deleteStateStream,proto3" json:"delete_state_stream,omitempty"` - DeleteCheckpointStream bool `protobuf:"varint,4,opt,name=delete_checkpoint_stream,json=deleteCheckpointStream,proto3" json:"delete_checkpoint_stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteReq_Options) Reset() { - *x = DeleteReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteReq_Options) ProtoMessage() {} - -func (x *DeleteReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[24] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteReq_Options.ProtoReflect.Descriptor instead. -func (*DeleteReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{4, 0} -} - -func (x *DeleteReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DeleteReq_Options) GetDeleteEmittedStreams() bool { - if x != nil { - return x.DeleteEmittedStreams - } - return false -} - -func (x *DeleteReq_Options) GetDeleteStateStream() bool { - if x != nil { - return x.DeleteStateStream - } - return false -} - -func (x *DeleteReq_Options) GetDeleteCheckpointStream() bool { - if x != nil { - return x.DeleteCheckpointStream - } - return false -} - -type StatisticsReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Mode: - // - // *StatisticsReq_Options_Name - // *StatisticsReq_Options_All - // *StatisticsReq_Options_Transient - // *StatisticsReq_Options_Continuous - // *StatisticsReq_Options_OneTime - Mode isStatisticsReq_Options_Mode `protobuf_oneof:"mode"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StatisticsReq_Options) Reset() { - *x = StatisticsReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StatisticsReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatisticsReq_Options) ProtoMessage() {} - -func (x *StatisticsReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StatisticsReq_Options.ProtoReflect.Descriptor instead. -func (*StatisticsReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{6, 0} -} - -func (x *StatisticsReq_Options) GetMode() isStatisticsReq_Options_Mode { - if x != nil { - return x.Mode - } - return nil -} - -func (x *StatisticsReq_Options) GetName() string { - if x != nil { - if x, ok := x.Mode.(*StatisticsReq_Options_Name); ok { - return x.Name - } - } - return "" -} - -func (x *StatisticsReq_Options) GetAll() *shared.Empty { - if x != nil { - if x, ok := x.Mode.(*StatisticsReq_Options_All); ok { - return x.All - } - } - return nil -} - -func (x *StatisticsReq_Options) GetTransient() *shared.Empty { - if x != nil { - if x, ok := x.Mode.(*StatisticsReq_Options_Transient); ok { - return x.Transient - } - } - return nil -} - -func (x *StatisticsReq_Options) GetContinuous() *shared.Empty { - if x != nil { - if x, ok := x.Mode.(*StatisticsReq_Options_Continuous); ok { - return x.Continuous - } - } - return nil -} - -func (x *StatisticsReq_Options) GetOneTime() *shared.Empty { - if x != nil { - if x, ok := x.Mode.(*StatisticsReq_Options_OneTime); ok { - return x.OneTime - } - } - return nil -} - -type isStatisticsReq_Options_Mode interface { - isStatisticsReq_Options_Mode() -} - -type StatisticsReq_Options_Name struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3,oneof"` -} - -type StatisticsReq_Options_All struct { - All *shared.Empty `protobuf:"bytes,2,opt,name=all,proto3,oneof"` -} - -type StatisticsReq_Options_Transient struct { - Transient *shared.Empty `protobuf:"bytes,3,opt,name=transient,proto3,oneof"` -} - -type StatisticsReq_Options_Continuous struct { - Continuous *shared.Empty `protobuf:"bytes,4,opt,name=continuous,proto3,oneof"` -} - -type StatisticsReq_Options_OneTime struct { - OneTime *shared.Empty `protobuf:"bytes,5,opt,name=one_time,json=oneTime,proto3,oneof"` -} - -func (*StatisticsReq_Options_Name) isStatisticsReq_Options_Mode() {} - -func (*StatisticsReq_Options_All) isStatisticsReq_Options_Mode() {} - -func (*StatisticsReq_Options_Transient) isStatisticsReq_Options_Mode() {} - -func (*StatisticsReq_Options_Continuous) isStatisticsReq_Options_Mode() {} - -func (*StatisticsReq_Options_OneTime) isStatisticsReq_Options_Mode() {} - -type StatisticsResp_Details struct { - state protoimpl.MessageState `protogen:"open.v1"` - CoreProcessingTime int64 `protobuf:"varint,1,opt,name=coreProcessingTime,proto3" json:"coreProcessingTime,omitempty"` - Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - Epoch int64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` - EffectiveName string `protobuf:"bytes,4,opt,name=effectiveName,proto3" json:"effectiveName,omitempty"` - WritesInProgress int32 `protobuf:"varint,5,opt,name=writesInProgress,proto3" json:"writesInProgress,omitempty"` - ReadsInProgress int32 `protobuf:"varint,6,opt,name=readsInProgress,proto3" json:"readsInProgress,omitempty"` - PartitionsCached int32 `protobuf:"varint,7,opt,name=partitionsCached,proto3" json:"partitionsCached,omitempty"` - Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"` - StateReason string `protobuf:"bytes,9,opt,name=stateReason,proto3" json:"stateReason,omitempty"` - Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"` - Mode string `protobuf:"bytes,11,opt,name=mode,proto3" json:"mode,omitempty"` - Position string `protobuf:"bytes,12,opt,name=position,proto3" json:"position,omitempty"` - Progress float32 `protobuf:"fixed32,13,opt,name=progress,proto3" json:"progress,omitempty"` - LastCheckpoint string `protobuf:"bytes,14,opt,name=lastCheckpoint,proto3" json:"lastCheckpoint,omitempty"` - EventsProcessedAfterRestart int64 `protobuf:"varint,15,opt,name=eventsProcessedAfterRestart,proto3" json:"eventsProcessedAfterRestart,omitempty"` - CheckpointStatus string `protobuf:"bytes,16,opt,name=checkpointStatus,proto3" json:"checkpointStatus,omitempty"` - BufferedEvents int64 `protobuf:"varint,17,opt,name=bufferedEvents,proto3" json:"bufferedEvents,omitempty"` - WritePendingEventsBeforeCheckpoint int32 `protobuf:"varint,18,opt,name=writePendingEventsBeforeCheckpoint,proto3" json:"writePendingEventsBeforeCheckpoint,omitempty"` - WritePendingEventsAfterCheckpoint int32 `protobuf:"varint,19,opt,name=writePendingEventsAfterCheckpoint,proto3" json:"writePendingEventsAfterCheckpoint,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StatisticsResp_Details) Reset() { - *x = StatisticsResp_Details{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StatisticsResp_Details) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatisticsResp_Details) ProtoMessage() {} - -func (x *StatisticsResp_Details) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[26] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StatisticsResp_Details.ProtoReflect.Descriptor instead. -func (*StatisticsResp_Details) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{7, 0} -} - -func (x *StatisticsResp_Details) GetCoreProcessingTime() int64 { - if x != nil { - return x.CoreProcessingTime - } - return 0 -} - -func (x *StatisticsResp_Details) GetVersion() int64 { - if x != nil { - return x.Version - } - return 0 -} - -func (x *StatisticsResp_Details) GetEpoch() int64 { - if x != nil { - return x.Epoch - } - return 0 -} - -func (x *StatisticsResp_Details) GetEffectiveName() string { - if x != nil { - return x.EffectiveName - } - return "" -} - -func (x *StatisticsResp_Details) GetWritesInProgress() int32 { - if x != nil { - return x.WritesInProgress - } - return 0 -} - -func (x *StatisticsResp_Details) GetReadsInProgress() int32 { - if x != nil { - return x.ReadsInProgress - } - return 0 -} - -func (x *StatisticsResp_Details) GetPartitionsCached() int32 { - if x != nil { - return x.PartitionsCached - } - return 0 -} - -func (x *StatisticsResp_Details) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *StatisticsResp_Details) GetStateReason() string { - if x != nil { - return x.StateReason - } - return "" -} - -func (x *StatisticsResp_Details) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *StatisticsResp_Details) GetMode() string { - if x != nil { - return x.Mode - } - return "" -} - -func (x *StatisticsResp_Details) GetPosition() string { - if x != nil { - return x.Position - } - return "" -} - -func (x *StatisticsResp_Details) GetProgress() float32 { - if x != nil { - return x.Progress - } - return 0 -} - -func (x *StatisticsResp_Details) GetLastCheckpoint() string { - if x != nil { - return x.LastCheckpoint - } - return "" -} - -func (x *StatisticsResp_Details) GetEventsProcessedAfterRestart() int64 { - if x != nil { - return x.EventsProcessedAfterRestart - } - return 0 -} - -func (x *StatisticsResp_Details) GetCheckpointStatus() string { - if x != nil { - return x.CheckpointStatus - } - return "" -} - -func (x *StatisticsResp_Details) GetBufferedEvents() int64 { - if x != nil { - return x.BufferedEvents - } - return 0 -} - -func (x *StatisticsResp_Details) GetWritePendingEventsBeforeCheckpoint() int32 { - if x != nil { - return x.WritePendingEventsBeforeCheckpoint - } - return 0 -} - -func (x *StatisticsResp_Details) GetWritePendingEventsAfterCheckpoint() int32 { - if x != nil { - return x.WritePendingEventsAfterCheckpoint - } - return 0 -} - -type StateReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Partition string `protobuf:"bytes,2,opt,name=partition,proto3" json:"partition,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StateReq_Options) Reset() { - *x = StateReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StateReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StateReq_Options) ProtoMessage() {} - -func (x *StateReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[27] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StateReq_Options.ProtoReflect.Descriptor instead. -func (*StateReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{8, 0} -} - -func (x *StateReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *StateReq_Options) GetPartition() string { - if x != nil { - return x.Partition - } - return "" -} - -type ResultReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Partition string `protobuf:"bytes,2,opt,name=partition,proto3" json:"partition,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResultReq_Options) Reset() { - *x = ResultReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResultReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResultReq_Options) ProtoMessage() {} - -func (x *ResultReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[28] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResultReq_Options.ProtoReflect.Descriptor instead. -func (*ResultReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{10, 0} -} - -func (x *ResultReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ResultReq_Options) GetPartition() string { - if x != nil { - return x.Partition - } - return "" -} - -type ResetReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - WriteCheckpoint bool `protobuf:"varint,2,opt,name=write_checkpoint,json=writeCheckpoint,proto3" json:"write_checkpoint,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ResetReq_Options) Reset() { - *x = ResetReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ResetReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResetReq_Options) ProtoMessage() {} - -func (x *ResetReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[29] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResetReq_Options.ProtoReflect.Descriptor instead. -func (*ResetReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{12, 0} -} - -func (x *ResetReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ResetReq_Options) GetWriteCheckpoint() bool { - if x != nil { - return x.WriteCheckpoint - } - return false -} - -type EnableReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EnableReq_Options) Reset() { - *x = EnableReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EnableReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EnableReq_Options) ProtoMessage() {} - -func (x *EnableReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[30] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EnableReq_Options.ProtoReflect.Descriptor instead. -func (*EnableReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{14, 0} -} - -func (x *EnableReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -type DisableReq_Options struct { - state protoimpl.MessageState `protogen:"open.v1"` - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - WriteCheckpoint bool `protobuf:"varint,2,opt,name=write_checkpoint,json=writeCheckpoint,proto3" json:"write_checkpoint,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DisableReq_Options) Reset() { - *x = DisableReq_Options{} - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DisableReq_Options) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DisableReq_Options) ProtoMessage() {} - -func (x *DisableReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_projections_proto_msgTypes[31] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DisableReq_Options.ProtoReflect.Descriptor instead. -func (*DisableReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP(), []int{16, 0} -} - -func (x *DisableReq_Options) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DisableReq_Options) GetWriteCheckpoint() bool { - if x != nil { - return x.WriteCheckpoint - } - return false -} - -var File_kurrentdb_protocols_v1_projections_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v1_projections_proto_rawDesc = "" + - "\n" + - "(kurrentdb/protocols/v1/projections.proto\x12\x1eevent_store.client.projections\x1a\x1cgoogle/protobuf/struct.proto\x1a#kurrentdb/protocols/v1/shared.proto\"\xf2\x05\n" + - "\tCreateReq\x12K\n" + - "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.CreateReq.OptionsR\aoptions\x1a\x97\x05\n" + - "\aOptions\x126\n" + - "\bone_time\x18\x01 \x01(\v2\x19.event_store.client.EmptyH\x00R\aoneTime\x12[\n" + - "\ttransient\x18\x02 \x01(\v2;.event_store.client.projections.CreateReq.Options.TransientH\x00R\ttransient\x12^\n" + - "\n" + - "continuous\x18\x03 \x01(\v2<.event_store.client.projections.CreateReq.Options.ContinuousH\x00R\n" + - "continuous\x12\x14\n" + - "\x05query\x18\x04 \x01(\tR\x05query\x12%\n" + - "\x0eengine_version\x18\x05 \x01(\x05R\rengineVersion\x12a\n" + - "\n" + - "properties\x18\x06 \x03(\v2A.event_store.client.projections.CreateReq.Options.PropertiesEntryR\n" + - "properties\x1aU\n" + - "\x0fPropertiesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12,\n" + - "\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01\x1a\x1f\n" + - "\tTransient\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x1aw\n" + - "\n" + - "Continuous\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12!\n" + - "\femit_enabled\x18\x02 \x01(\bR\vemitEnabled\x122\n" + - "\x15track_emitted_streams\x18\x03 \x01(\bR\x13trackEmittedStreamsB\x06\n" + - "\x04mode\"\f\n" + - "\n" + - "CreateResp\"\xc1\x03\n" + - "\tUpdateReq\x12K\n" + - "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.UpdateReq.OptionsR\aoptions\x1a\xe6\x02\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + - "\x05query\x18\x02 \x01(\tR\x05query\x12#\n" + - "\femit_enabled\x18\x03 \x01(\bH\x00R\vemitEnabled\x12C\n" + - "\x0fno_emit_options\x18\x04 \x01(\v2\x19.event_store.client.EmptyH\x00R\rnoEmitOptions\x12a\n" + - "\n" + - "properties\x18\x05 \x03(\v2A.event_store.client.projections.UpdateReq.Options.PropertiesEntryR\n" + - "properties\x1aU\n" + - "\x0fPropertiesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12,\n" + - "\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01B\r\n" + - "\vemit_option\"\f\n" + - "\n" + - "UpdateResp\"\x98\x02\n" + - "\tDeleteReq\x12K\n" + - "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.DeleteReq.OptionsR\aoptions\x1a\xbd\x01\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x124\n" + - "\x16delete_emitted_streams\x18\x02 \x01(\bR\x14deleteEmittedStreams\x12.\n" + - "\x13delete_state_stream\x18\x03 \x01(\bR\x11deleteStateStream\x128\n" + - "\x18delete_checkpoint_stream\x18\x04 \x01(\bR\x16deleteCheckpointStream\"\f\n" + - "\n" + - "DeleteResp\"\xe9\x02\n" + - "\rStatisticsReq\x12O\n" + - "\aoptions\x18\x01 \x01(\v25.event_store.client.projections.StatisticsReq.OptionsR\aoptions\x1a\x86\x02\n" + - "\aOptions\x12\x14\n" + - "\x04name\x18\x01 \x01(\tH\x00R\x04name\x12-\n" + - "\x03all\x18\x02 \x01(\v2\x19.event_store.client.EmptyH\x00R\x03all\x129\n" + - "\ttransient\x18\x03 \x01(\v2\x19.event_store.client.EmptyH\x00R\ttransient\x12;\n" + - "\n" + - "continuous\x18\x04 \x01(\v2\x19.event_store.client.EmptyH\x00R\n" + - "continuous\x126\n" + - "\bone_time\x18\x05 \x01(\v2\x19.event_store.client.EmptyH\x00R\aoneTimeB\x06\n" + - "\x04mode\"\xec\x06\n" + - "\x0eStatisticsResp\x12P\n" + - "\adetails\x18\x01 \x01(\v26.event_store.client.projections.StatisticsResp.DetailsR\adetails\x1a\x87\x06\n" + - "\aDetails\x12.\n" + - "\x12coreProcessingTime\x18\x01 \x01(\x03R\x12coreProcessingTime\x12\x18\n" + - "\aversion\x18\x02 \x01(\x03R\aversion\x12\x14\n" + - "\x05epoch\x18\x03 \x01(\x03R\x05epoch\x12$\n" + - "\reffectiveName\x18\x04 \x01(\tR\reffectiveName\x12*\n" + - "\x10writesInProgress\x18\x05 \x01(\x05R\x10writesInProgress\x12(\n" + - "\x0freadsInProgress\x18\x06 \x01(\x05R\x0freadsInProgress\x12*\n" + - "\x10partitionsCached\x18\a \x01(\x05R\x10partitionsCached\x12\x16\n" + - "\x06status\x18\b \x01(\tR\x06status\x12 \n" + - "\vstateReason\x18\t \x01(\tR\vstateReason\x12\x12\n" + - "\x04name\x18\n" + - " \x01(\tR\x04name\x12\x12\n" + - "\x04mode\x18\v \x01(\tR\x04mode\x12\x1a\n" + - "\bposition\x18\f \x01(\tR\bposition\x12\x1a\n" + - "\bprogress\x18\r \x01(\x02R\bprogress\x12&\n" + - "\x0elastCheckpoint\x18\x0e \x01(\tR\x0elastCheckpoint\x12@\n" + - "\x1beventsProcessedAfterRestart\x18\x0f \x01(\x03R\x1beventsProcessedAfterRestart\x12*\n" + - "\x10checkpointStatus\x18\x10 \x01(\tR\x10checkpointStatus\x12&\n" + - "\x0ebufferedEvents\x18\x11 \x01(\x03R\x0ebufferedEvents\x12N\n" + - "\"writePendingEventsBeforeCheckpoint\x18\x12 \x01(\x05R\"writePendingEventsBeforeCheckpoint\x12L\n" + - "!writePendingEventsAfterCheckpoint\x18\x13 \x01(\x05R!writePendingEventsAfterCheckpoint\"\x93\x01\n" + - "\bStateReq\x12J\n" + - "\aoptions\x18\x01 \x01(\v20.event_store.client.projections.StateReq.OptionsR\aoptions\x1a;\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + - "\tpartition\x18\x02 \x01(\tR\tpartition\"9\n" + - "\tStateResp\x12,\n" + - "\x05state\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x05state\"\x95\x01\n" + - "\tResultReq\x12K\n" + - "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.ResultReq.OptionsR\aoptions\x1a;\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + - "\tpartition\x18\x02 \x01(\tR\tpartition\"<\n" + - "\n" + - "ResultResp\x12.\n" + - "\x06result\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x06result\"\xa0\x01\n" + - "\bResetReq\x12J\n" + - "\aoptions\x18\x01 \x01(\v20.event_store.client.projections.ResetReq.OptionsR\aoptions\x1aH\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12)\n" + - "\x10write_checkpoint\x18\x02 \x01(\bR\x0fwriteCheckpoint\"\v\n" + - "\tResetResp\"w\n" + - "\tEnableReq\x12K\n" + - "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.EnableReq.OptionsR\aoptions\x1a\x1d\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\"\f\n" + - "\n" + - "EnableResp\"\xa4\x01\n" + - "\n" + - "DisableReq\x12L\n" + - "\aoptions\x18\x01 \x01(\v22.event_store.client.projections.DisableReq.OptionsR\aoptions\x1aH\n" + - "\aOptions\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x12)\n" + - "\x10write_checkpoint\x18\x02 \x01(\bR\x0fwriteCheckpoint\"\r\n" + - "\vDisableResp2\xcb\a\n" + - "\vProjections\x12_\n" + - "\x06Create\x12).event_store.client.projections.CreateReq\x1a*.event_store.client.projections.CreateResp\x12_\n" + - "\x06Update\x12).event_store.client.projections.UpdateReq\x1a*.event_store.client.projections.UpdateResp\x12_\n" + - "\x06Delete\x12).event_store.client.projections.DeleteReq\x1a*.event_store.client.projections.DeleteResp\x12m\n" + - "\n" + - "Statistics\x12-.event_store.client.projections.StatisticsReq\x1a..event_store.client.projections.StatisticsResp0\x01\x12b\n" + - "\aDisable\x12*.event_store.client.projections.DisableReq\x1a+.event_store.client.projections.DisableResp\x12_\n" + - "\x06Enable\x12).event_store.client.projections.EnableReq\x1a*.event_store.client.projections.EnableResp\x12\\\n" + - "\x05Reset\x12(.event_store.client.projections.ResetReq\x1a).event_store.client.projections.ResetResp\x12\\\n" + - "\x05State\x12(.event_store.client.projections.StateReq\x1a).event_store.client.projections.StateResp\x12_\n" + - "\x06Result\x12).event_store.client.projections.ResultReq\x1a*.event_store.client.projections.ResultResp\x12H\n" + - "\x10RestartSubsystem\x12\x19.event_store.client.Empty\x1a\x19.event_store.client.EmptyB\x80\x01\n" + - ")com.eventstore.dbclient.proto.projectionsZSgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/projectionsb\x06proto3" - -var ( - file_kurrentdb_protocols_v1_projections_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_projections_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v1_projections_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_projections_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_projections_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_projections_proto_rawDesc), len(file_kurrentdb_protocols_v1_projections_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v1_projections_proto_rawDescData -} - -var file_kurrentdb_protocols_v1_projections_proto_msgTypes = make([]protoimpl.MessageInfo, 32) -var file_kurrentdb_protocols_v1_projections_proto_goTypes = []any{ - (*CreateReq)(nil), // 0: event_store.client.projections.CreateReq - (*CreateResp)(nil), // 1: event_store.client.projections.CreateResp - (*UpdateReq)(nil), // 2: event_store.client.projections.UpdateReq - (*UpdateResp)(nil), // 3: event_store.client.projections.UpdateResp - (*DeleteReq)(nil), // 4: event_store.client.projections.DeleteReq - (*DeleteResp)(nil), // 5: event_store.client.projections.DeleteResp - (*StatisticsReq)(nil), // 6: event_store.client.projections.StatisticsReq - (*StatisticsResp)(nil), // 7: event_store.client.projections.StatisticsResp - (*StateReq)(nil), // 8: event_store.client.projections.StateReq - (*StateResp)(nil), // 9: event_store.client.projections.StateResp - (*ResultReq)(nil), // 10: event_store.client.projections.ResultReq - (*ResultResp)(nil), // 11: event_store.client.projections.ResultResp - (*ResetReq)(nil), // 12: event_store.client.projections.ResetReq - (*ResetResp)(nil), // 13: event_store.client.projections.ResetResp - (*EnableReq)(nil), // 14: event_store.client.projections.EnableReq - (*EnableResp)(nil), // 15: event_store.client.projections.EnableResp - (*DisableReq)(nil), // 16: event_store.client.projections.DisableReq - (*DisableResp)(nil), // 17: event_store.client.projections.DisableResp - (*CreateReq_Options)(nil), // 18: event_store.client.projections.CreateReq.Options - nil, // 19: event_store.client.projections.CreateReq.Options.PropertiesEntry - (*CreateReq_Options_Transient)(nil), // 20: event_store.client.projections.CreateReq.Options.Transient - (*CreateReq_Options_Continuous)(nil), // 21: event_store.client.projections.CreateReq.Options.Continuous - (*UpdateReq_Options)(nil), // 22: event_store.client.projections.UpdateReq.Options - nil, // 23: event_store.client.projections.UpdateReq.Options.PropertiesEntry - (*DeleteReq_Options)(nil), // 24: event_store.client.projections.DeleteReq.Options - (*StatisticsReq_Options)(nil), // 25: event_store.client.projections.StatisticsReq.Options - (*StatisticsResp_Details)(nil), // 26: event_store.client.projections.StatisticsResp.Details - (*StateReq_Options)(nil), // 27: event_store.client.projections.StateReq.Options - (*ResultReq_Options)(nil), // 28: event_store.client.projections.ResultReq.Options - (*ResetReq_Options)(nil), // 29: event_store.client.projections.ResetReq.Options - (*EnableReq_Options)(nil), // 30: event_store.client.projections.EnableReq.Options - (*DisableReq_Options)(nil), // 31: event_store.client.projections.DisableReq.Options - (*structpb.Value)(nil), // 32: google.protobuf.Value - (*shared.Empty)(nil), // 33: event_store.client.Empty -} -var file_kurrentdb_protocols_v1_projections_proto_depIdxs = []int32{ - 18, // 0: event_store.client.projections.CreateReq.options:type_name -> event_store.client.projections.CreateReq.Options - 22, // 1: event_store.client.projections.UpdateReq.options:type_name -> event_store.client.projections.UpdateReq.Options - 24, // 2: event_store.client.projections.DeleteReq.options:type_name -> event_store.client.projections.DeleteReq.Options - 25, // 3: event_store.client.projections.StatisticsReq.options:type_name -> event_store.client.projections.StatisticsReq.Options - 26, // 4: event_store.client.projections.StatisticsResp.details:type_name -> event_store.client.projections.StatisticsResp.Details - 27, // 5: event_store.client.projections.StateReq.options:type_name -> event_store.client.projections.StateReq.Options - 32, // 6: event_store.client.projections.StateResp.state:type_name -> google.protobuf.Value - 28, // 7: event_store.client.projections.ResultReq.options:type_name -> event_store.client.projections.ResultReq.Options - 32, // 8: event_store.client.projections.ResultResp.result:type_name -> google.protobuf.Value - 29, // 9: event_store.client.projections.ResetReq.options:type_name -> event_store.client.projections.ResetReq.Options - 30, // 10: event_store.client.projections.EnableReq.options:type_name -> event_store.client.projections.EnableReq.Options - 31, // 11: event_store.client.projections.DisableReq.options:type_name -> event_store.client.projections.DisableReq.Options - 33, // 12: event_store.client.projections.CreateReq.Options.one_time:type_name -> event_store.client.Empty - 20, // 13: event_store.client.projections.CreateReq.Options.transient:type_name -> event_store.client.projections.CreateReq.Options.Transient - 21, // 14: event_store.client.projections.CreateReq.Options.continuous:type_name -> event_store.client.projections.CreateReq.Options.Continuous - 19, // 15: event_store.client.projections.CreateReq.Options.properties:type_name -> event_store.client.projections.CreateReq.Options.PropertiesEntry - 32, // 16: event_store.client.projections.CreateReq.Options.PropertiesEntry.value:type_name -> google.protobuf.Value - 33, // 17: event_store.client.projections.UpdateReq.Options.no_emit_options:type_name -> event_store.client.Empty - 23, // 18: event_store.client.projections.UpdateReq.Options.properties:type_name -> event_store.client.projections.UpdateReq.Options.PropertiesEntry - 32, // 19: event_store.client.projections.UpdateReq.Options.PropertiesEntry.value:type_name -> google.protobuf.Value - 33, // 20: event_store.client.projections.StatisticsReq.Options.all:type_name -> event_store.client.Empty - 33, // 21: event_store.client.projections.StatisticsReq.Options.transient:type_name -> event_store.client.Empty - 33, // 22: event_store.client.projections.StatisticsReq.Options.continuous:type_name -> event_store.client.Empty - 33, // 23: event_store.client.projections.StatisticsReq.Options.one_time:type_name -> event_store.client.Empty - 0, // 24: event_store.client.projections.Projections.Create:input_type -> event_store.client.projections.CreateReq - 2, // 25: event_store.client.projections.Projections.Update:input_type -> event_store.client.projections.UpdateReq - 4, // 26: event_store.client.projections.Projections.Delete:input_type -> event_store.client.projections.DeleteReq - 6, // 27: event_store.client.projections.Projections.Statistics:input_type -> event_store.client.projections.StatisticsReq - 16, // 28: event_store.client.projections.Projections.Disable:input_type -> event_store.client.projections.DisableReq - 14, // 29: event_store.client.projections.Projections.Enable:input_type -> event_store.client.projections.EnableReq - 12, // 30: event_store.client.projections.Projections.Reset:input_type -> event_store.client.projections.ResetReq - 8, // 31: event_store.client.projections.Projections.State:input_type -> event_store.client.projections.StateReq - 10, // 32: event_store.client.projections.Projections.Result:input_type -> event_store.client.projections.ResultReq - 33, // 33: event_store.client.projections.Projections.RestartSubsystem:input_type -> event_store.client.Empty - 1, // 34: event_store.client.projections.Projections.Create:output_type -> event_store.client.projections.CreateResp - 3, // 35: event_store.client.projections.Projections.Update:output_type -> event_store.client.projections.UpdateResp - 5, // 36: event_store.client.projections.Projections.Delete:output_type -> event_store.client.projections.DeleteResp - 7, // 37: event_store.client.projections.Projections.Statistics:output_type -> event_store.client.projections.StatisticsResp - 17, // 38: event_store.client.projections.Projections.Disable:output_type -> event_store.client.projections.DisableResp - 15, // 39: event_store.client.projections.Projections.Enable:output_type -> event_store.client.projections.EnableResp - 13, // 40: event_store.client.projections.Projections.Reset:output_type -> event_store.client.projections.ResetResp - 9, // 41: event_store.client.projections.Projections.State:output_type -> event_store.client.projections.StateResp - 11, // 42: event_store.client.projections.Projections.Result:output_type -> event_store.client.projections.ResultResp - 33, // 43: event_store.client.projections.Projections.RestartSubsystem:output_type -> event_store.client.Empty - 34, // [34:44] is the sub-list for method output_type - 24, // [24:34] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v1_projections_proto_init() } -func file_kurrentdb_protocols_v1_projections_proto_init() { - if File_kurrentdb_protocols_v1_projections_proto != nil { - return - } - file_kurrentdb_protocols_v1_projections_proto_msgTypes[18].OneofWrappers = []any{ - (*CreateReq_Options_OneTime)(nil), - (*CreateReq_Options_Transient_)(nil), - (*CreateReq_Options_Continuous_)(nil), - } - file_kurrentdb_protocols_v1_projections_proto_msgTypes[22].OneofWrappers = []any{ - (*UpdateReq_Options_EmitEnabled)(nil), - (*UpdateReq_Options_NoEmitOptions)(nil), - } - file_kurrentdb_protocols_v1_projections_proto_msgTypes[25].OneofWrappers = []any{ - (*StatisticsReq_Options_Name)(nil), - (*StatisticsReq_Options_All)(nil), - (*StatisticsReq_Options_Transient)(nil), - (*StatisticsReq_Options_Continuous)(nil), - (*StatisticsReq_Options_OneTime)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_projections_proto_rawDesc), len(file_kurrentdb_protocols_v1_projections_proto_rawDesc)), - NumEnums: 0, - NumMessages: 32, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_kurrentdb_protocols_v1_projections_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_projections_proto_depIdxs, - MessageInfos: file_kurrentdb_protocols_v1_projections_proto_msgTypes, - }.Build() - File_kurrentdb_protocols_v1_projections_proto = out.File - file_kurrentdb_protocols_v1_projections_proto_goTypes = nil - file_kurrentdb_protocols_v1_projections_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v1/serverfeatures.proto b/protos/kurrentdb/protocols/v1/serverfeatures.proto deleted file mode 100644 index 085c73a..0000000 --- a/protos/kurrentdb/protocols/v1/serverfeatures.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; -package event_store.client.server_features; -option java_package = "com.eventstore.dbclient.proto.serverfeatures"; -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/serverfeatures"; -import "kurrentdb/protocols/v1/shared.proto"; - -service ServerFeatures { - rpc GetSupportedMethods (event_store.client.Empty) returns (SupportedMethods); -} - -message SupportedMethods { - repeated SupportedMethod methods = 1; - string event_store_server_version = 2; -} - -message SupportedMethod { - string method_name = 1; - string service_name = 2; - repeated string features = 3; -} \ No newline at end of file diff --git a/protos/kurrentdb/protocols/v1/status/status.pb.go b/protos/kurrentdb/protocols/v1/status/status.pb.go deleted file mode 100644 index f826269..0000000 --- a/protos/kurrentdb/protocols/v1/status/status.pb.go +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/status.proto - -package status - -import ( - code "google.golang.org/genproto/googleapis/rpc/code" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - anypb "google.golang.org/protobuf/types/known/anypb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// The `Status` type defines a logical error model that is suitable for -// different programming environments, including REST APIs and RPC APIs. It is -// used by [gRPC](https://github.com/grpc). Each `Status` message contains -// three pieces of data: error code, error message, and error details. -// -// You can find out more about this error model and how to work with it in the -// [API Design Guide](https://cloud.google.com/apis/design/errors). -type Status struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. - Code code.Code `protobuf:"varint,1,opt,name=code,proto3,enum=google.rpc.Code" json:"code,omitempty"` - // A developer-facing error message, which should be in English. Any - // user-facing error message should be localized and sent in the - // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - // A list of messages that carry the error details. There is a common set of - // message types for APIs to use. - Details *anypb.Any `protobuf:"bytes,3,opt,name=details,proto3" json:"details,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Status) Reset() { - *x = Status{} - mi := &file_kurrentdb_protocols_v1_status_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Status) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Status) ProtoMessage() {} - -func (x *Status) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_status_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Status.ProtoReflect.Descriptor instead. -func (*Status) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_status_proto_rawDescGZIP(), []int{0} -} - -func (x *Status) GetCode() code.Code { - if x != nil { - return x.Code - } - return code.Code(0) -} - -func (x *Status) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *Status) GetDetails() *anypb.Any { - if x != nil { - return x.Details - } - return nil -} - -var File_kurrentdb_protocols_v1_status_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v1_status_proto_rawDesc = "" + - "\n" + - "#kurrentdb/protocols/v1/status.proto\x12\n" + - "google.rpc\x1a\x19google/protobuf/any.proto\x1a!kurrentdb/protocols/v1/code.proto\"x\n" + - "\x06Status\x12$\n" + - "\x04code\x18\x01 \x01(\x0e2\x10.google.rpc.CodeR\x04code\x12\x18\n" + - "\amessage\x18\x02 \x01(\tR\amessage\x12.\n" + - "\adetails\x18\x03 \x01(\v2\x14.google.protobuf.AnyR\adetailsBZ\n" + - "\x0ecom.google.rpcB\vStatusProtoP\x01Z0google.golang.org/genproto/googleapis/rpc/status\xf8\x01\x01\xa2\x02\x03RPCb\x06proto3" - -var ( - file_kurrentdb_protocols_v1_status_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_status_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v1_status_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_status_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_status_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_status_proto_rawDesc), len(file_kurrentdb_protocols_v1_status_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v1_status_proto_rawDescData -} - -var file_kurrentdb_protocols_v1_status_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_kurrentdb_protocols_v1_status_proto_goTypes = []any{ - (*Status)(nil), // 0: google.rpc.Status - (code.Code)(0), // 1: google.rpc.Code - (*anypb.Any)(nil), // 2: google.protobuf.Any -} -var file_kurrentdb_protocols_v1_status_proto_depIdxs = []int32{ - 1, // 0: google.rpc.Status.code:type_name -> google.rpc.Code - 2, // 1: google.rpc.Status.details:type_name -> google.protobuf.Any - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v1_status_proto_init() } -func file_kurrentdb_protocols_v1_status_proto_init() { - if File_kurrentdb_protocols_v1_status_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_status_proto_rawDesc), len(file_kurrentdb_protocols_v1_status_proto_rawDesc)), - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_kurrentdb_protocols_v1_status_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_status_proto_depIdxs, - MessageInfos: file_kurrentdb_protocols_v1_status_proto_msgTypes, - }.Build() - File_kurrentdb_protocols_v1_status_proto = out.File - file_kurrentdb_protocols_v1_status_proto_goTypes = nil - file_kurrentdb_protocols_v1_status_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v2/errors.proto b/protos/kurrentdb/protocols/v2/errors.proto deleted file mode 100644 index 6cabf17..0000000 --- a/protos/kurrentdb/protocols/v2/errors.proto +++ /dev/null @@ -1,152 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -syntax = "proto3"; - -package kurrent.rpc; - -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/errors"; - -import "kurrentdb/protocols/v2/rpc.proto"; - -// The canonical server error codes for the Kurrent Platform gRPC APIs. -// These errors represent common failure modes across all Kurrent services. -enum ServerError { - // Default value. This value is not used. - // An error code MUST always be set to a non-zero value. - // If an error code is not explicitly set, it MUST be treated as - // an internal server error (INTERNAL). - UNSPECIFIED = 0; - - // Authentication or authorization failure. - // The client lacks valid credentials or sufficient permissions to perform the requested operation. - // - // Common causes: - // - Missing or invalid authentication tokens - // - Insufficient permissions for the operation - // - Expired credentials - // - // Client action: Check credentials, verify permissions, and re-authenticate if necessary. - // Not retriable without fixing the underlying authorization issue. - SERVER_ERROR_ACCESS_DENIED = 1 [(kurrent.rpc.error) = { - status_code: PERMISSION_DENIED, - has_details: true - }]; - - // The request is malformed or contains invalid data. - // The server cannot process the request due to client error. - // - // Common causes: - // - Invalid field values (e.g., empty required fields, out-of-range numbers) - // - Malformed data formats - // - Validation failures - // - // Client action: Fix the request data and retry. - // Not retriable without modifying the request. - SERVER_ERROR_BAD_REQUEST = 2 [(kurrent.rpc.error) = { - status_code: INVALID_ARGUMENT, - has_details: true - }]; - - // The server is not the cluster leader and cannot process write operations. - // In a clustered deployment, only the leader node can accept write operations. - // - // Common causes: - // - Client connected to a follower node - // - Leader election in progress - // - Network partition - // - // Client action: Redirect the request to the leader node indicated in the error details. - // Retriable after redirecting to the correct leader node. - SERVER_ERROR_NOT_LEADER_NODE = 5 [(kurrent.rpc.error) = { - status_code: FAILED_PRECONDITION, - has_details: true - }]; - - // The operation did not complete within the configured timeout period. - // - // Common causes: - // - Slow disk I/O during writes - // - Cluster consensus delays - // - Network latency - // - Heavy server load - // - // Client action: Retry with exponential backoff. Consider increasing timeout values. - // Retriable - the operation may succeed on retry. - SERVER_ERROR_OPERATION_TIMEOUT = 6 [(kurrent.rpc.error) = { - status_code: DEADLINE_EXCEEDED - }]; - - // The server is starting up or shutting down and cannot process requests. - // - // Common causes: - // - Server is initializing (loading indexes, recovering state) - // - Server is performing graceful shutdown - // - Server is performing maintenance operations - // - // Client action: Retry with exponential backoff. Wait for server to become ready. - // Retriable - the server will become available after initialization completes. - SERVER_ERROR_SERVER_NOT_READY = 7 [(kurrent.rpc.error) = { - status_code: UNAVAILABLE - }]; - - // The server is temporarily overloaded and cannot accept more requests. - // This is a backpressure mechanism to prevent server overload. - // - // Common causes: - // - Too many concurrent requests - // - Resource exhaustion (CPU, memory, disk I/O) - // - Rate limiting triggered - // - // Client action: Retry with exponential backoff. Reduce request rate. - // Retriable - the server may accept requests after load decreases. - SERVER_ERROR_SERVER_OVERLOADED = 8 [(kurrent.rpc.error) = { - status_code: UNAVAILABLE - }]; - - // An internal server error occurred. - // This indicates a bug or unexpected condition in the server. - // - // Common causes: - // - Unhandled exceptions - // - Assertion failures - // - Corrupted internal state - // - Programming errors - // - // Client action: Report to server administrators with request details. - // May be retriable, but likely indicates a server-side issue requiring investigation. - SERVER_ERROR_SERVER_MALFUNCTION = 9 [(kurrent.rpc.error) = { - status_code: INTERNAL - }]; -} - -// Details for ACCESS_DENIED errors. -message AccessDeniedErrorDetails { - // The friendly name of the operation that was denied. - string operation = 1; - - // The username of the user who was denied access. - optional string username = 2; - - // The permission that was required for this operation. - optional string permission = 3; -} - -// Details for NOT_LEADER_NODE errors. -message NotLeaderNodeErrorDetails { - // Information about the current cluster leader node. - NodeInfo current_leader = 1; - - // Information about a cluster node. - message NodeInfo { - // The hostname or IP address of the node. - string host = 1; - - // The gRPC port of the node. - int32 port = 2; - - // The unique instance ID of the node. - optional string node_id = 3; - } -} diff --git a/protos/kurrentdb/protocols/v2/errors/errors.pb.go b/protos/kurrentdb/protocols/v2/errors/errors.pb.go deleted file mode 100644 index ada2a6f..0000000 --- a/protos/kurrentdb/protocols/v2/errors/errors.pb.go +++ /dev/null @@ -1,428 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v2/errors.proto - -package errors - -import ( - _ "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/rpc" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// The canonical server error codes for the Kurrent Platform gRPC APIs. -// These errors represent common failure modes across all Kurrent services. -type ServerError int32 - -const ( - // Default value. This value is not used. - // An error code MUST always be set to a non-zero value. - // If an error code is not explicitly set, it MUST be treated as - // an internal server error (INTERNAL). - ServerError_UNSPECIFIED ServerError = 0 - // Authentication or authorization failure. - // The client lacks valid credentials or sufficient permissions to perform the requested operation. - // - // Common causes: - // - Missing or invalid authentication tokens - // - Insufficient permissions for the operation - // - Expired credentials - // - // Client action: Check credentials, verify permissions, and re-authenticate if necessary. - // Not retriable without fixing the underlying authorization issue. - ServerError_SERVER_ERROR_ACCESS_DENIED ServerError = 1 - // The request is malformed or contains invalid data. - // The server cannot process the request due to client error. - // - // Common causes: - // - Invalid field values (e.g., empty required fields, out-of-range numbers) - // - Malformed data formats - // - Validation failures - // - // Client action: Fix the request data and retry. - // Not retriable without modifying the request. - ServerError_SERVER_ERROR_BAD_REQUEST ServerError = 2 - // The server is not the cluster leader and cannot process write operations. - // In a clustered deployment, only the leader node can accept write operations. - // - // Common causes: - // - Client connected to a follower node - // - Leader election in progress - // - Network partition - // - // Client action: Redirect the request to the leader node indicated in the error details. - // Retriable after redirecting to the correct leader node. - ServerError_SERVER_ERROR_NOT_LEADER_NODE ServerError = 5 - // The operation did not complete within the configured timeout period. - // - // Common causes: - // - Slow disk I/O during writes - // - Cluster consensus delays - // - Network latency - // - Heavy server load - // - // Client action: Retry with exponential backoff. Consider increasing timeout values. - // Retriable - the operation may succeed on retry. - ServerError_SERVER_ERROR_OPERATION_TIMEOUT ServerError = 6 - // The server is starting up or shutting down and cannot process requests. - // - // Common causes: - // - Server is initializing (loading indexes, recovering state) - // - Server is performing graceful shutdown - // - Server is performing maintenance operations - // - // Client action: Retry with exponential backoff. Wait for server to become ready. - // Retriable - the server will become available after initialization completes. - ServerError_SERVER_ERROR_SERVER_NOT_READY ServerError = 7 - // The server is temporarily overloaded and cannot accept more requests. - // This is a backpressure mechanism to prevent server overload. - // - // Common causes: - // - Too many concurrent requests - // - Resource exhaustion (CPU, memory, disk I/O) - // - Rate limiting triggered - // - // Client action: Retry with exponential backoff. Reduce request rate. - // Retriable - the server may accept requests after load decreases. - ServerError_SERVER_ERROR_SERVER_OVERLOADED ServerError = 8 - // An internal server error occurred. - // This indicates a bug or unexpected condition in the server. - // - // Common causes: - // - Unhandled exceptions - // - Assertion failures - // - Corrupted internal state - // - Programming errors - // - // Client action: Report to server administrators with request details. - // May be retriable, but likely indicates a server-side issue requiring investigation. - ServerError_SERVER_ERROR_SERVER_MALFUNCTION ServerError = 9 -) - -// Enum value maps for ServerError. -var ( - ServerError_name = map[int32]string{ - 0: "UNSPECIFIED", - 1: "SERVER_ERROR_ACCESS_DENIED", - 2: "SERVER_ERROR_BAD_REQUEST", - 5: "SERVER_ERROR_NOT_LEADER_NODE", - 6: "SERVER_ERROR_OPERATION_TIMEOUT", - 7: "SERVER_ERROR_SERVER_NOT_READY", - 8: "SERVER_ERROR_SERVER_OVERLOADED", - 9: "SERVER_ERROR_SERVER_MALFUNCTION", - } - ServerError_value = map[string]int32{ - "UNSPECIFIED": 0, - "SERVER_ERROR_ACCESS_DENIED": 1, - "SERVER_ERROR_BAD_REQUEST": 2, - "SERVER_ERROR_NOT_LEADER_NODE": 5, - "SERVER_ERROR_OPERATION_TIMEOUT": 6, - "SERVER_ERROR_SERVER_NOT_READY": 7, - "SERVER_ERROR_SERVER_OVERLOADED": 8, - "SERVER_ERROR_SERVER_MALFUNCTION": 9, - } -) - -func (x ServerError) Enum() *ServerError { - p := new(ServerError) - *p = x - return p -} - -func (x ServerError) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ServerError) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v2_errors_proto_enumTypes[0].Descriptor() -} - -func (ServerError) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v2_errors_proto_enumTypes[0] -} - -func (x ServerError) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ServerError.Descriptor instead. -func (ServerError) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_errors_proto_rawDescGZIP(), []int{0} -} - -// Details for ACCESS_DENIED errors. -type AccessDeniedErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The friendly name of the operation that was denied. - Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` - // The username of the user who was denied access. - Username *string `protobuf:"bytes,2,opt,name=username,proto3,oneof" json:"username,omitempty"` - // The permission that was required for this operation. - Permission *string `protobuf:"bytes,3,opt,name=permission,proto3,oneof" json:"permission,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AccessDeniedErrorDetails) Reset() { - *x = AccessDeniedErrorDetails{} - mi := &file_kurrentdb_protocols_v2_errors_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AccessDeniedErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AccessDeniedErrorDetails) ProtoMessage() {} - -func (x *AccessDeniedErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_errors_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AccessDeniedErrorDetails.ProtoReflect.Descriptor instead. -func (*AccessDeniedErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_errors_proto_rawDescGZIP(), []int{0} -} - -func (x *AccessDeniedErrorDetails) GetOperation() string { - if x != nil { - return x.Operation - } - return "" -} - -func (x *AccessDeniedErrorDetails) GetUsername() string { - if x != nil && x.Username != nil { - return *x.Username - } - return "" -} - -func (x *AccessDeniedErrorDetails) GetPermission() string { - if x != nil && x.Permission != nil { - return *x.Permission - } - return "" -} - -// Details for NOT_LEADER_NODE errors. -type NotLeaderNodeErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Information about the current cluster leader node. - CurrentLeader *NotLeaderNodeErrorDetails_NodeInfo `protobuf:"bytes,1,opt,name=current_leader,json=currentLeader,proto3" json:"current_leader,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotLeaderNodeErrorDetails) Reset() { - *x = NotLeaderNodeErrorDetails{} - mi := &file_kurrentdb_protocols_v2_errors_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotLeaderNodeErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotLeaderNodeErrorDetails) ProtoMessage() {} - -func (x *NotLeaderNodeErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_errors_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotLeaderNodeErrorDetails.ProtoReflect.Descriptor instead. -func (*NotLeaderNodeErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_errors_proto_rawDescGZIP(), []int{1} -} - -func (x *NotLeaderNodeErrorDetails) GetCurrentLeader() *NotLeaderNodeErrorDetails_NodeInfo { - if x != nil { - return x.CurrentLeader - } - return nil -} - -// Information about a cluster node. -type NotLeaderNodeErrorDetails_NodeInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The hostname or IP address of the node. - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - // The gRPC port of the node. - Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - // The unique instance ID of the node. - NodeId *string `protobuf:"bytes,3,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *NotLeaderNodeErrorDetails_NodeInfo) Reset() { - *x = NotLeaderNodeErrorDetails_NodeInfo{} - mi := &file_kurrentdb_protocols_v2_errors_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *NotLeaderNodeErrorDetails_NodeInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NotLeaderNodeErrorDetails_NodeInfo) ProtoMessage() {} - -func (x *NotLeaderNodeErrorDetails_NodeInfo) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_errors_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NotLeaderNodeErrorDetails_NodeInfo.ProtoReflect.Descriptor instead. -func (*NotLeaderNodeErrorDetails_NodeInfo) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_errors_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *NotLeaderNodeErrorDetails_NodeInfo) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *NotLeaderNodeErrorDetails_NodeInfo) GetPort() int32 { - if x != nil { - return x.Port - } - return 0 -} - -func (x *NotLeaderNodeErrorDetails_NodeInfo) GetNodeId() string { - if x != nil && x.NodeId != nil { - return *x.NodeId - } - return "" -} - -var File_kurrentdb_protocols_v2_errors_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v2_errors_proto_rawDesc = "" + - "\n" + - "#kurrentdb/protocols/v2/errors.proto\x12\vkurrent.rpc\x1a kurrentdb/protocols/v2/rpc.proto\"\x9a\x01\n" + - "\x18AccessDeniedErrorDetails\x12\x1c\n" + - "\toperation\x18\x01 \x01(\tR\toperation\x12\x1f\n" + - "\busername\x18\x02 \x01(\tH\x00R\busername\x88\x01\x01\x12#\n" + - "\n" + - "permission\x18\x03 \x01(\tH\x01R\n" + - "permission\x88\x01\x01B\v\n" + - "\t_usernameB\r\n" + - "\v_permission\"\xd1\x01\n" + - "\x19NotLeaderNodeErrorDetails\x12V\n" + - "\x0ecurrent_leader\x18\x01 \x01(\v2/.kurrent.rpc.NotLeaderNodeErrorDetails.NodeInfoR\rcurrentLeader\x1a\\\n" + - "\bNodeInfo\x12\x12\n" + - "\x04host\x18\x01 \x01(\tR\x04host\x12\x12\n" + - "\x04port\x18\x02 \x01(\x05R\x04port\x12\x1c\n" + - "\anode_id\x18\x03 \x01(\tH\x00R\x06nodeId\x88\x01\x01B\n" + - "\n" + - "\b_node_id*\xcc\x02\n" + - "\vServerError\x12\x0f\n" + - "\vUNSPECIFIED\x10\x00\x12(\n" + - "\x1aSERVER_ERROR_ACCESS_DENIED\x10\x01\x1a\b\x82\xb5\x18\x04\b\a\x10\x01\x12&\n" + - "\x18SERVER_ERROR_BAD_REQUEST\x10\x02\x1a\b\x82\xb5\x18\x04\b\x03\x10\x01\x12*\n" + - "\x1cSERVER_ERROR_NOT_LEADER_NODE\x10\x05\x1a\b\x82\xb5\x18\x04\b\t\x10\x01\x12*\n" + - "\x1eSERVER_ERROR_OPERATION_TIMEOUT\x10\x06\x1a\x06\x82\xb5\x18\x02\b\x04\x12)\n" + - "\x1dSERVER_ERROR_SERVER_NOT_READY\x10\a\x1a\x06\x82\xb5\x18\x02\b\x0e\x12*\n" + - "\x1eSERVER_ERROR_SERVER_OVERLOADED\x10\b\x1a\x06\x82\xb5\x18\x02\b\x0e\x12+\n" + - "\x1fSERVER_ERROR_SERVER_MALFUNCTION\x10\t\x1a\x06\x82\xb5\x18\x02\b\rBPZNgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/errorsb\x06proto3" - -var ( - file_kurrentdb_protocols_v2_errors_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v2_errors_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v2_errors_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v2_errors_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v2_errors_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_errors_proto_rawDesc), len(file_kurrentdb_protocols_v2_errors_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v2_errors_proto_rawDescData -} - -var file_kurrentdb_protocols_v2_errors_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kurrentdb_protocols_v2_errors_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_kurrentdb_protocols_v2_errors_proto_goTypes = []any{ - (ServerError)(0), // 0: kurrent.rpc.ServerError - (*AccessDeniedErrorDetails)(nil), // 1: kurrent.rpc.AccessDeniedErrorDetails - (*NotLeaderNodeErrorDetails)(nil), // 2: kurrent.rpc.NotLeaderNodeErrorDetails - (*NotLeaderNodeErrorDetails_NodeInfo)(nil), // 3: kurrent.rpc.NotLeaderNodeErrorDetails.NodeInfo -} -var file_kurrentdb_protocols_v2_errors_proto_depIdxs = []int32{ - 3, // 0: kurrent.rpc.NotLeaderNodeErrorDetails.current_leader:type_name -> kurrent.rpc.NotLeaderNodeErrorDetails.NodeInfo - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v2_errors_proto_init() } -func file_kurrentdb_protocols_v2_errors_proto_init() { - if File_kurrentdb_protocols_v2_errors_proto != nil { - return - } - file_kurrentdb_protocols_v2_errors_proto_msgTypes[0].OneofWrappers = []any{} - file_kurrentdb_protocols_v2_errors_proto_msgTypes[2].OneofWrappers = []any{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_errors_proto_rawDesc), len(file_kurrentdb_protocols_v2_errors_proto_rawDesc)), - NumEnums: 1, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_kurrentdb_protocols_v2_errors_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v2_errors_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v2_errors_proto_enumTypes, - MessageInfos: file_kurrentdb_protocols_v2_errors_proto_msgTypes, - }.Build() - File_kurrentdb_protocols_v2_errors_proto = out.File - file_kurrentdb_protocols_v2_errors_proto_goTypes = nil - file_kurrentdb_protocols_v2_errors_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v2/rpc.proto b/protos/kurrentdb/protocols/v2/rpc.proto deleted file mode 100644 index 923a0e5..0000000 --- a/protos/kurrentdb/protocols/v2/rpc.proto +++ /dev/null @@ -1,74 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -syntax = "proto3"; - -package kurrent.rpc; - -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/rpc"; - -import "google/protobuf/descriptor.proto"; -import "kurrentdb/protocols/v1/code.proto"; - -// ErrorMetadata provides actionable information for error enum values to enable automated -// code generation, documentation, and consistent error handling across the Kurrent platform. -// -// It was modeled to support a single details type per error code to simplify code generation and -// validation. If multiple detail types are needed for a single error code, consider defining -// separate error codes for each detail type. Or, use a union type (oneof) in the detail message -// to encapsulate multiple detail variants within a single detail message. -// -// More however DebugInfo and RetryInfo can and should be added to any error regardless of -// this setting, when applicable. -// -// This annotation is applied to enum values using the google.protobuf.EnumValueOptions -// extension mechanism. It enables: -// - Automatic gRPC status code mapping -// - Code generation for error handling utilities -// - Documentation generation -// - Type-safe error detail validation -// -// Usage Example: -// enum StreamErrorCode { -// REVISION_CONFLICT = 5 [(kurrent.rpc.error) = { -// status_code: FAILED_PRECONDITION, -// has_details: true -// }]; -// } -// -// See individual field documentation for conventions and defaults. -message ErrorMetadata { - // Maps the error to a standard gRPC status code for transport-level compatibility. - // This field is REQUIRED for every error annotation. - // - // Use standard gRPC status codes from `google.rpc.code`. - // - // Code generators use this to: - // - Map errors to gRPC status codes automatically - // - Generate HTTP status code mappings - // - Create transport-agnostic error handling - google.rpc.Code status_code = 1; - - // Indicates whether this error supports rich, typed detail messages. - // Defaults to false (simple message string only). - // The message type name must be derived from the enum name by convention. - // Mask: {EnumValue}ErrorDetails, {EnumValue}Error, {EnumValue} - // - // Examples: - // ACCESS_DENIED -> "AccessDeniedErrorDetails", "AccessDeniedError" or "AccessDenied" - // SERVER_NOT_READY -> "ServerNotReadyErrorDetails", "ServerNotReadyError" or "ServerNotReady" - // - // Code generators use the message type name to: - // - Validate that the detail message matches the expected type - // - Generate type-safe error handling code - // - Create accurate documentation - bool has_details = 2; -} - -// Extend EnumValueOptions to include error information for enum values -extend google.protobuf.EnumValueOptions { - // Provides additional information about error conditions for automated - // code generation and documentation. - optional ErrorMetadata error = 2113; -} diff --git a/protos/kurrentdb/protocols/v2/rpc/rpc.pb.go b/protos/kurrentdb/protocols/v2/rpc/rpc.pb.go deleted file mode 100644 index a59309e..0000000 --- a/protos/kurrentdb/protocols/v2/rpc/rpc.pb.go +++ /dev/null @@ -1,217 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v2/rpc.proto - -package rpc - -import ( - code "google.golang.org/genproto/googleapis/rpc/code" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - descriptorpb "google.golang.org/protobuf/types/descriptorpb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// ErrorMetadata provides actionable information for error enum values to enable automated -// code generation, documentation, and consistent error handling across the Kurrent platform. -// -// It was modeled to support a single details type per error code to simplify code generation and -// validation. If multiple detail types are needed for a single error code, consider defining -// separate error codes for each detail type. Or, use a union type (oneof) in the detail message -// to encapsulate multiple detail variants within a single detail message. -// -// More however DebugInfo and RetryInfo can and should be added to any error regardless of -// this setting, when applicable. -// -// This annotation is applied to enum values using the google.protobuf.EnumValueOptions -// extension mechanism. It enables: -// - Automatic gRPC status code mapping -// - Code generation for error handling utilities -// - Documentation generation -// - Type-safe error detail validation -// -// Usage Example: -// -// enum StreamErrorCode { -// REVISION_CONFLICT = 5 [(kurrent.rpc.error) = { -// status_code: FAILED_PRECONDITION, -// has_details: true -// }]; -// } -// -// See individual field documentation for conventions and defaults. -type ErrorMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Maps the error to a standard gRPC status code for transport-level compatibility. - // This field is REQUIRED for every error annotation. - // - // Use standard gRPC status codes from `google.rpc.code`. - // - // Code generators use this to: - // - Map errors to gRPC status codes automatically - // - Generate HTTP status code mappings - // - Create transport-agnostic error handling - StatusCode code.Code `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3,enum=google.rpc.Code" json:"status_code,omitempty"` - // Indicates whether this error supports rich, typed detail messages. - // Defaults to false (simple message string only). - // The message type name must be derived from the enum name by convention. - // Mask: {EnumValue}ErrorDetails, {EnumValue}Error, {EnumValue} - // - // Examples: - // - // ACCESS_DENIED -> "AccessDeniedErrorDetails", "AccessDeniedError" or "AccessDenied" - // SERVER_NOT_READY -> "ServerNotReadyErrorDetails", "ServerNotReadyError" or "ServerNotReady" - // - // Code generators use the message type name to: - // - Validate that the detail message matches the expected type - // - Generate type-safe error handling code - // - Create accurate documentation - HasDetails bool `protobuf:"varint,2,opt,name=has_details,json=hasDetails,proto3" json:"has_details,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ErrorMetadata) Reset() { - *x = ErrorMetadata{} - mi := &file_kurrentdb_protocols_v2_rpc_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ErrorMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ErrorMetadata) ProtoMessage() {} - -func (x *ErrorMetadata) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_rpc_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ErrorMetadata.ProtoReflect.Descriptor instead. -func (*ErrorMetadata) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_rpc_proto_rawDescGZIP(), []int{0} -} - -func (x *ErrorMetadata) GetStatusCode() code.Code { - if x != nil { - return x.StatusCode - } - return code.Code(0) -} - -func (x *ErrorMetadata) GetHasDetails() bool { - if x != nil { - return x.HasDetails - } - return false -} - -var file_kurrentdb_protocols_v2_rpc_proto_extTypes = []protoimpl.ExtensionInfo{ - { - ExtendedType: (*descriptorpb.EnumValueOptions)(nil), - ExtensionType: (*ErrorMetadata)(nil), - Field: 50000, - Name: "kurrent.rpc.error", - Tag: "bytes,50000,opt,name=error", - Filename: "kurrentdb/protocols/v2/rpc.proto", - }, -} - -// Extension fields to descriptorpb.EnumValueOptions. -var ( - // Provides additional information about error conditions for automated - // code generation and documentation. - // - // optional kurrent.rpc.ErrorMetadata error = 50000; - E_Error = &file_kurrentdb_protocols_v2_rpc_proto_extTypes[0] -) - -var File_kurrentdb_protocols_v2_rpc_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v2_rpc_proto_rawDesc = "" + - "\n" + - " kurrentdb/protocols/v2/rpc.proto\x12\vkurrent.rpc\x1a google/protobuf/descriptor.proto\x1a!kurrentdb/protocols/v1/code.proto\"c\n" + - "\rErrorMetadata\x121\n" + - "\vstatus_code\x18\x01 \x01(\x0e2\x10.google.rpc.CodeR\n" + - "statusCode\x12\x1f\n" + - "\vhas_details\x18\x02 \x01(\bR\n" + - "hasDetails:X\n" + - "\x05error\x12!.google.protobuf.EnumValueOptions\x18І\x03 \x01(\v2\x1a.kurrent.rpc.ErrorMetadataR\x05error\x88\x01\x01BMZKgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/rpcb\x06proto3" - -var ( - file_kurrentdb_protocols_v2_rpc_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v2_rpc_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v2_rpc_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v2_rpc_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v2_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_rpc_proto_rawDesc), len(file_kurrentdb_protocols_v2_rpc_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v2_rpc_proto_rawDescData -} - -var file_kurrentdb_protocols_v2_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_kurrentdb_protocols_v2_rpc_proto_goTypes = []any{ - (*ErrorMetadata)(nil), // 0: kurrent.rpc.ErrorMetadata - (code.Code)(0), // 1: google.rpc.Code - (*descriptorpb.EnumValueOptions)(nil), // 2: google.protobuf.EnumValueOptions -} -var file_kurrentdb_protocols_v2_rpc_proto_depIdxs = []int32{ - 1, // 0: kurrent.rpc.ErrorMetadata.status_code:type_name -> google.rpc.Code - 2, // 1: kurrent.rpc.error:extendee -> google.protobuf.EnumValueOptions - 0, // 2: kurrent.rpc.error:type_name -> kurrent.rpc.ErrorMetadata - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 2, // [2:3] is the sub-list for extension type_name - 1, // [1:2] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v2_rpc_proto_init() } -func file_kurrentdb_protocols_v2_rpc_proto_init() { - if File_kurrentdb_protocols_v2_rpc_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_rpc_proto_rawDesc), len(file_kurrentdb_protocols_v2_rpc_proto_rawDesc)), - NumEnums: 0, - NumMessages: 1, - NumExtensions: 1, - NumServices: 0, - }, - GoTypes: file_kurrentdb_protocols_v2_rpc_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v2_rpc_proto_depIdxs, - MessageInfos: file_kurrentdb_protocols_v2_rpc_proto_msgTypes, - ExtensionInfos: file_kurrentdb_protocols_v2_rpc_proto_extTypes, - }.Build() - File_kurrentdb_protocols_v2_rpc_proto = out.File - file_kurrentdb_protocols_v2_rpc_proto_goTypes = nil - file_kurrentdb_protocols_v2_rpc_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v2/streams/errors.proto b/protos/kurrentdb/protocols/v2/streams/errors.proto deleted file mode 100644 index 5f602e6..0000000 --- a/protos/kurrentdb/protocols/v2/streams/errors.proto +++ /dev/null @@ -1,260 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -syntax = "proto3"; - -package kurrentdb.protocol.v2.streams.errors; - -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/streams"; - -import "kurrentdb/protocols/v2/rpc.proto"; - -// Error codes specific to the Streams API. -// These errors represent failure modes when working with streams of records. -enum StreamsError { - // Default value. This value is not used. - // An error code MUST always be set to a non-zero value. - // If an error code is not explicitly set, it MUST be treated as - // an internal server error (INTERNAL). - STREAMS_ERROR_UNSPECIFIED = 0; - - // The requested stream does not exist in the database. - // - // Common causes: - // - Stream name typo or incorrect stream identifier - // - Stream was never created (no events appended yet) - // - Stream was deleted and not yet recreated - // - // Client action: Verify the stream name is correct. Create the stream by appending to it. - // Recoverable by creating the stream first (append with NO_STREAM expected revision). - STREAMS_ERROR_STREAM_NOT_FOUND = 1 [(kurrent.rpc.error) = { - status_code: NOT_FOUND, - has_details: true, - }]; - - // The stream already exists when an operation expected it not to exist. - // - // Common causes: - // - Attempting to create a stream that already has events - // - Using NO_STREAM expected revision on an existing stream - // - Race condition with concurrent stream creation - // - // Client action: Use the existing stream or use a different expected revision. - // Recoverable by adjusting the expected revision or using the existing stream. - STREAMS_ERROR_STREAM_ALREADY_EXISTS = 2 [(kurrent.rpc.error) = { - status_code: ALREADY_EXISTS, - has_details: true - }]; - - // The stream has been soft deleted. - // Soft-deleted streams are hidden from stream lists but can be restored by appending to them. - // - // Common causes: - // - Stream was explicitly soft-deleted via delete operation - // - Attempting to read from a soft-deleted stream - // - // Client action: Restore the stream by appending new events, or accept that the stream is deleted. - // Recoverable by appending to the stream to restore it. - STREAMS_ERROR_STREAM_DELETED = 3 [(kurrent.rpc.error) = { - status_code: FAILED_PRECONDITION, - has_details: true - }]; - - // The stream has been tombstoned (permanently deleted). - // Tombstoned streams cannot be restored and will never accept new events. - // - // Common causes: - // - Stream was explicitly tombstoned via tombstone operation - // - Administrative deletion of sensitive data - // - Attempting to write to or read from a tombstoned stream - // - // Client action: Stream is permanently removed. Create a new stream with a different name if needed. - // Not recoverable - the stream cannot be restored. - STREAMS_ERROR_STREAM_TOMBSTONED = 4 [(kurrent.rpc.error) = { - status_code: FAILED_PRECONDITION, - has_details: true - }]; - - // The expected revision does not match the actual stream revision. - // This is an optimistic concurrency control failure. - // - // Common causes: - // - Another client modified the stream concurrently - // - Client has stale state about the stream revision - // - Race condition in distributed system - // - // Client action: Fetch the current stream revision and retry with the correct expected revision. - // Recoverable by reading the current state and retrying with proper optimistic concurrency control. - STREAMS_ERROR_STREAM_REVISION_CONFLICT = 5 [(kurrent.rpc.error) = { - status_code: FAILED_PRECONDITION, - has_details: true - }]; - - // A single record being appended exceeds the maximum allowed size. - // - // Common causes: - // - Record payload is too large (exceeds server's max record size configuration) - // - Excessive metadata in properties - // - Large binary data without chunking - // - // Client action: Reduce record size, split large payloads across multiple records, or increase server limits. - // Recoverable by reducing record size or adjusting server configuration. - STREAMS_ERROR_APPEND_RECORD_SIZE_EXCEEDED = 6 [(kurrent.rpc.error) = { - status_code: INVALID_ARGUMENT, - has_details: true - }]; - - // The total size of all records in a single append session exceeds the maximum allowed transaction size. - // - // Common causes: - // - Too many records in a single append session - // - Combined payload size exceeds server's max transaction size - // - Attempting to write very large batches - // - // Client action: Split the append into multiple smaller transactions. - // Recoverable by reducing the number of records per append session. - STREAMS_ERROR_APPEND_TRANSACTION_SIZE_EXCEEDED = 7 [(kurrent.rpc.error) = { - status_code: ABORTED, - has_details: true - }]; - - // The same stream appears multiple times in a single append session. - // This is currently not supported to prevent complexity with expected revisions and ordering. - // - // Common causes: - // - Accidentally appending to the same stream twice in one session - // - Application logic error in batch operations - // - // Client action: Remove duplicate streams from the append session or split into multiple sessions. - // Recoverable by restructuring the append session to reference each stream only once. - STREAMS_ERROR_STREAM_ALREADY_IN_APPEND_SESSION = 8 [(kurrent.rpc.error) = { - status_code: ABORTED, - has_details: true - }]; - - // An append session was started but no append requests were sent before completing the stream. - // - // Common causes: - // - Client completed the stream without sending any AppendRequest messages - // - Application logic error - // - // Client action: Ensure at least one AppendRequest is sent before completing the stream. - // Recoverable by properly implementing the append session protocol. - STREAMS_ERROR_APPEND_SESSION_NO_REQUESTS = 9 [(kurrent.rpc.error) = { - status_code: FAILED_PRECONDITION - }]; - - // One or more consistency checks failed during an AppendRecords operation. - // The transaction is aborted — no records are written. - // - // Common causes: - // - A stream state check found the stream at a different revision than expected - // - A stream referenced in a state check does not exist, was deleted, or was tombstoned - // - // Client action: Inspect the AppendConsistencyViolationErrorDetails to determine which - // checks failed and why, then correct the request or refresh local state and retry. - // Recoverable by reading the current state and resubmitting with updated checks. - STREAMS_ERROR_APPEND_CONSISTENCY_VIOLATION = 14 [(kurrent.rpc.error) = { - status_code: FAILED_PRECONDITION, - has_details: true - }]; -} - -// Details for STREAM_NOT_FOUND errors. -message StreamNotFoundErrorDetails { - // The name of the stream that was not found. - string stream = 1; -} - -// Details for STREAM_ALREADY_EXISTS errors. -message StreamAlreadyExistsErrorDetails { - // The name of the stream that already exists. - string stream = 1; -} - -// Details for STREAM_DELETED errors. -message StreamDeletedErrorDetails { - // The name of the stream that was deleted. - string stream = 1; -} - -// Details for STREAM_TOMBSTONED errors. -message StreamTombstonedErrorDetails { - // The name of the stream that was tombstoned. - string stream = 1; -} - -// Details for STREAM_REVISION_CONFLICT errors. -message StreamRevisionConflictErrorDetails { - // The name of the stream that had a revision conflict. - string stream = 1; - - // The expected revision that was provided in the append request. - sint64 expected_revision = 2; - - // The actual current revision of the stream. - sint64 actual_revision = 3; -} - -// Details for APPEND_RECORD_SIZE_EXCEEDED errors. -message AppendRecordSizeExceededErrorDetails { - // The name of the stream where the append was attempted. - string stream = 1; - - // The identifier of the record that exceeded the size limit. - string record_id = 2; - - // The actual size of the record in bytes. - int32 size = 3; - - // The maximum allowed size of a single record in bytes. - int32 max_size = 4; -} - -// Details for APPEND_TRANSACTION_SIZE_EXCEEDED errors. -message AppendTransactionSizeExceededErrorDetails { - // The actual size of the transaction in bytes. - int32 size = 1; - - // The maximum allowed size of an append transaction in bytes. - int32 max_size = 2; -} - -// Details for STREAM_ALREADY_IN_APPEND_SESSION errors. -message StreamAlreadyInAppendSessionErrorDetails { - // The name of the stream that appears multiple times. - string stream = 1; -} - -// Details for APPEND_CONSISTENCY_VIOLATION errors. -// -// Contains all consistency checks that were violated during the append operation. -// Only violated checks are included; satisfied checks are omitted. -message AppendConsistencyViolationErrorDetails { - // The consistency checks that were violated. - repeated ConsistencyViolation violations = 1; -} - -// Details for a single consistency check that was violated. -message ConsistencyViolation { - // Index of the check in the original consistency_checks list. - int32 check_index = 1; - - oneof type { - // The stream was not at the expected state. - StreamStateViolation stream_state = 2; - } - - // A stream state check was violated because the actual state did not match the expected state. - message StreamStateViolation { - // The name of the stream whose state was checked. - string stream = 1; - - // The expected state of the stream as specified in the consistency check. - sint64 expected_state = 2; - - // The actual state of the stream at the time the check was evaluated. - sint64 actual_state = 3; - } -} diff --git a/protos/kurrentdb/protocols/v2/streams/errors/errors.pb.go b/protos/kurrentdb/protocols/v2/streams/errors/errors.pb.go deleted file mode 100644 index bc2946d..0000000 --- a/protos/kurrentdb/protocols/v2/streams/errors/errors.pb.go +++ /dev/null @@ -1,931 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc v5.26.0 -// source: kurrentdb/protocols/v2/streams/errors.proto - -package streams - -import ( - _ "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/rpc" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Error codes specific to the Streams API. -// These errors represent failure modes when working with streams of records. -type StreamsError int32 - -const ( - // Default value. This value is not used. - // An error code MUST always be set to a non-zero value. - // If an error code is not explicitly set, it MUST be treated as - // an internal server error (INTERNAL). - StreamsError_STREAMS_ERROR_UNSPECIFIED StreamsError = 0 - // The requested stream does not exist in the database. - // - // Common causes: - // - Stream name typo or incorrect stream identifier - // - Stream was never created (no events appended yet) - // - Stream was deleted and not yet recreated - // - // Client action: Verify the stream name is correct. Create the stream by appending to it. - // Recoverable by creating the stream first (append with NO_STREAM expected revision). - StreamsError_STREAMS_ERROR_STREAM_NOT_FOUND StreamsError = 1 - // The stream already exists when an operation expected it not to exist. - // - // Common causes: - // - Attempting to create a stream that already has events - // - Using NO_STREAM expected revision on an existing stream - // - Race condition with concurrent stream creation - // - // Client action: Use the existing stream or use a different expected revision. - // Recoverable by adjusting the expected revision or using the existing stream. - StreamsError_STREAMS_ERROR_STREAM_ALREADY_EXISTS StreamsError = 2 - // The stream has been soft deleted. - // Soft-deleted streams are hidden from stream lists but can be restored by appending to them. - // - // Common causes: - // - Stream was explicitly soft-deleted via delete operation - // - Attempting to read from a soft-deleted stream - // - // Client action: Restore the stream by appending new events, or accept that the stream is deleted. - // Recoverable by appending to the stream to restore it. - StreamsError_STREAMS_ERROR_STREAM_DELETED StreamsError = 3 - // The stream has been tombstoned (permanently deleted). - // Tombstoned streams cannot be restored and will never accept new events. - // - // Common causes: - // - Stream was explicitly tombstoned via tombstone operation - // - Administrative deletion of sensitive data - // - Attempting to write to or read from a tombstoned stream - // - // Client action: Stream is permanently removed. Create a new stream with a different name if needed. - // Not recoverable - the stream cannot be restored. - StreamsError_STREAMS_ERROR_STREAM_TOMBSTONED StreamsError = 4 - // The expected revision does not match the actual stream revision. - // This is an optimistic concurrency control failure. - // - // Common causes: - // - Another client modified the stream concurrently - // - Client has stale state about the stream revision - // - Race condition in distributed system - // - // Client action: Fetch the current stream revision and retry with the correct expected revision. - // Recoverable by reading the current state and retrying with proper optimistic concurrency control. - StreamsError_STREAMS_ERROR_STREAM_REVISION_CONFLICT StreamsError = 5 - // A single record being appended exceeds the maximum allowed size. - // - // Common causes: - // - Record payload is too large (exceeds server's max record size configuration) - // - Excessive metadata in properties - // - Large binary data without chunking - // - // Client action: Reduce record size, split large payloads across multiple records, or increase server limits. - // Recoverable by reducing record size or adjusting server configuration. - StreamsError_STREAMS_ERROR_APPEND_RECORD_SIZE_EXCEEDED StreamsError = 6 - // The total size of all records in a single append session exceeds the maximum allowed transaction size. - // - // Common causes: - // - Too many records in a single append session - // - Combined payload size exceeds server's max transaction size - // - Attempting to write very large batches - // - // Client action: Split the append into multiple smaller transactions. - // Recoverable by reducing the number of records per append session. - StreamsError_STREAMS_ERROR_APPEND_TRANSACTION_SIZE_EXCEEDED StreamsError = 7 - // The same stream appears multiple times in a single append session. - // This is currently not supported to prevent complexity with expected revisions and ordering. - // - // Common causes: - // - Accidentally appending to the same stream twice in one session - // - Application logic error in batch operations - // - // Client action: Remove duplicate streams from the append session or split into multiple sessions. - // Recoverable by restructuring the append session to reference each stream only once. - StreamsError_STREAMS_ERROR_STREAM_ALREADY_IN_APPEND_SESSION StreamsError = 8 - // An append session was started but no append requests were sent before completing the stream. - // - // Common causes: - // - Client completed the stream without sending any AppendRequest messages - // - Application logic error - // - // Client action: Ensure at least one AppendRequest is sent before completing the stream. - // Recoverable by properly implementing the append session protocol. - StreamsError_STREAMS_ERROR_APPEND_SESSION_NO_REQUESTS StreamsError = 9 - // One or more consistency checks failed during an AppendRecords operation. - // The transaction is aborted — no records are written. - // - // Common causes: - // - A stream state check found the stream at a different revision than expected - // - A stream referenced in a state check does not exist, was deleted, or was tombstoned - // - // Client action: Inspect the AppendConsistencyViolationErrorDetails to determine which - // checks failed and why, then correct the request or refresh local state and retry. - // Recoverable by reading the current state and resubmitting with updated checks. - StreamsError_STREAMS_ERROR_APPEND_CONSISTENCY_VIOLATION StreamsError = 14 -) - -// Enum value maps for StreamsError. -var ( - StreamsError_name = map[int32]string{ - 0: "STREAMS_ERROR_UNSPECIFIED", - 1: "STREAMS_ERROR_STREAM_NOT_FOUND", - 2: "STREAMS_ERROR_STREAM_ALREADY_EXISTS", - 3: "STREAMS_ERROR_STREAM_DELETED", - 4: "STREAMS_ERROR_STREAM_TOMBSTONED", - 5: "STREAMS_ERROR_STREAM_REVISION_CONFLICT", - 6: "STREAMS_ERROR_APPEND_RECORD_SIZE_EXCEEDED", - 7: "STREAMS_ERROR_APPEND_TRANSACTION_SIZE_EXCEEDED", - 8: "STREAMS_ERROR_STREAM_ALREADY_IN_APPEND_SESSION", - 9: "STREAMS_ERROR_APPEND_SESSION_NO_REQUESTS", - 14: "STREAMS_ERROR_APPEND_CONSISTENCY_VIOLATION", - } - StreamsError_value = map[string]int32{ - "STREAMS_ERROR_UNSPECIFIED": 0, - "STREAMS_ERROR_STREAM_NOT_FOUND": 1, - "STREAMS_ERROR_STREAM_ALREADY_EXISTS": 2, - "STREAMS_ERROR_STREAM_DELETED": 3, - "STREAMS_ERROR_STREAM_TOMBSTONED": 4, - "STREAMS_ERROR_STREAM_REVISION_CONFLICT": 5, - "STREAMS_ERROR_APPEND_RECORD_SIZE_EXCEEDED": 6, - "STREAMS_ERROR_APPEND_TRANSACTION_SIZE_EXCEEDED": 7, - "STREAMS_ERROR_STREAM_ALREADY_IN_APPEND_SESSION": 8, - "STREAMS_ERROR_APPEND_SESSION_NO_REQUESTS": 9, - "STREAMS_ERROR_APPEND_CONSISTENCY_VIOLATION": 14, - } -) - -func (x StreamsError) Enum() *StreamsError { - p := new(StreamsError) - *p = x - return p -} - -func (x StreamsError) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (StreamsError) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v2_streams_errors_proto_enumTypes[0].Descriptor() -} - -func (StreamsError) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v2_streams_errors_proto_enumTypes[0] -} - -func (x StreamsError) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use StreamsError.Descriptor instead. -func (StreamsError) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{0} -} - -// Details for STREAM_NOT_FOUND errors. -type StreamNotFoundErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream that was not found. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamNotFoundErrorDetails) Reset() { - *x = StreamNotFoundErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamNotFoundErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamNotFoundErrorDetails) ProtoMessage() {} - -func (x *StreamNotFoundErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamNotFoundErrorDetails.ProtoReflect.Descriptor instead. -func (*StreamNotFoundErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{0} -} - -func (x *StreamNotFoundErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -// Details for STREAM_ALREADY_EXISTS errors. -type StreamAlreadyExistsErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream that already exists. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamAlreadyExistsErrorDetails) Reset() { - *x = StreamAlreadyExistsErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamAlreadyExistsErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamAlreadyExistsErrorDetails) ProtoMessage() {} - -func (x *StreamAlreadyExistsErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamAlreadyExistsErrorDetails.ProtoReflect.Descriptor instead. -func (*StreamAlreadyExistsErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{1} -} - -func (x *StreamAlreadyExistsErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -// Details for STREAM_DELETED errors. -type StreamDeletedErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream that was deleted. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamDeletedErrorDetails) Reset() { - *x = StreamDeletedErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamDeletedErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamDeletedErrorDetails) ProtoMessage() {} - -func (x *StreamDeletedErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamDeletedErrorDetails.ProtoReflect.Descriptor instead. -func (*StreamDeletedErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{2} -} - -func (x *StreamDeletedErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -// Details for STREAM_TOMBSTONED errors. -type StreamTombstonedErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream that was tombstoned. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamTombstonedErrorDetails) Reset() { - *x = StreamTombstonedErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamTombstonedErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamTombstonedErrorDetails) ProtoMessage() {} - -func (x *StreamTombstonedErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamTombstonedErrorDetails.ProtoReflect.Descriptor instead. -func (*StreamTombstonedErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{3} -} - -func (x *StreamTombstonedErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -// Details for STREAM_REVISION_CONFLICT errors. -type StreamRevisionConflictErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream that had a revision conflict. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // The expected revision that was provided in the append request. - ExpectedRevision int64 `protobuf:"zigzag64,2,opt,name=expected_revision,json=expectedRevision,proto3" json:"expected_revision,omitempty"` - // The actual current revision of the stream. - ActualRevision int64 `protobuf:"zigzag64,3,opt,name=actual_revision,json=actualRevision,proto3" json:"actual_revision,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamRevisionConflictErrorDetails) Reset() { - *x = StreamRevisionConflictErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamRevisionConflictErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamRevisionConflictErrorDetails) ProtoMessage() {} - -func (x *StreamRevisionConflictErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamRevisionConflictErrorDetails.ProtoReflect.Descriptor instead. -func (*StreamRevisionConflictErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{4} -} - -func (x *StreamRevisionConflictErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *StreamRevisionConflictErrorDetails) GetExpectedRevision() int64 { - if x != nil { - return x.ExpectedRevision - } - return 0 -} - -func (x *StreamRevisionConflictErrorDetails) GetActualRevision() int64 { - if x != nil { - return x.ActualRevision - } - return 0 -} - -// Details for APPEND_RECORD_SIZE_EXCEEDED errors. -type AppendRecordSizeExceededErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream where the append was attempted. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // The identifier of the record that exceeded the size limit. - RecordId string `protobuf:"bytes,2,opt,name=record_id,json=recordId,proto3" json:"record_id,omitempty"` - // The actual size of the record in bytes. - Size int32 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` - // The maximum allowed size of a single record in bytes. - MaxSize int32 `protobuf:"varint,4,opt,name=max_size,json=maxSize,proto3" json:"max_size,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendRecordSizeExceededErrorDetails) Reset() { - *x = AppendRecordSizeExceededErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendRecordSizeExceededErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendRecordSizeExceededErrorDetails) ProtoMessage() {} - -func (x *AppendRecordSizeExceededErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendRecordSizeExceededErrorDetails.ProtoReflect.Descriptor instead. -func (*AppendRecordSizeExceededErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{5} -} - -func (x *AppendRecordSizeExceededErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *AppendRecordSizeExceededErrorDetails) GetRecordId() string { - if x != nil { - return x.RecordId - } - return "" -} - -func (x *AppendRecordSizeExceededErrorDetails) GetSize() int32 { - if x != nil { - return x.Size - } - return 0 -} - -func (x *AppendRecordSizeExceededErrorDetails) GetMaxSize() int32 { - if x != nil { - return x.MaxSize - } - return 0 -} - -// Details for APPEND_TRANSACTION_SIZE_EXCEEDED errors. -type AppendTransactionSizeExceededErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The actual size of the transaction in bytes. - Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` - // The maximum allowed size of an append transaction in bytes. - MaxSize int32 `protobuf:"varint,2,opt,name=max_size,json=maxSize,proto3" json:"max_size,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendTransactionSizeExceededErrorDetails) Reset() { - *x = AppendTransactionSizeExceededErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendTransactionSizeExceededErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendTransactionSizeExceededErrorDetails) ProtoMessage() {} - -func (x *AppendTransactionSizeExceededErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendTransactionSizeExceededErrorDetails.ProtoReflect.Descriptor instead. -func (*AppendTransactionSizeExceededErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{6} -} - -func (x *AppendTransactionSizeExceededErrorDetails) GetSize() int32 { - if x != nil { - return x.Size - } - return 0 -} - -func (x *AppendTransactionSizeExceededErrorDetails) GetMaxSize() int32 { - if x != nil { - return x.MaxSize - } - return 0 -} - -// Details for STREAM_ALREADY_IN_APPEND_SESSION errors. -type StreamAlreadyInAppendSessionErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream that appears multiple times. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamAlreadyInAppendSessionErrorDetails) Reset() { - *x = StreamAlreadyInAppendSessionErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamAlreadyInAppendSessionErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamAlreadyInAppendSessionErrorDetails) ProtoMessage() {} - -func (x *StreamAlreadyInAppendSessionErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamAlreadyInAppendSessionErrorDetails.ProtoReflect.Descriptor instead. -func (*StreamAlreadyInAppendSessionErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{7} -} - -func (x *StreamAlreadyInAppendSessionErrorDetails) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -// Details for APPEND_CONSISTENCY_VIOLATION errors. -// -// Contains all consistency checks that were violated during the append operation. -// Only violated checks are included; satisfied checks are omitted. -type AppendConsistencyViolationErrorDetails struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The consistency checks that were violated. - Violations []*ConsistencyViolation `protobuf:"bytes,1,rep,name=violations,proto3" json:"violations,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendConsistencyViolationErrorDetails) Reset() { - *x = AppendConsistencyViolationErrorDetails{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendConsistencyViolationErrorDetails) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendConsistencyViolationErrorDetails) ProtoMessage() {} - -func (x *AppendConsistencyViolationErrorDetails) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendConsistencyViolationErrorDetails.ProtoReflect.Descriptor instead. -func (*AppendConsistencyViolationErrorDetails) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{8} -} - -func (x *AppendConsistencyViolationErrorDetails) GetViolations() []*ConsistencyViolation { - if x != nil { - return x.Violations - } - return nil -} - -// Details for a single consistency check that was violated. -type ConsistencyViolation struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Index of the check in the original consistency_checks list. - CheckIndex int32 `protobuf:"varint,1,opt,name=check_index,json=checkIndex,proto3" json:"check_index,omitempty"` - // Types that are valid to be assigned to Type: - // - // *ConsistencyViolation_StreamState - Type isConsistencyViolation_Type `protobuf_oneof:"type"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConsistencyViolation) Reset() { - *x = ConsistencyViolation{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConsistencyViolation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConsistencyViolation) ProtoMessage() {} - -func (x *ConsistencyViolation) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConsistencyViolation.ProtoReflect.Descriptor instead. -func (*ConsistencyViolation) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{9} -} - -func (x *ConsistencyViolation) GetCheckIndex() int32 { - if x != nil { - return x.CheckIndex - } - return 0 -} - -func (x *ConsistencyViolation) GetType() isConsistencyViolation_Type { - if x != nil { - return x.Type - } - return nil -} - -func (x *ConsistencyViolation) GetStreamState() *ConsistencyViolation_StreamStateViolation { - if x != nil { - if x, ok := x.Type.(*ConsistencyViolation_StreamState); ok { - return x.StreamState - } - } - return nil -} - -type isConsistencyViolation_Type interface { - isConsistencyViolation_Type() -} - -type ConsistencyViolation_StreamState struct { - // The stream was not at the expected state. - StreamState *ConsistencyViolation_StreamStateViolation `protobuf:"bytes,2,opt,name=stream_state,json=streamState,proto3,oneof"` -} - -func (*ConsistencyViolation_StreamState) isConsistencyViolation_Type() {} - -// A stream state check was violated because the actual state did not match the expected state. -type ConsistencyViolation_StreamStateViolation struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The name of the stream whose state was checked. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // The expected state of the stream as specified in the consistency check. - ExpectedState int64 `protobuf:"zigzag64,2,opt,name=expected_state,json=expectedState,proto3" json:"expected_state,omitempty"` - // The actual state of the stream at the time the check was evaluated. - ActualState int64 `protobuf:"zigzag64,3,opt,name=actual_state,json=actualState,proto3" json:"actual_state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConsistencyViolation_StreamStateViolation) Reset() { - *x = ConsistencyViolation_StreamStateViolation{} - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConsistencyViolation_StreamStateViolation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConsistencyViolation_StreamStateViolation) ProtoMessage() {} - -func (x *ConsistencyViolation_StreamStateViolation) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConsistencyViolation_StreamStateViolation.ProtoReflect.Descriptor instead. -func (*ConsistencyViolation_StreamStateViolation) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP(), []int{9, 0} -} - -func (x *ConsistencyViolation_StreamStateViolation) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *ConsistencyViolation_StreamStateViolation) GetExpectedState() int64 { - if x != nil { - return x.ExpectedState - } - return 0 -} - -func (x *ConsistencyViolation_StreamStateViolation) GetActualState() int64 { - if x != nil { - return x.ActualState - } - return 0 -} - -var File_kurrentdb_protocols_v2_streams_errors_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v2_streams_errors_proto_rawDesc = "" + - "\n" + - "+kurrentdb/protocols/v2/streams/errors.proto\x12$kurrentdb.protocol.v2.streams.errors\x1a kurrentdb/protocols/v2/rpc.proto\"4\n" + - "\x1aStreamNotFoundErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\"9\n" + - "\x1fStreamAlreadyExistsErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\"3\n" + - "\x19StreamDeletedErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\"6\n" + - "\x1cStreamTombstonedErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\"\x92\x01\n" + - "\"StreamRevisionConflictErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12+\n" + - "\x11expected_revision\x18\x02 \x01(\x12R\x10expectedRevision\x12'\n" + - "\x0factual_revision\x18\x03 \x01(\x12R\x0eactualRevision\"\x8a\x01\n" + - "$AppendRecordSizeExceededErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12\x1b\n" + - "\trecord_id\x18\x02 \x01(\tR\brecordId\x12\x12\n" + - "\x04size\x18\x03 \x01(\x05R\x04size\x12\x19\n" + - "\bmax_size\x18\x04 \x01(\x05R\amaxSize\"Z\n" + - ")AppendTransactionSizeExceededErrorDetails\x12\x12\n" + - "\x04size\x18\x01 \x01(\x05R\x04size\x12\x19\n" + - "\bmax_size\x18\x02 \x01(\x05R\amaxSize\"B\n" + - "(StreamAlreadyInAppendSessionErrorDetails\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\"\x84\x01\n" + - "&AppendConsistencyViolationErrorDetails\x12Z\n" + - "\n" + - "violations\x18\x01 \x03(\v2:.kurrentdb.protocol.v2.streams.errors.ConsistencyViolationR\n" + - "violations\"\xaf\x02\n" + - "\x14ConsistencyViolation\x12\x1f\n" + - "\vcheck_index\x18\x01 \x01(\x05R\n" + - "checkIndex\x12t\n" + - "\fstream_state\x18\x02 \x01(\v2O.kurrentdb.protocol.v2.streams.errors.ConsistencyViolation.StreamStateViolationH\x00R\vstreamState\x1ax\n" + - "\x14StreamStateViolation\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12%\n" + - "\x0eexpected_state\x18\x02 \x01(\x12R\rexpectedState\x12!\n" + - "\factual_state\x18\x03 \x01(\x12R\vactualStateB\x06\n" + - "\x04type*\xc4\x04\n" + - "\fStreamsError\x12\x1d\n" + - "\x19STREAMS_ERROR_UNSPECIFIED\x10\x00\x12,\n" + - "\x1eSTREAMS_ERROR_STREAM_NOT_FOUND\x10\x01\x1a\b\x8a\x84\x01\x04\b\x05\x10\x01\x121\n" + - "#STREAMS_ERROR_STREAM_ALREADY_EXISTS\x10\x02\x1a\b\x8a\x84\x01\x04\b\x06\x10\x01\x12*\n" + - "\x1cSTREAMS_ERROR_STREAM_DELETED\x10\x03\x1a\b\x8a\x84\x01\x04\b\t\x10\x01\x12-\n" + - "\x1fSTREAMS_ERROR_STREAM_TOMBSTONED\x10\x04\x1a\b\x8a\x84\x01\x04\b\t\x10\x01\x124\n" + - "&STREAMS_ERROR_STREAM_REVISION_CONFLICT\x10\x05\x1a\b\x8a\x84\x01\x04\b\t\x10\x01\x127\n" + - ")STREAMS_ERROR_APPEND_RECORD_SIZE_EXCEEDED\x10\x06\x1a\b\x8a\x84\x01\x04\b\x03\x10\x01\x12<\n" + - ".STREAMS_ERROR_APPEND_TRANSACTION_SIZE_EXCEEDED\x10\a\x1a\b\x8a\x84\x01\x04\b\n" + - "\x10\x01\x12<\n" + - ".STREAMS_ERROR_STREAM_ALREADY_IN_APPEND_SESSION\x10\b\x1a\b\x8a\x84\x01\x04\b\n" + - "\x10\x01\x124\n" + - "(STREAMS_ERROR_APPEND_SESSION_NO_REQUESTS\x10\t\x1a\x06\x8a\x84\x01\x02\b\t\x128\n" + - "*STREAMS_ERROR_APPEND_CONSISTENCY_VIOLATION\x10\x0e\x1a\b\x8a\x84\x01\x04\b\t\x10\x01BQZOgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/streamsb\x06proto3" - -var ( - file_kurrentdb_protocols_v2_streams_errors_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v2_streams_errors_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v2_streams_errors_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v2_streams_errors_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v2_streams_errors_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_streams_errors_proto_rawDesc), len(file_kurrentdb_protocols_v2_streams_errors_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v2_streams_errors_proto_rawDescData -} - -var file_kurrentdb_protocols_v2_streams_errors_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_kurrentdb_protocols_v2_streams_errors_proto_goTypes = []any{ - (StreamsError)(0), // 0: kurrentdb.protocol.v2.streams.errors.StreamsError - (*StreamNotFoundErrorDetails)(nil), // 1: kurrentdb.protocol.v2.streams.errors.StreamNotFoundErrorDetails - (*StreamAlreadyExistsErrorDetails)(nil), // 2: kurrentdb.protocol.v2.streams.errors.StreamAlreadyExistsErrorDetails - (*StreamDeletedErrorDetails)(nil), // 3: kurrentdb.protocol.v2.streams.errors.StreamDeletedErrorDetails - (*StreamTombstonedErrorDetails)(nil), // 4: kurrentdb.protocol.v2.streams.errors.StreamTombstonedErrorDetails - (*StreamRevisionConflictErrorDetails)(nil), // 5: kurrentdb.protocol.v2.streams.errors.StreamRevisionConflictErrorDetails - (*AppendRecordSizeExceededErrorDetails)(nil), // 6: kurrentdb.protocol.v2.streams.errors.AppendRecordSizeExceededErrorDetails - (*AppendTransactionSizeExceededErrorDetails)(nil), // 7: kurrentdb.protocol.v2.streams.errors.AppendTransactionSizeExceededErrorDetails - (*StreamAlreadyInAppendSessionErrorDetails)(nil), // 8: kurrentdb.protocol.v2.streams.errors.StreamAlreadyInAppendSessionErrorDetails - (*AppendConsistencyViolationErrorDetails)(nil), // 9: kurrentdb.protocol.v2.streams.errors.AppendConsistencyViolationErrorDetails - (*ConsistencyViolation)(nil), // 10: kurrentdb.protocol.v2.streams.errors.ConsistencyViolation - (*ConsistencyViolation_StreamStateViolation)(nil), // 11: kurrentdb.protocol.v2.streams.errors.ConsistencyViolation.StreamStateViolation -} -var file_kurrentdb_protocols_v2_streams_errors_proto_depIdxs = []int32{ - 10, // 0: kurrentdb.protocol.v2.streams.errors.AppendConsistencyViolationErrorDetails.violations:type_name -> kurrentdb.protocol.v2.streams.errors.ConsistencyViolation - 11, // 1: kurrentdb.protocol.v2.streams.errors.ConsistencyViolation.stream_state:type_name -> kurrentdb.protocol.v2.streams.errors.ConsistencyViolation.StreamStateViolation - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v2_streams_errors_proto_init() } -func file_kurrentdb_protocols_v2_streams_errors_proto_init() { - if File_kurrentdb_protocols_v2_streams_errors_proto != nil { - return - } - file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes[9].OneofWrappers = []any{ - (*ConsistencyViolation_StreamState)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_streams_errors_proto_rawDesc), len(file_kurrentdb_protocols_v2_streams_errors_proto_rawDesc)), - NumEnums: 1, - NumMessages: 11, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_kurrentdb_protocols_v2_streams_errors_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v2_streams_errors_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v2_streams_errors_proto_enumTypes, - MessageInfos: file_kurrentdb_protocols_v2_streams_errors_proto_msgTypes, - }.Build() - File_kurrentdb_protocols_v2_streams_errors_proto = out.File - file_kurrentdb_protocols_v2_streams_errors_proto_goTypes = nil - file_kurrentdb_protocols_v2_streams_errors_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v2/streams/streams.proto b/protos/kurrentdb/protocols/v2/streams/streams.proto deleted file mode 100644 index 255c2e3..0000000 --- a/protos/kurrentdb/protocols/v2/streams/streams.proto +++ /dev/null @@ -1,240 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -syntax = "proto3"; - -package kurrentdb.protocol.v2.streams; - -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/streams"; - -import "google/protobuf/struct.proto"; - -service StreamsService { - // Appends records to multiple streams atomically within a single transaction. - // - // This is a client-streaming RPC where the client sends multiple AppendRequest messages - // (one per stream) and receives a single AppendSessionResponse upon commit. - // - // Guarantees: - // - Atomicity: All writes succeed or all fail together - // - Optimistic Concurrency: Expected revisions are validated for all streams before commit - // - Ordering: Records within each stream maintain send order - // - // Current Limitations: - // - Each stream can only appear once per session (no multiple appends to same stream) - // - // Example flow: - // 1. Client opens stream - // 2. Client sends AppendRequest for stream "orders" with 3 records - // 3. Client sends AppendRequest for stream "inventory" with 2 records - // 4. Client completes the stream - // 5. Server validates, commits, returns AppendSessionResponse with positions - rpc AppendSession(stream AppendRequest) returns (AppendSessionResponse); - - // Appends records to multiple streams atomically with cross-stream consistency checks. - // - // This is a unary RPC where the client sends all records and consistency checks - // in a single request and receives a single AppendRecordsResponse. - // - // Records can be interleaved across streams in any order and the global log preserves - // the exact sequence from the request. - // - // Consistency checks are decoupled from writes: a check can reference any stream, - // whether or not the request writes to it. This enables Dynamic Consistency Boundary - // (DCB) patterns where a decision depends on multiple streams but only produces - // events for a subset. - // - // Guarantees: - // - Atomicity: All writes succeed or all fail together - // - Ordering: Records maintain the exact send order in the global log - // - Cross-stream checks: Consistency checks can reference any stream - // - // On consistency check failure, no records are written and all failing checks - // are reported in the response so the client can refresh stale state in one round trip. - rpc AppendRecords(AppendRecordsRequest) returns (AppendRecordsResponse); -} - -// Represents the input for appending records to a specific stream. -message AppendRequest { - // The stream to append records to. - string stream = 1; - - // The records to append to the stream. - repeated AppendRecord records = 2; - - // The expected revision for optimistic concurrency control. - // Can be either: - // - A specific revision number (0, 1, 2, ...) - the stream must be at exactly this revision - // - An ExpectedRevisionConstants value (-4, -2, -1) for special semantics - // - // If omitted, defaults to EXPECTED_REVISION_CONSTANTS_ANY (-2). - optional sint64 expected_revision = 3; -} - -// Represents the outcome of an append operation. -message AppendResponse { - // The stream to which records were appended. - string stream = 1; - - // The actual/current revision of the stream after the append. - // This is the revision number of the last record written to this stream. - sint64 stream_revision = 2; - - // The position of the last appended record in the global log. - optional sint64 position = 3; -} - -message AppendSessionResponse { - // The results of each append request in the session. - repeated AppendResponse output = 1; - - // The global commit position of the last appended record in the session. - sint64 position = 2; -} - -// Represents the data format of the schema. -enum SchemaFormat { - // Default value, should not be used. - SCHEMA_FORMAT_UNSPECIFIED = 0; - SCHEMA_FORMAT_JSON = 1; - SCHEMA_FORMAT_PROTOBUF = 2; - SCHEMA_FORMAT_AVRO = 3; - SCHEMA_FORMAT_BYTES = 4; -} - -// Schema information for record validation and interpretation. -message SchemaInfo { - // The format of the data payload. - // Determines how the bytes in AppendRecord.data should be interpreted. - SchemaFormat format = 1; - - // The schema name (replaces the legacy "event type" concept). - // Identifies what kind of data this record contains. - // - // Common naming formats: - // - Kebab-case: "order-placed", "customer-registered" - // - URN format: "urn:kurrentdb:events:order-placed:v1" - // - Dotted namespace: "Teams.Player.V1", "Orders.OrderPlaced.V2" - // - Reverse domain: "com.acme.orders.placed" - string name = 2; - - // The identifier of the specific version of the schema that the record payload - // conforms to. This should match a registered schema version in the system. - // Not necessary when not enforcing schema validation. - optional string id = 3; -} - -// Record to be appended to a stream. -message AppendRecord { - // Unique identifier for this record (must be a valid UUID/GUID). - // If not provided, the server will generate a new one. - optional string record_id = 1; - - // A collection of properties providing additional information about the - // record. Can contain user-defined or system propreties. - // System keys will be prefixed with "$" (e.g., "$timestamp"). - // User-defined keys MUST NOT start with "$". - // - // Common examples: - // User metadata: - // - "user-id": "12345" - // - "tenant": "acme-corp" - // - "source": "mobile-app" - // - // System metadata (with $ prefix): - // - "$trace-id": "4bf92f3577b34da6a3ce929d0e0e4736" // OpenTelemetry trace ID - // - "$span-id": "00f067aa0ba902b7" // OpenTelemetry span ID - // - "$timestamp": "2025-01-15T10:30:00.000Z" // ISO 8601 timestamp - map properties = 2; - - // Schema information for this record. - SchemaInfo schema = 3; - - // The record payload as raw bytes. - // The format specified in SchemaInfo determines how to interpret these bytes. - bytes data = 4; - - // Target stream for this record. - // Required for AppendRecords (each record specifies its own stream). - // Ignored for AppendSession (the stream is specified in AppendRequest). - string stream = 5; -} - -// Constants for expected revision validation in optimistic concurrency control. -// These can be used in the expected_revision field, or you can specify an actual revision number. -enum ExpectedRevisionConstants { - // The stream must have exactly one event at revision 0. - // Used for scenarios requiring strict single-event semantics. - EXPECTED_REVISION_CONSTANTS_SINGLE_EVENT = 0; - - // The stream must not exist yet (first write to the stream). - // Fails if the stream already has events. - EXPECTED_REVISION_CONSTANTS_NO_STREAM = -1; - - // Accept any current state of the stream (no optimistic concurrency check). - // The write will succeed regardless of the stream's current revision. - EXPECTED_REVISION_CONSTANTS_ANY = -2; - - // The stream must exist (have at least one record). - // Fails if the stream doesn't exist yet. - EXPECTED_REVISION_CONSTANTS_EXISTS = -4; -} - -// Request to append records to one or more streams atomically. -// -// All records are committed in a single transaction. Each record specifies its -// target stream via AppendRecord.stream. Consistency checks are evaluated before -// any records are written. -message AppendRecordsRequest { - // The records to append. Records targeting the same stream maintain their - // order from this list. - repeated AppendRecord records = 1; - - // Optional consistency checks evaluated before commit. If any check fails, - // the entire transaction is aborted. - repeated ConsistencyCheck checks = 2; -} - -// Response from a successful AppendRecords operation. -// -// Contains the resulting revision for each stream that was written to and the -// global commit position of the transaction. -message AppendRecordsResponse { - // The resulting revision for each stream that received records. One entry per - // distinct stream written to, in no guaranteed order. - repeated StreamRevision revisions = 1; - - // The global commit position of the last record written in this transaction. - // Can be used for read-your-writes consistency or progress tracking. - sint64 position = 2; -} - -// A pre-commit condition that must hold true for the transaction to succeed. -// -// Consistency checks are evaluated atomically before any records are written. If -// any check is violated, the entire transaction is aborted. -message ConsistencyCheck { - oneof type { - // Check that a stream is at a specific revision or lifecycle state. - StreamStateCheck stream_state = 1; - } - - // Asserts a stream is at a specific revision or lifecycle state before commit. - message StreamStateCheck { - // The stream name. - string stream = 1; - - // The expected state of the stream (revision number or state constant). - sint64 expected_state = 2; - } -} - -// A specific revision of a stream. -message StreamRevision { - // Stream name. - string stream = 1; - - // Revision within the stream. - sint64 revision = 2; -} diff --git a/protos/kurrentdb/protocols/v2/streams/streams/streams.pb.go b/protos/kurrentdb/protocols/v2/streams/streams/streams.pb.go deleted file mode 100644 index 1958d8a..0000000 --- a/protos/kurrentdb/protocols/v2/streams/streams/streams.pb.go +++ /dev/null @@ -1,962 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc v5.26.0 -// source: kurrentdb/protocols/v2/streams/streams.proto - -package streams - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - structpb "google.golang.org/protobuf/types/known/structpb" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// Represents the data format of the schema. -type SchemaFormat int32 - -const ( - // Default value, should not be used. - SchemaFormat_SCHEMA_FORMAT_UNSPECIFIED SchemaFormat = 0 - SchemaFormat_SCHEMA_FORMAT_JSON SchemaFormat = 1 - SchemaFormat_SCHEMA_FORMAT_PROTOBUF SchemaFormat = 2 - SchemaFormat_SCHEMA_FORMAT_AVRO SchemaFormat = 3 - SchemaFormat_SCHEMA_FORMAT_BYTES SchemaFormat = 4 -) - -// Enum value maps for SchemaFormat. -var ( - SchemaFormat_name = map[int32]string{ - 0: "SCHEMA_FORMAT_UNSPECIFIED", - 1: "SCHEMA_FORMAT_JSON", - 2: "SCHEMA_FORMAT_PROTOBUF", - 3: "SCHEMA_FORMAT_AVRO", - 4: "SCHEMA_FORMAT_BYTES", - } - SchemaFormat_value = map[string]int32{ - "SCHEMA_FORMAT_UNSPECIFIED": 0, - "SCHEMA_FORMAT_JSON": 1, - "SCHEMA_FORMAT_PROTOBUF": 2, - "SCHEMA_FORMAT_AVRO": 3, - "SCHEMA_FORMAT_BYTES": 4, - } -) - -func (x SchemaFormat) Enum() *SchemaFormat { - p := new(SchemaFormat) - *p = x - return p -} - -func (x SchemaFormat) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SchemaFormat) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v2_streams_streams_proto_enumTypes[0].Descriptor() -} - -func (SchemaFormat) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v2_streams_streams_proto_enumTypes[0] -} - -func (x SchemaFormat) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SchemaFormat.Descriptor instead. -func (SchemaFormat) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{0} -} - -// Constants for expected revision validation in optimistic concurrency control. -// These can be used in the expected_revision field, or you can specify an actual revision number. -type ExpectedRevisionConstants int32 - -const ( - // The stream must have exactly one event at revision 0. - // Used for scenarios requiring strict single-event semantics. - ExpectedRevisionConstants_EXPECTED_REVISION_CONSTANTS_SINGLE_EVENT ExpectedRevisionConstants = 0 - // The stream must not exist yet (first write to the stream). - // Fails if the stream already has events. - ExpectedRevisionConstants_EXPECTED_REVISION_CONSTANTS_NO_STREAM ExpectedRevisionConstants = -1 - // Accept any current state of the stream (no optimistic concurrency check). - // The write will succeed regardless of the stream's current revision. - ExpectedRevisionConstants_EXPECTED_REVISION_CONSTANTS_ANY ExpectedRevisionConstants = -2 - // The stream must exist (have at least one record). - // Fails if the stream doesn't exist yet. - ExpectedRevisionConstants_EXPECTED_REVISION_CONSTANTS_EXISTS ExpectedRevisionConstants = -4 -) - -// Enum value maps for ExpectedRevisionConstants. -var ( - ExpectedRevisionConstants_name = map[int32]string{ - 0: "EXPECTED_REVISION_CONSTANTS_SINGLE_EVENT", - -1: "EXPECTED_REVISION_CONSTANTS_NO_STREAM", - -2: "EXPECTED_REVISION_CONSTANTS_ANY", - -4: "EXPECTED_REVISION_CONSTANTS_EXISTS", - } - ExpectedRevisionConstants_value = map[string]int32{ - "EXPECTED_REVISION_CONSTANTS_SINGLE_EVENT": 0, - "EXPECTED_REVISION_CONSTANTS_NO_STREAM": -1, - "EXPECTED_REVISION_CONSTANTS_ANY": -2, - "EXPECTED_REVISION_CONSTANTS_EXISTS": -4, - } -) - -func (x ExpectedRevisionConstants) Enum() *ExpectedRevisionConstants { - p := new(ExpectedRevisionConstants) - *p = x - return p -} - -func (x ExpectedRevisionConstants) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ExpectedRevisionConstants) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v2_streams_streams_proto_enumTypes[1].Descriptor() -} - -func (ExpectedRevisionConstants) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v2_streams_streams_proto_enumTypes[1] -} - -func (x ExpectedRevisionConstants) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ExpectedRevisionConstants.Descriptor instead. -func (ExpectedRevisionConstants) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{1} -} - -// Represents the input for appending records to a specific stream. -type AppendRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The stream to append records to. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // The records to append to the stream. - Records []*AppendRecord `protobuf:"bytes,2,rep,name=records,proto3" json:"records,omitempty"` - // The expected revision for optimistic concurrency control. - // Can be either: - // - A specific revision number (0, 1, 2, ...) - the stream must be at exactly this revision - // - An ExpectedRevisionConstants value (-4, -2, -1) for special semantics - // - // If omitted, defaults to EXPECTED_REVISION_CONSTANTS_ANY (-2). - ExpectedRevision *int64 `protobuf:"zigzag64,3,opt,name=expected_revision,json=expectedRevision,proto3,oneof" json:"expected_revision,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendRequest) Reset() { - *x = AppendRequest{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendRequest) ProtoMessage() {} - -func (x *AppendRequest) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendRequest.ProtoReflect.Descriptor instead. -func (*AppendRequest) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{0} -} - -func (x *AppendRequest) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *AppendRequest) GetRecords() []*AppendRecord { - if x != nil { - return x.Records - } - return nil -} - -func (x *AppendRequest) GetExpectedRevision() int64 { - if x != nil && x.ExpectedRevision != nil { - return *x.ExpectedRevision - } - return 0 -} - -// Represents the outcome of an append operation. -type AppendResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The stream to which records were appended. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // The actual/current revision of the stream after the append. - // This is the revision number of the last record written to this stream. - StreamRevision int64 `protobuf:"zigzag64,2,opt,name=stream_revision,json=streamRevision,proto3" json:"stream_revision,omitempty"` - // The position of the last appended record in the global log. - Position *int64 `protobuf:"zigzag64,3,opt,name=position,proto3,oneof" json:"position,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendResponse) Reset() { - *x = AppendResponse{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendResponse) ProtoMessage() {} - -func (x *AppendResponse) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendResponse.ProtoReflect.Descriptor instead. -func (*AppendResponse) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{1} -} - -func (x *AppendResponse) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *AppendResponse) GetStreamRevision() int64 { - if x != nil { - return x.StreamRevision - } - return 0 -} - -func (x *AppendResponse) GetPosition() int64 { - if x != nil && x.Position != nil { - return *x.Position - } - return 0 -} - -type AppendSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The results of each append request in the session. - Output []*AppendResponse `protobuf:"bytes,1,rep,name=output,proto3" json:"output,omitempty"` - // The global commit position of the last appended record in the session. - Position int64 `protobuf:"zigzag64,2,opt,name=position,proto3" json:"position,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendSessionResponse) Reset() { - *x = AppendSessionResponse{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendSessionResponse) ProtoMessage() {} - -func (x *AppendSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendSessionResponse.ProtoReflect.Descriptor instead. -func (*AppendSessionResponse) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{2} -} - -func (x *AppendSessionResponse) GetOutput() []*AppendResponse { - if x != nil { - return x.Output - } - return nil -} - -func (x *AppendSessionResponse) GetPosition() int64 { - if x != nil { - return x.Position - } - return 0 -} - -// Schema information for record validation and interpretation. -type SchemaInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The format of the data payload. - // Determines how the bytes in AppendRecord.data should be interpreted. - Format SchemaFormat `protobuf:"varint,1,opt,name=format,proto3,enum=kurrentdb.protocol.v2.streams.SchemaFormat" json:"format,omitempty"` - // The schema name (replaces the legacy "event type" concept). - // Identifies what kind of data this record contains. - // - // Common naming formats: - // - Kebab-case: "order-placed", "customer-registered" - // - URN format: "urn:kurrentdb:events:order-placed:v1" - // - Dotted namespace: "Teams.Player.V1", "Orders.OrderPlaced.V2" - // - Reverse domain: "com.acme.orders.placed" - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // The identifier of the specific version of the schema that the record payload - // conforms to. This should match a registered schema version in the system. - // Not necessary when not enforcing schema validation. - Id *string `protobuf:"bytes,3,opt,name=id,proto3,oneof" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SchemaInfo) Reset() { - *x = SchemaInfo{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SchemaInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SchemaInfo) ProtoMessage() {} - -func (x *SchemaInfo) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SchemaInfo.ProtoReflect.Descriptor instead. -func (*SchemaInfo) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{3} -} - -func (x *SchemaInfo) GetFormat() SchemaFormat { - if x != nil { - return x.Format - } - return SchemaFormat_SCHEMA_FORMAT_UNSPECIFIED -} - -func (x *SchemaInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *SchemaInfo) GetId() string { - if x != nil && x.Id != nil { - return *x.Id - } - return "" -} - -// Record to be appended to a stream. -type AppendRecord struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Unique identifier for this record (must be a valid UUID/GUID). - // If not provided, the server will generate a new one. - RecordId *string `protobuf:"bytes,1,opt,name=record_id,json=recordId,proto3,oneof" json:"record_id,omitempty"` - // A collection of properties providing additional information about the - // record. Can contain user-defined or system propreties. - // System keys will be prefixed with "$" (e.g., "$timestamp"). - // User-defined keys MUST NOT start with "$". - // - // Common examples: - // - // User metadata: - // - "user-id": "12345" - // - "tenant": "acme-corp" - // - "source": "mobile-app" - // - // System metadata (with $ prefix): - // - "$trace-id": "4bf92f3577b34da6a3ce929d0e0e4736" // OpenTelemetry trace ID - // - "$span-id": "00f067aa0ba902b7" // OpenTelemetry span ID - // - "$timestamp": "2025-01-15T10:30:00.000Z" // ISO 8601 timestamp - Properties map[string]*structpb.Value `protobuf:"bytes,2,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Schema information for this record. - Schema *SchemaInfo `protobuf:"bytes,3,opt,name=schema,proto3" json:"schema,omitempty"` - // The record payload as raw bytes. - // The format specified in SchemaInfo determines how to interpret these bytes. - Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` - // Target stream for this record. - // Required for AppendRecords (each record specifies its own stream). - // Ignored for AppendSession (the stream is specified in AppendRequest). - Stream string `protobuf:"bytes,5,opt,name=stream,proto3" json:"stream,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendRecord) Reset() { - *x = AppendRecord{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendRecord) ProtoMessage() {} - -func (x *AppendRecord) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendRecord.ProtoReflect.Descriptor instead. -func (*AppendRecord) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{4} -} - -func (x *AppendRecord) GetRecordId() string { - if x != nil && x.RecordId != nil { - return *x.RecordId - } - return "" -} - -func (x *AppendRecord) GetProperties() map[string]*structpb.Value { - if x != nil { - return x.Properties - } - return nil -} - -func (x *AppendRecord) GetSchema() *SchemaInfo { - if x != nil { - return x.Schema - } - return nil -} - -func (x *AppendRecord) GetData() []byte { - if x != nil { - return x.Data - } - return nil -} - -func (x *AppendRecord) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -// Request to append records to one or more streams atomically. -// -// All records are committed in a single transaction. Each record specifies its -// target stream via AppendRecord.stream. Consistency checks are evaluated before -// any records are written. -type AppendRecordsRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The records to append. Records targeting the same stream maintain their - // order from this list. - Records []*AppendRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` - // Optional consistency checks evaluated before commit. If any check fails, - // the entire transaction is aborted. - Checks []*ConsistencyCheck `protobuf:"bytes,2,rep,name=checks,proto3" json:"checks,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendRecordsRequest) Reset() { - *x = AppendRecordsRequest{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendRecordsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendRecordsRequest) ProtoMessage() {} - -func (x *AppendRecordsRequest) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendRecordsRequest.ProtoReflect.Descriptor instead. -func (*AppendRecordsRequest) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{5} -} - -func (x *AppendRecordsRequest) GetRecords() []*AppendRecord { - if x != nil { - return x.Records - } - return nil -} - -func (x *AppendRecordsRequest) GetChecks() []*ConsistencyCheck { - if x != nil { - return x.Checks - } - return nil -} - -// Response from a successful AppendRecords operation. -// -// Contains the resulting revision for each stream that was written to and the -// global commit position of the transaction. -type AppendRecordsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The resulting revision for each stream that received records. One entry per - // distinct stream written to, in no guaranteed order. - Revisions []*StreamRevision `protobuf:"bytes,1,rep,name=revisions,proto3" json:"revisions,omitempty"` - // The global commit position of the last record written in this transaction. - // Can be used for read-your-writes consistency or progress tracking. - Position int64 `protobuf:"zigzag64,2,opt,name=position,proto3" json:"position,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AppendRecordsResponse) Reset() { - *x = AppendRecordsResponse{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AppendRecordsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AppendRecordsResponse) ProtoMessage() {} - -func (x *AppendRecordsResponse) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AppendRecordsResponse.ProtoReflect.Descriptor instead. -func (*AppendRecordsResponse) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{6} -} - -func (x *AppendRecordsResponse) GetRevisions() []*StreamRevision { - if x != nil { - return x.Revisions - } - return nil -} - -func (x *AppendRecordsResponse) GetPosition() int64 { - if x != nil { - return x.Position - } - return 0 -} - -// A pre-commit condition that must hold true for the transaction to succeed. -// -// Consistency checks are evaluated atomically before any records are written. If -// any check is violated, the entire transaction is aborted. -type ConsistencyCheck struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Type: - // - // *ConsistencyCheck_StreamState - Type isConsistencyCheck_Type `protobuf_oneof:"type"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConsistencyCheck) Reset() { - *x = ConsistencyCheck{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConsistencyCheck) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConsistencyCheck) ProtoMessage() {} - -func (x *ConsistencyCheck) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConsistencyCheck.ProtoReflect.Descriptor instead. -func (*ConsistencyCheck) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{7} -} - -func (x *ConsistencyCheck) GetType() isConsistencyCheck_Type { - if x != nil { - return x.Type - } - return nil -} - -func (x *ConsistencyCheck) GetStreamState() *ConsistencyCheck_StreamStateCheck { - if x != nil { - if x, ok := x.Type.(*ConsistencyCheck_StreamState); ok { - return x.StreamState - } - } - return nil -} - -type isConsistencyCheck_Type interface { - isConsistencyCheck_Type() -} - -type ConsistencyCheck_StreamState struct { - // Check that a stream is at a specific revision or lifecycle state. - StreamState *ConsistencyCheck_StreamStateCheck `protobuf:"bytes,1,opt,name=stream_state,json=streamState,proto3,oneof"` -} - -func (*ConsistencyCheck_StreamState) isConsistencyCheck_Type() {} - -// A specific revision of a stream. -type StreamRevision struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Stream name. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // Revision within the stream. - Revision int64 `protobuf:"zigzag64,2,opt,name=revision,proto3" json:"revision,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StreamRevision) Reset() { - *x = StreamRevision{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StreamRevision) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamRevision) ProtoMessage() {} - -func (x *StreamRevision) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StreamRevision.ProtoReflect.Descriptor instead. -func (*StreamRevision) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{8} -} - -func (x *StreamRevision) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *StreamRevision) GetRevision() int64 { - if x != nil { - return x.Revision - } - return 0 -} - -// Asserts a stream is at a specific revision or lifecycle state before commit. -type ConsistencyCheck_StreamStateCheck struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The stream name. - Stream string `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"` - // The expected state of the stream (revision number or state constant). - ExpectedState int64 `protobuf:"zigzag64,2,opt,name=expected_state,json=expectedState,proto3" json:"expected_state,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ConsistencyCheck_StreamStateCheck) Reset() { - *x = ConsistencyCheck_StreamStateCheck{} - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ConsistencyCheck_StreamStateCheck) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConsistencyCheck_StreamStateCheck) ProtoMessage() {} - -func (x *ConsistencyCheck_StreamStateCheck) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConsistencyCheck_StreamStateCheck.ProtoReflect.Descriptor instead. -func (*ConsistencyCheck_StreamStateCheck) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP(), []int{7, 0} -} - -func (x *ConsistencyCheck_StreamStateCheck) GetStream() string { - if x != nil { - return x.Stream - } - return "" -} - -func (x *ConsistencyCheck_StreamStateCheck) GetExpectedState() int64 { - if x != nil { - return x.ExpectedState - } - return 0 -} - -var File_kurrentdb_protocols_v2_streams_streams_proto protoreflect.FileDescriptor - -const file_kurrentdb_protocols_v2_streams_streams_proto_rawDesc = "" + - "\n" + - ",kurrentdb/protocols/v2/streams/streams.proto\x12\x1dkurrentdb.protocol.v2.streams\x1a\x1cgoogle/protobuf/struct.proto\"\xb6\x01\n" + - "\rAppendRequest\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12E\n" + - "\arecords\x18\x02 \x03(\v2+.kurrentdb.protocol.v2.streams.AppendRecordR\arecords\x120\n" + - "\x11expected_revision\x18\x03 \x01(\x12H\x00R\x10expectedRevision\x88\x01\x01B\x14\n" + - "\x12_expected_revision\"\x7f\n" + - "\x0eAppendResponse\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12'\n" + - "\x0fstream_revision\x18\x02 \x01(\x12R\x0estreamRevision\x12\x1f\n" + - "\bposition\x18\x03 \x01(\x12H\x00R\bposition\x88\x01\x01B\v\n" + - "\t_position\"z\n" + - "\x15AppendSessionResponse\x12E\n" + - "\x06output\x18\x01 \x03(\v2-.kurrentdb.protocol.v2.streams.AppendResponseR\x06output\x12\x1a\n" + - "\bposition\x18\x02 \x01(\x12R\bposition\"\x81\x01\n" + - "\n" + - "SchemaInfo\x12C\n" + - "\x06format\x18\x01 \x01(\x0e2+.kurrentdb.protocol.v2.streams.SchemaFormatR\x06format\x12\x12\n" + - "\x04name\x18\x02 \x01(\tR\x04name\x12\x13\n" + - "\x02id\x18\x03 \x01(\tH\x00R\x02id\x88\x01\x01B\x05\n" + - "\x03_id\"\xe1\x02\n" + - "\fAppendRecord\x12 \n" + - "\trecord_id\x18\x01 \x01(\tH\x00R\brecordId\x88\x01\x01\x12[\n" + - "\n" + - "properties\x18\x02 \x03(\v2;.kurrentdb.protocol.v2.streams.AppendRecord.PropertiesEntryR\n" + - "properties\x12A\n" + - "\x06schema\x18\x03 \x01(\v2).kurrentdb.protocol.v2.streams.SchemaInfoR\x06schema\x12\x12\n" + - "\x04data\x18\x04 \x01(\fR\x04data\x12\x16\n" + - "\x06stream\x18\x05 \x01(\tR\x06stream\x1aU\n" + - "\x0fPropertiesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12,\n" + - "\x05value\x18\x02 \x01(\v2\x16.google.protobuf.ValueR\x05value:\x028\x01B\f\n" + - "\n" + - "_record_id\"\xa6\x01\n" + - "\x14AppendRecordsRequest\x12E\n" + - "\arecords\x18\x01 \x03(\v2+.kurrentdb.protocol.v2.streams.AppendRecordR\arecords\x12G\n" + - "\x06checks\x18\x02 \x03(\v2/.kurrentdb.protocol.v2.streams.ConsistencyCheckR\x06checks\"\x80\x01\n" + - "\x15AppendRecordsResponse\x12K\n" + - "\trevisions\x18\x01 \x03(\v2-.kurrentdb.protocol.v2.streams.StreamRevisionR\trevisions\x12\x1a\n" + - "\bposition\x18\x02 \x01(\x12R\bposition\"\xd4\x01\n" + - "\x10ConsistencyCheck\x12e\n" + - "\fstream_state\x18\x01 \x01(\v2@.kurrentdb.protocol.v2.streams.ConsistencyCheck.StreamStateCheckH\x00R\vstreamState\x1aQ\n" + - "\x10StreamStateCheck\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12%\n" + - "\x0eexpected_state\x18\x02 \x01(\x12R\rexpectedStateB\x06\n" + - "\x04type\"D\n" + - "\x0eStreamRevision\x12\x16\n" + - "\x06stream\x18\x01 \x01(\tR\x06stream\x12\x1a\n" + - "\brevision\x18\x02 \x01(\x12R\brevision*\x92\x01\n" + - "\fSchemaFormat\x12\x1d\n" + - "\x19SCHEMA_FORMAT_UNSPECIFIED\x10\x00\x12\x16\n" + - "\x12SCHEMA_FORMAT_JSON\x10\x01\x12\x1a\n" + - "\x16SCHEMA_FORMAT_PROTOBUF\x10\x02\x12\x16\n" + - "\x12SCHEMA_FORMAT_AVRO\x10\x03\x12\x17\n" + - "\x13SCHEMA_FORMAT_BYTES\x10\x04*\xdc\x01\n" + - "\x19ExpectedRevisionConstants\x12,\n" + - "(EXPECTED_REVISION_CONSTANTS_SINGLE_EVENT\x10\x00\x122\n" + - "%EXPECTED_REVISION_CONSTANTS_NO_STREAM\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12,\n" + - "\x1fEXPECTED_REVISION_CONSTANTS_ANY\x10\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12/\n" + - "\"EXPECTED_REVISION_CONSTANTS_EXISTS\x10\xfc\xff\xff\xff\xff\xff\xff\xff\xff\x012\x83\x02\n" + - "\x0eStreamsService\x12u\n" + - "\rAppendSession\x12,.kurrentdb.protocol.v2.streams.AppendRequest\x1a4.kurrentdb.protocol.v2.streams.AppendSessionResponse(\x01\x12z\n" + - "\rAppendRecords\x123.kurrentdb.protocol.v2.streams.AppendRecordsRequest\x1a4.kurrentdb.protocol.v2.streams.AppendRecordsResponseBQZOgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/streamsb\x06proto3" - -var ( - file_kurrentdb_protocols_v2_streams_streams_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v2_streams_streams_proto_rawDescData []byte -) - -func file_kurrentdb_protocols_v2_streams_streams_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v2_streams_streams_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v2_streams_streams_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_streams_streams_proto_rawDesc), len(file_kurrentdb_protocols_v2_streams_streams_proto_rawDesc))) - }) - return file_kurrentdb_protocols_v2_streams_streams_proto_rawDescData -} - -var file_kurrentdb_protocols_v2_streams_streams_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_kurrentdb_protocols_v2_streams_streams_proto_goTypes = []any{ - (SchemaFormat)(0), // 0: kurrentdb.protocol.v2.streams.SchemaFormat - (ExpectedRevisionConstants)(0), // 1: kurrentdb.protocol.v2.streams.ExpectedRevisionConstants - (*AppendRequest)(nil), // 2: kurrentdb.protocol.v2.streams.AppendRequest - (*AppendResponse)(nil), // 3: kurrentdb.protocol.v2.streams.AppendResponse - (*AppendSessionResponse)(nil), // 4: kurrentdb.protocol.v2.streams.AppendSessionResponse - (*SchemaInfo)(nil), // 5: kurrentdb.protocol.v2.streams.SchemaInfo - (*AppendRecord)(nil), // 6: kurrentdb.protocol.v2.streams.AppendRecord - (*AppendRecordsRequest)(nil), // 7: kurrentdb.protocol.v2.streams.AppendRecordsRequest - (*AppendRecordsResponse)(nil), // 8: kurrentdb.protocol.v2.streams.AppendRecordsResponse - (*ConsistencyCheck)(nil), // 9: kurrentdb.protocol.v2.streams.ConsistencyCheck - (*StreamRevision)(nil), // 10: kurrentdb.protocol.v2.streams.StreamRevision - nil, // 11: kurrentdb.protocol.v2.streams.AppendRecord.PropertiesEntry - (*ConsistencyCheck_StreamStateCheck)(nil), // 12: kurrentdb.protocol.v2.streams.ConsistencyCheck.StreamStateCheck - (*structpb.Value)(nil), // 13: google.protobuf.Value -} -var file_kurrentdb_protocols_v2_streams_streams_proto_depIdxs = []int32{ - 6, // 0: kurrentdb.protocol.v2.streams.AppendRequest.records:type_name -> kurrentdb.protocol.v2.streams.AppendRecord - 3, // 1: kurrentdb.protocol.v2.streams.AppendSessionResponse.output:type_name -> kurrentdb.protocol.v2.streams.AppendResponse - 0, // 2: kurrentdb.protocol.v2.streams.SchemaInfo.format:type_name -> kurrentdb.protocol.v2.streams.SchemaFormat - 11, // 3: kurrentdb.protocol.v2.streams.AppendRecord.properties:type_name -> kurrentdb.protocol.v2.streams.AppendRecord.PropertiesEntry - 5, // 4: kurrentdb.protocol.v2.streams.AppendRecord.schema:type_name -> kurrentdb.protocol.v2.streams.SchemaInfo - 6, // 5: kurrentdb.protocol.v2.streams.AppendRecordsRequest.records:type_name -> kurrentdb.protocol.v2.streams.AppendRecord - 9, // 6: kurrentdb.protocol.v2.streams.AppendRecordsRequest.checks:type_name -> kurrentdb.protocol.v2.streams.ConsistencyCheck - 10, // 7: kurrentdb.protocol.v2.streams.AppendRecordsResponse.revisions:type_name -> kurrentdb.protocol.v2.streams.StreamRevision - 12, // 8: kurrentdb.protocol.v2.streams.ConsistencyCheck.stream_state:type_name -> kurrentdb.protocol.v2.streams.ConsistencyCheck.StreamStateCheck - 13, // 9: kurrentdb.protocol.v2.streams.AppendRecord.PropertiesEntry.value:type_name -> google.protobuf.Value - 2, // 10: kurrentdb.protocol.v2.streams.StreamsService.AppendSession:input_type -> kurrentdb.protocol.v2.streams.AppendRequest - 7, // 11: kurrentdb.protocol.v2.streams.StreamsService.AppendRecords:input_type -> kurrentdb.protocol.v2.streams.AppendRecordsRequest - 4, // 12: kurrentdb.protocol.v2.streams.StreamsService.AppendSession:output_type -> kurrentdb.protocol.v2.streams.AppendSessionResponse - 8, // 13: kurrentdb.protocol.v2.streams.StreamsService.AppendRecords:output_type -> kurrentdb.protocol.v2.streams.AppendRecordsResponse - 12, // [12:14] is the sub-list for method output_type - 10, // [10:12] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v2_streams_streams_proto_init() } -func file_kurrentdb_protocols_v2_streams_streams_proto_init() { - if File_kurrentdb_protocols_v2_streams_streams_proto != nil { - return - } - file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[0].OneofWrappers = []any{} - file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[1].OneofWrappers = []any{} - file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[3].OneofWrappers = []any{} - file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[4].OneofWrappers = []any{} - file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes[7].OneofWrappers = []any{ - (*ConsistencyCheck_StreamState)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v2_streams_streams_proto_rawDesc), len(file_kurrentdb_protocols_v2_streams_streams_proto_rawDesc)), - NumEnums: 2, - NumMessages: 11, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_kurrentdb_protocols_v2_streams_streams_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v2_streams_streams_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v2_streams_streams_proto_enumTypes, - MessageInfos: file_kurrentdb_protocols_v2_streams_streams_proto_msgTypes, - }.Build() - File_kurrentdb_protocols_v2_streams_streams_proto = out.File - file_kurrentdb_protocols_v2_streams_streams_proto_goTypes = nil - file_kurrentdb_protocols_v2_streams_streams_proto_depIdxs = nil -} diff --git a/protos/kurrentdb/protocols/v2/streams/streams/streams_grpc.pb.go b/protos/kurrentdb/protocols/v2/streams/streams/streams_grpc.pb.go deleted file mode 100644 index 9a9c502..0000000 --- a/protos/kurrentdb/protocols/v2/streams/streams/streams_grpc.pb.go +++ /dev/null @@ -1,235 +0,0 @@ -// ****************************************************************************************** -// This protocol is UNSTABLE in the sense of being subject to change. -// ****************************************************************************************** - -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.6.1 -// - protoc v5.26.0 -// source: kurrentdb/protocols/v2/streams/streams.proto - -package streams - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - StreamsService_AppendSession_FullMethodName = "/kurrentdb.protocol.v2.streams.StreamsService/AppendSession" - StreamsService_AppendRecords_FullMethodName = "/kurrentdb.protocol.v2.streams.StreamsService/AppendRecords" -) - -// StreamsServiceClient is the client API for StreamsService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type StreamsServiceClient interface { - // Appends records to multiple streams atomically within a single transaction. - // - // This is a client-streaming RPC where the client sends multiple AppendRequest messages - // (one per stream) and receives a single AppendSessionResponse upon commit. - // - // Guarantees: - // - Atomicity: All writes succeed or all fail together - // - Optimistic Concurrency: Expected revisions are validated for all streams before commit - // - Ordering: Records within each stream maintain send order - // - // Current Limitations: - // - Each stream can only appear once per session (no multiple appends to same stream) - // - // Example flow: - // 1. Client opens stream - // 2. Client sends AppendRequest for stream "orders" with 3 records - // 3. Client sends AppendRequest for stream "inventory" with 2 records - // 4. Client completes the stream - // 5. Server validates, commits, returns AppendSessionResponse with positions - AppendSession(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[AppendRequest, AppendSessionResponse], error) - // Appends records to multiple streams atomically with cross-stream consistency checks. - // - // This is a unary RPC where the client sends all records and consistency checks - // in a single request and receives a single AppendRecordsResponse. - // - // Records can be interleaved across streams in any order and the global log preserves - // the exact sequence from the request. - // - // Consistency checks are decoupled from writes: a check can reference any stream, - // whether or not the request writes to it. This enables Dynamic Consistency Boundary - // (DCB) patterns where a decision depends on multiple streams but only produces - // events for a subset. - // - // Guarantees: - // - Atomicity: All writes succeed or all fail together - // - Ordering: Records maintain the exact send order in the global log - // - Cross-stream checks: Consistency checks can reference any stream - // - // On consistency check failure, no records are written and all failing checks - // are reported in the response so the client can refresh stale state in one round trip. - AppendRecords(ctx context.Context, in *AppendRecordsRequest, opts ...grpc.CallOption) (*AppendRecordsResponse, error) -} - -type streamsServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewStreamsServiceClient(cc grpc.ClientConnInterface) StreamsServiceClient { - return &streamsServiceClient{cc} -} - -func (c *streamsServiceClient) AppendSession(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[AppendRequest, AppendSessionResponse], error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - stream, err := c.cc.NewStream(ctx, &StreamsService_ServiceDesc.Streams[0], StreamsService_AppendSession_FullMethodName, cOpts...) - if err != nil { - return nil, err - } - x := &grpc.GenericClientStream[AppendRequest, AppendSessionResponse]{ClientStream: stream} - return x, nil -} - -// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type StreamsService_AppendSessionClient = grpc.ClientStreamingClient[AppendRequest, AppendSessionResponse] - -func (c *streamsServiceClient) AppendRecords(ctx context.Context, in *AppendRecordsRequest, opts ...grpc.CallOption) (*AppendRecordsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(AppendRecordsResponse) - err := c.cc.Invoke(ctx, StreamsService_AppendRecords_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// StreamsServiceServer is the server API for StreamsService service. -// All implementations must embed UnimplementedStreamsServiceServer -// for forward compatibility. -type StreamsServiceServer interface { - // Appends records to multiple streams atomically within a single transaction. - // - // This is a client-streaming RPC where the client sends multiple AppendRequest messages - // (one per stream) and receives a single AppendSessionResponse upon commit. - // - // Guarantees: - // - Atomicity: All writes succeed or all fail together - // - Optimistic Concurrency: Expected revisions are validated for all streams before commit - // - Ordering: Records within each stream maintain send order - // - // Current Limitations: - // - Each stream can only appear once per session (no multiple appends to same stream) - // - // Example flow: - // 1. Client opens stream - // 2. Client sends AppendRequest for stream "orders" with 3 records - // 3. Client sends AppendRequest for stream "inventory" with 2 records - // 4. Client completes the stream - // 5. Server validates, commits, returns AppendSessionResponse with positions - AppendSession(grpc.ClientStreamingServer[AppendRequest, AppendSessionResponse]) error - // Appends records to multiple streams atomically with cross-stream consistency checks. - // - // This is a unary RPC where the client sends all records and consistency checks - // in a single request and receives a single AppendRecordsResponse. - // - // Records can be interleaved across streams in any order and the global log preserves - // the exact sequence from the request. - // - // Consistency checks are decoupled from writes: a check can reference any stream, - // whether or not the request writes to it. This enables Dynamic Consistency Boundary - // (DCB) patterns where a decision depends on multiple streams but only produces - // events for a subset. - // - // Guarantees: - // - Atomicity: All writes succeed or all fail together - // - Ordering: Records maintain the exact send order in the global log - // - Cross-stream checks: Consistency checks can reference any stream - // - // On consistency check failure, no records are written and all failing checks - // are reported in the response so the client can refresh stale state in one round trip. - AppendRecords(context.Context, *AppendRecordsRequest) (*AppendRecordsResponse, error) - mustEmbedUnimplementedStreamsServiceServer() -} - -// UnimplementedStreamsServiceServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedStreamsServiceServer struct{} - -func (UnimplementedStreamsServiceServer) AppendSession(grpc.ClientStreamingServer[AppendRequest, AppendSessionResponse]) error { - return status.Error(codes.Unimplemented, "method AppendSession not implemented") -} -func (UnimplementedStreamsServiceServer) AppendRecords(context.Context, *AppendRecordsRequest) (*AppendRecordsResponse, error) { - return nil, status.Error(codes.Unimplemented, "method AppendRecords not implemented") -} -func (UnimplementedStreamsServiceServer) mustEmbedUnimplementedStreamsServiceServer() {} -func (UnimplementedStreamsServiceServer) testEmbeddedByValue() {} - -// UnsafeStreamsServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to StreamsServiceServer will -// result in compilation errors. -type UnsafeStreamsServiceServer interface { - mustEmbedUnimplementedStreamsServiceServer() -} - -func RegisterStreamsServiceServer(s grpc.ServiceRegistrar, srv StreamsServiceServer) { - // If the following call panics, it indicates UnimplementedStreamsServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&StreamsService_ServiceDesc, srv) -} - -func _StreamsService_AppendSession_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(StreamsServiceServer).AppendSession(&grpc.GenericServerStream[AppendRequest, AppendSessionResponse]{ServerStream: stream}) -} - -// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. -type StreamsService_AppendSessionServer = grpc.ClientStreamingServer[AppendRequest, AppendSessionResponse] - -func _StreamsService_AppendRecords_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AppendRecordsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StreamsServiceServer).AppendRecords(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StreamsService_AppendRecords_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StreamsServiceServer).AppendRecords(ctx, req.(*AppendRecordsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// StreamsService_ServiceDesc is the grpc.ServiceDesc for StreamsService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var StreamsService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "kurrentdb.protocol.v2.streams.StreamsService", - HandlerType: (*StreamsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AppendRecords", - Handler: _StreamsService_AppendRecords_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "AppendSession", - Handler: _StreamsService_AppendSession_Handler, - ClientStreams: true, - }, - }, - Metadata: "kurrentdb/protocols/v2/streams/streams.proto", -} diff --git a/protos/kurrentdb/protocols/v1/code.proto b/protos/trogoneventstore/protocols/v1/code.proto similarity index 99% rename from protos/kurrentdb/protocols/v1/code.proto rename to protos/trogoneventstore/protocols/v1/code.proto index d115da1..98ae0ac 100644 --- a/protos/kurrentdb/protocols/v1/code.proto +++ b/protos/trogoneventstore/protocols/v1/code.proto @@ -183,4 +183,4 @@ enum Code { // // HTTP Mapping: 500 Internal Server Error DATA_LOSS = 15; -} \ No newline at end of file +} diff --git a/protos/kurrentdb/protocols/v1/gossip.proto b/protos/trogoneventstore/protocols/v1/gossip.proto similarity index 82% rename from protos/kurrentdb/protocols/v1/gossip.proto rename to protos/trogoneventstore/protocols/v1/gossip.proto index 299270a..e9a121d 100644 --- a/protos/kurrentdb/protocols/v1/gossip.proto +++ b/protos/trogoneventstore/protocols/v1/gossip.proto @@ -1,9 +1,10 @@ syntax = "proto3"; package event_store.client.gossip; + +option go_package = "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/gossip"; option java_package = "com.eventstore.dbclient.proto.gossip"; -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/gossip"; -import "kurrentdb/protocols/v1/shared.proto"; +import "trogoneventstore/protocols/v1/shared.proto"; service Gossip { rpc Read (event_store.client.Empty) returns (ClusterInfo); @@ -42,4 +43,4 @@ message MemberInfo { VNodeState state = 3; bool is_alive = 4; EndPoint http_end_point = 5; -} \ No newline at end of file +} diff --git a/protos/kurrentdb/protocols/v1/gossip/gossip.pb.go b/protos/trogoneventstore/protocols/v1/gossip/gossip.pb.go similarity index 75% rename from protos/kurrentdb/protocols/v1/gossip/gossip.pb.go rename to protos/trogoneventstore/protocols/v1/gossip/gossip.pb.go index 620b083..d708c42 100644 --- a/protos/kurrentdb/protocols/v1/gossip/gossip.pb.go +++ b/protos/trogoneventstore/protocols/v1/gossip/gossip.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/gossip.proto +// protoc-gen-go v1.36.9 +// protoc v7.36.0 +// source: trogoneventstore/protocols/v1/gossip.proto package gossip import ( - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -94,11 +94,11 @@ func (x MemberInfo_VNodeState) String() string { } func (MemberInfo_VNodeState) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v1_gossip_proto_enumTypes[0].Descriptor() + return file_trogoneventstore_protocols_v1_gossip_proto_enumTypes[0].Descriptor() } func (MemberInfo_VNodeState) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v1_gossip_proto_enumTypes[0] + return &file_trogoneventstore_protocols_v1_gossip_proto_enumTypes[0] } func (x MemberInfo_VNodeState) Number() protoreflect.EnumNumber { @@ -107,7 +107,7 @@ func (x MemberInfo_VNodeState) Number() protoreflect.EnumNumber { // Deprecated: Use MemberInfo_VNodeState.Descriptor instead. func (MemberInfo_VNodeState) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_gossip_proto_rawDescGZIP(), []int{2, 0} + return file_trogoneventstore_protocols_v1_gossip_proto_rawDescGZIP(), []int{2, 0} } type ClusterInfo struct { @@ -119,7 +119,7 @@ type ClusterInfo struct { func (x *ClusterInfo) Reset() { *x = ClusterInfo{} - mi := &file_kurrentdb_protocols_v1_gossip_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_gossip_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -131,7 +131,7 @@ func (x *ClusterInfo) String() string { func (*ClusterInfo) ProtoMessage() {} func (x *ClusterInfo) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_gossip_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_gossip_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -144,7 +144,7 @@ func (x *ClusterInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterInfo.ProtoReflect.Descriptor instead. func (*ClusterInfo) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_gossip_proto_rawDescGZIP(), []int{0} + return file_trogoneventstore_protocols_v1_gossip_proto_rawDescGZIP(), []int{0} } func (x *ClusterInfo) GetMembers() []*MemberInfo { @@ -164,7 +164,7 @@ type EndPoint struct { func (x *EndPoint) Reset() { *x = EndPoint{} - mi := &file_kurrentdb_protocols_v1_gossip_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_gossip_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -176,7 +176,7 @@ func (x *EndPoint) String() string { func (*EndPoint) ProtoMessage() {} func (x *EndPoint) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_gossip_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_gossip_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -189,7 +189,7 @@ func (x *EndPoint) ProtoReflect() protoreflect.Message { // Deprecated: Use EndPoint.ProtoReflect.Descriptor instead. func (*EndPoint) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_gossip_proto_rawDescGZIP(), []int{1} + return file_trogoneventstore_protocols_v1_gossip_proto_rawDescGZIP(), []int{1} } func (x *EndPoint) GetAddress() string { @@ -219,7 +219,7 @@ type MemberInfo struct { func (x *MemberInfo) Reset() { *x = MemberInfo{} - mi := &file_kurrentdb_protocols_v1_gossip_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_gossip_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -231,7 +231,7 @@ func (x *MemberInfo) String() string { func (*MemberInfo) ProtoMessage() {} func (x *MemberInfo) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_gossip_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_gossip_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -244,7 +244,7 @@ func (x *MemberInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use MemberInfo.ProtoReflect.Descriptor instead. func (*MemberInfo) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_gossip_proto_rawDescGZIP(), []int{2} + return file_trogoneventstore_protocols_v1_gossip_proto_rawDescGZIP(), []int{2} } func (x *MemberInfo) GetInstanceId() *shared.UUID { @@ -282,11 +282,11 @@ func (x *MemberInfo) GetHttpEndPoint() *EndPoint { return nil } -var File_kurrentdb_protocols_v1_gossip_proto protoreflect.FileDescriptor +var File_trogoneventstore_protocols_v1_gossip_proto protoreflect.FileDescriptor -const file_kurrentdb_protocols_v1_gossip_proto_rawDesc = "" + +const file_trogoneventstore_protocols_v1_gossip_proto_rawDesc = "" + "\n" + - "#kurrentdb/protocols/v1/gossip.proto\x12\x19event_store.client.gossip\x1a#kurrentdb/protocols/v1/shared.proto\"N\n" + + "*trogoneventstore/protocols/v1/gossip.proto\x12\x19event_store.client.gossip\x1a*trogoneventstore/protocols/v1/shared.proto\"N\n" + "\vClusterInfo\x12?\n" + "\amembers\x18\x01 \x03(\v2%.event_store.client.gossip.MemberInfoR\amembers\"8\n" + "\bEndPoint\x12\x18\n" + @@ -324,24 +324,24 @@ const file_kurrentdb_protocols_v1_gossip_proto_rawDesc = "" + "\x0fReadOnlyReplica\x10\x0e\x12\x13\n" + "\x0fResigningLeader\x10\x0f2S\n" + "\x06Gossip\x12I\n" + - "\x04Read\x12\x19.event_store.client.Empty\x1a&.event_store.client.gossip.ClusterInfoBv\n" + - "$com.eventstore.dbclient.proto.gossipZNgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/gossipb\x06proto3" + "\x04Read\x12\x19.event_store.client.Empty\x1a&.event_store.client.gossip.ClusterInfoB\x85\x01\n" + + "$com.eventstore.dbclient.proto.gossipZ]github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/gossipb\x06proto3" var ( - file_kurrentdb_protocols_v1_gossip_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_gossip_proto_rawDescData []byte + file_trogoneventstore_protocols_v1_gossip_proto_rawDescOnce sync.Once + file_trogoneventstore_protocols_v1_gossip_proto_rawDescData []byte ) -func file_kurrentdb_protocols_v1_gossip_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_gossip_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_gossip_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_gossip_proto_rawDesc), len(file_kurrentdb_protocols_v1_gossip_proto_rawDesc))) +func file_trogoneventstore_protocols_v1_gossip_proto_rawDescGZIP() []byte { + file_trogoneventstore_protocols_v1_gossip_proto_rawDescOnce.Do(func() { + file_trogoneventstore_protocols_v1_gossip_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_gossip_proto_rawDesc), len(file_trogoneventstore_protocols_v1_gossip_proto_rawDesc))) }) - return file_kurrentdb_protocols_v1_gossip_proto_rawDescData + return file_trogoneventstore_protocols_v1_gossip_proto_rawDescData } -var file_kurrentdb_protocols_v1_gossip_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kurrentdb_protocols_v1_gossip_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_kurrentdb_protocols_v1_gossip_proto_goTypes = []any{ +var file_trogoneventstore_protocols_v1_gossip_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_trogoneventstore_protocols_v1_gossip_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_trogoneventstore_protocols_v1_gossip_proto_goTypes = []any{ (MemberInfo_VNodeState)(0), // 0: event_store.client.gossip.MemberInfo.VNodeState (*ClusterInfo)(nil), // 1: event_store.client.gossip.ClusterInfo (*EndPoint)(nil), // 2: event_store.client.gossip.EndPoint @@ -349,7 +349,7 @@ var file_kurrentdb_protocols_v1_gossip_proto_goTypes = []any{ (*shared.UUID)(nil), // 4: event_store.client.UUID (*shared.Empty)(nil), // 5: event_store.client.Empty } -var file_kurrentdb_protocols_v1_gossip_proto_depIdxs = []int32{ +var file_trogoneventstore_protocols_v1_gossip_proto_depIdxs = []int32{ 3, // 0: event_store.client.gossip.ClusterInfo.members:type_name -> event_store.client.gossip.MemberInfo 4, // 1: event_store.client.gossip.MemberInfo.instance_id:type_name -> event_store.client.UUID 0, // 2: event_store.client.gossip.MemberInfo.state:type_name -> event_store.client.gossip.MemberInfo.VNodeState @@ -363,27 +363,27 @@ var file_kurrentdb_protocols_v1_gossip_proto_depIdxs = []int32{ 0, // [0:4] is the sub-list for field type_name } -func init() { file_kurrentdb_protocols_v1_gossip_proto_init() } -func file_kurrentdb_protocols_v1_gossip_proto_init() { - if File_kurrentdb_protocols_v1_gossip_proto != nil { +func init() { file_trogoneventstore_protocols_v1_gossip_proto_init() } +func file_trogoneventstore_protocols_v1_gossip_proto_init() { + if File_trogoneventstore_protocols_v1_gossip_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_gossip_proto_rawDesc), len(file_kurrentdb_protocols_v1_gossip_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_gossip_proto_rawDesc), len(file_trogoneventstore_protocols_v1_gossip_proto_rawDesc)), NumEnums: 1, NumMessages: 3, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_kurrentdb_protocols_v1_gossip_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_gossip_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v1_gossip_proto_enumTypes, - MessageInfos: file_kurrentdb_protocols_v1_gossip_proto_msgTypes, + GoTypes: file_trogoneventstore_protocols_v1_gossip_proto_goTypes, + DependencyIndexes: file_trogoneventstore_protocols_v1_gossip_proto_depIdxs, + EnumInfos: file_trogoneventstore_protocols_v1_gossip_proto_enumTypes, + MessageInfos: file_trogoneventstore_protocols_v1_gossip_proto_msgTypes, }.Build() - File_kurrentdb_protocols_v1_gossip_proto = out.File - file_kurrentdb_protocols_v1_gossip_proto_goTypes = nil - file_kurrentdb_protocols_v1_gossip_proto_depIdxs = nil + File_trogoneventstore_protocols_v1_gossip_proto = out.File + file_trogoneventstore_protocols_v1_gossip_proto_goTypes = nil + file_trogoneventstore_protocols_v1_gossip_proto_depIdxs = nil } diff --git a/protos/kurrentdb/protocols/v1/gossip/gossip_grpc.pb.go b/protos/trogoneventstore/protocols/v1/gossip/gossip_grpc.pb.go similarity index 94% rename from protos/kurrentdb/protocols/v1/gossip/gossip_grpc.pb.go rename to protos/trogoneventstore/protocols/v1/gossip/gossip_grpc.pb.go index d992aaf..6d39b61 100644 --- a/protos/kurrentdb/protocols/v1/gossip/gossip_grpc.pb.go +++ b/protos/trogoneventstore/protocols/v1/gossip/gossip_grpc.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.26.0 -// source: kurrentdb/protocols/v1/gossip.proto +// - protoc v7.36.0 +// source: trogoneventstore/protocols/v1/gossip.proto package gossip import ( context "context" - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -118,5 +118,5 @@ var Gossip_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "kurrentdb/protocols/v1/gossip.proto", + Metadata: "trogoneventstore/protocols/v1/gossip.proto", } diff --git a/protos/kurrentdb/protocols/v1/persistent.proto b/protos/trogoneventstore/protocols/v1/persistent.proto similarity index 90% rename from protos/kurrentdb/protocols/v1/persistent.proto rename to protos/trogoneventstore/protocols/v1/persistent.proto index feeeaf5..df9e8b2 100644 --- a/protos/kurrentdb/protocols/v1/persistent.proto +++ b/protos/trogoneventstore/protocols/v1/persistent.proto @@ -1,9 +1,10 @@ syntax = "proto3"; package event_store.client.persistent_subscriptions; + +option go_package = "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/persistent"; option java_package = "com.eventstore.dbclient.proto.persistentsubscriptions"; -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/persistent"; -import "kurrentdb/protocols/v1/shared.proto"; +import "trogoneventstore/protocols/v1/shared.proto"; service PersistentSubscriptions { rpc Create (CreateReq) returns (CreateResp); @@ -12,6 +13,7 @@ service PersistentSubscriptions { rpc Read (stream ReadReq) returns (stream ReadResp); rpc GetInfo (GetInfoReq) returns (GetInfoResp); rpc ReplayParked (ReplayParkedReq) returns (ReplayParkedResp); + rpc TruncateParked (TruncateParkedReq) returns (TruncateParkedResp); rpc List (ListReq) returns (ListResp); rpc RestartSubsystem (event_store.client.Empty) returns (event_store.client.Empty); } @@ -228,7 +230,7 @@ message UpdateReq { int32 live_buffer_size = 10; int32 read_batch_size = 11; int32 history_buffer_size = 12; - ConsumerStrategy named_consumer_strategy = 13; + ConsumerStrategy named_consumer_strategy = 13 [deprecated = true]; oneof message_timeout { int64 message_timeout_ticks = 4; int32 message_timeout_ms = 14; @@ -237,6 +239,7 @@ message UpdateReq { int64 checkpoint_after_ticks = 6; int32 checkpoint_after_ms = 15; } + string consumer_strategy = 16; } enum ConsumerStrategy { @@ -349,6 +352,25 @@ message ReplayParkedReq { message ReplayParkedResp { } +message TruncateParkedReq { + Options options = 1; + + message Options { + string group_name = 1; + oneof stream_option { + event_store.client.StreamIdentifier stream_identifier = 2; + event_store.client.Empty all = 3; + } + oneof stop_at_option { + int64 stop_at = 4; + event_store.client.Empty no_limit = 5; + } + } +} + +message TruncateParkedResp { +} + message ListReq { Options options = 1; @@ -357,6 +379,8 @@ message ListReq { event_store.client.Empty list_all_subscriptions = 1; StreamOption list_for_stream = 2; } + optional int32 offset = 3; + optional int32 count = 4; } message StreamOption { oneof stream_option { @@ -368,4 +392,7 @@ message ListReq { message ListResp { repeated SubscriptionInfo subscriptions = 1; -} \ No newline at end of file + optional int32 offset = 2; + optional int32 count = 3; + optional int32 total = 4; +} diff --git a/protos/kurrentdb/protocols/v1/persistent/persistent.pb.go b/protos/trogoneventstore/protocols/v1/persistent/persistent.pb.go similarity index 78% rename from protos/kurrentdb/protocols/v1/persistent/persistent.pb.go rename to protos/trogoneventstore/protocols/v1/persistent/persistent.pb.go index 66c6a39..05714e5 100644 --- a/protos/kurrentdb/protocols/v1/persistent/persistent.pb.go +++ b/protos/trogoneventstore/protocols/v1/persistent/persistent.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/persistent.proto +// protoc-gen-go v1.36.9 +// protoc v7.36.0 +// source: trogoneventstore/protocols/v1/persistent.proto package persistent import ( - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -61,11 +61,11 @@ func (x ReadReq_Nack_Action) String() string { } func (ReadReq_Nack_Action) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v1_persistent_proto_enumTypes[0].Descriptor() + return file_trogoneventstore_protocols_v1_persistent_proto_enumTypes[0].Descriptor() } func (ReadReq_Nack_Action) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v1_persistent_proto_enumTypes[0] + return &file_trogoneventstore_protocols_v1_persistent_proto_enumTypes[0] } func (x ReadReq_Nack_Action) Number() protoreflect.EnumNumber { @@ -74,7 +74,7 @@ func (x ReadReq_Nack_Action) Number() protoreflect.EnumNumber { // Deprecated: Use ReadReq_Nack_Action.Descriptor instead. func (ReadReq_Nack_Action) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 2, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 2, 0} } type CreateReq_ConsumerStrategy int32 @@ -110,11 +110,11 @@ func (x CreateReq_ConsumerStrategy) String() string { } func (CreateReq_ConsumerStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v1_persistent_proto_enumTypes[1].Descriptor() + return file_trogoneventstore_protocols_v1_persistent_proto_enumTypes[1].Descriptor() } func (CreateReq_ConsumerStrategy) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v1_persistent_proto_enumTypes[1] + return &file_trogoneventstore_protocols_v1_persistent_proto_enumTypes[1] } func (x CreateReq_ConsumerStrategy) Number() protoreflect.EnumNumber { @@ -123,7 +123,7 @@ func (x CreateReq_ConsumerStrategy) Number() protoreflect.EnumNumber { // Deprecated: Use CreateReq_ConsumerStrategy.Descriptor instead. func (CreateReq_ConsumerStrategy) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 0} } type UpdateReq_ConsumerStrategy int32 @@ -159,11 +159,11 @@ func (x UpdateReq_ConsumerStrategy) String() string { } func (UpdateReq_ConsumerStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v1_persistent_proto_enumTypes[2].Descriptor() + return file_trogoneventstore_protocols_v1_persistent_proto_enumTypes[2].Descriptor() } func (UpdateReq_ConsumerStrategy) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v1_persistent_proto_enumTypes[2] + return &file_trogoneventstore_protocols_v1_persistent_proto_enumTypes[2] } func (x UpdateReq_ConsumerStrategy) Number() protoreflect.EnumNumber { @@ -172,7 +172,7 @@ func (x UpdateReq_ConsumerStrategy) Number() protoreflect.EnumNumber { // Deprecated: Use UpdateReq_ConsumerStrategy.Descriptor instead. func (UpdateReq_ConsumerStrategy) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 0} } type ReadReq struct { @@ -189,7 +189,7 @@ type ReadReq struct { func (x *ReadReq) Reset() { *x = ReadReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -201,7 +201,7 @@ func (x *ReadReq) String() string { func (*ReadReq) ProtoMessage() {} func (x *ReadReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -214,7 +214,7 @@ func (x *ReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq.ProtoReflect.Descriptor instead. func (*ReadReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{0} } func (x *ReadReq) GetContent() isReadReq_Content { @@ -286,7 +286,7 @@ type ReadResp struct { func (x *ReadResp) Reset() { *x = ReadResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -298,7 +298,7 @@ func (x *ReadResp) String() string { func (*ReadResp) ProtoMessage() {} func (x *ReadResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -311,7 +311,7 @@ func (x *ReadResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp.ProtoReflect.Descriptor instead. func (*ReadResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{1} } func (x *ReadResp) GetContent() isReadResp_Content { @@ -364,7 +364,7 @@ type CreateReq struct { func (x *CreateReq) Reset() { *x = CreateReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -376,7 +376,7 @@ func (x *CreateReq) String() string { func (*CreateReq) ProtoMessage() {} func (x *CreateReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -389,7 +389,7 @@ func (x *CreateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateReq.ProtoReflect.Descriptor instead. func (*CreateReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2} } func (x *CreateReq) GetOptions() *CreateReq_Options { @@ -407,7 +407,7 @@ type CreateResp struct { func (x *CreateResp) Reset() { *x = CreateResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[3] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -419,7 +419,7 @@ func (x *CreateResp) String() string { func (*CreateResp) ProtoMessage() {} func (x *CreateResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[3] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -432,7 +432,7 @@ func (x *CreateResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateResp.ProtoReflect.Descriptor instead. func (*CreateResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{3} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{3} } type UpdateReq struct { @@ -444,7 +444,7 @@ type UpdateReq struct { func (x *UpdateReq) Reset() { *x = UpdateReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[4] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -456,7 +456,7 @@ func (x *UpdateReq) String() string { func (*UpdateReq) ProtoMessage() {} func (x *UpdateReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[4] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -469,7 +469,7 @@ func (x *UpdateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateReq.ProtoReflect.Descriptor instead. func (*UpdateReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4} } func (x *UpdateReq) GetOptions() *UpdateReq_Options { @@ -487,7 +487,7 @@ type UpdateResp struct { func (x *UpdateResp) Reset() { *x = UpdateResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[5] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -499,7 +499,7 @@ func (x *UpdateResp) String() string { func (*UpdateResp) ProtoMessage() {} func (x *UpdateResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[5] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -512,7 +512,7 @@ func (x *UpdateResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateResp.ProtoReflect.Descriptor instead. func (*UpdateResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{5} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{5} } type DeleteReq struct { @@ -524,7 +524,7 @@ type DeleteReq struct { func (x *DeleteReq) Reset() { *x = DeleteReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[6] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -536,7 +536,7 @@ func (x *DeleteReq) String() string { func (*DeleteReq) ProtoMessage() {} func (x *DeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[6] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -549,7 +549,7 @@ func (x *DeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. func (*DeleteReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{6} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{6} } func (x *DeleteReq) GetOptions() *DeleteReq_Options { @@ -567,7 +567,7 @@ type DeleteResp struct { func (x *DeleteResp) Reset() { *x = DeleteResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[7] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -579,7 +579,7 @@ func (x *DeleteResp) String() string { func (*DeleteResp) ProtoMessage() {} func (x *DeleteResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[7] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -592,7 +592,7 @@ func (x *DeleteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. func (*DeleteResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{7} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{7} } type GetInfoReq struct { @@ -604,7 +604,7 @@ type GetInfoReq struct { func (x *GetInfoReq) Reset() { *x = GetInfoReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[8] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -616,7 +616,7 @@ func (x *GetInfoReq) String() string { func (*GetInfoReq) ProtoMessage() {} func (x *GetInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[8] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -629,7 +629,7 @@ func (x *GetInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoReq.ProtoReflect.Descriptor instead. func (*GetInfoReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{8} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{8} } func (x *GetInfoReq) GetOptions() *GetInfoReq_Options { @@ -648,7 +648,7 @@ type GetInfoResp struct { func (x *GetInfoResp) Reset() { *x = GetInfoResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[9] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -660,7 +660,7 @@ func (x *GetInfoResp) String() string { func (*GetInfoResp) ProtoMessage() {} func (x *GetInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[9] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -673,7 +673,7 @@ func (x *GetInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoResp.ProtoReflect.Descriptor instead. func (*GetInfoResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{9} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{9} } func (x *GetInfoResp) GetSubscriptionInfo() *SubscriptionInfo { @@ -719,7 +719,7 @@ type SubscriptionInfo struct { func (x *SubscriptionInfo) Reset() { *x = SubscriptionInfo{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[10] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -731,7 +731,7 @@ func (x *SubscriptionInfo) String() string { func (*SubscriptionInfo) ProtoMessage() {} func (x *SubscriptionInfo) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[10] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -744,7 +744,7 @@ func (x *SubscriptionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionInfo.ProtoReflect.Descriptor instead. func (*SubscriptionInfo) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{10} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{10} } func (x *SubscriptionInfo) GetEventSource() string { @@ -952,7 +952,7 @@ type ReplayParkedReq struct { func (x *ReplayParkedReq) Reset() { *x = ReplayParkedReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[11] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -964,7 +964,7 @@ func (x *ReplayParkedReq) String() string { func (*ReplayParkedReq) ProtoMessage() {} func (x *ReplayParkedReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[11] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -977,7 +977,7 @@ func (x *ReplayParkedReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayParkedReq.ProtoReflect.Descriptor instead. func (*ReplayParkedReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{11} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{11} } func (x *ReplayParkedReq) GetOptions() *ReplayParkedReq_Options { @@ -995,7 +995,7 @@ type ReplayParkedResp struct { func (x *ReplayParkedResp) Reset() { *x = ReplayParkedResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[12] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1007,7 +1007,7 @@ func (x *ReplayParkedResp) String() string { func (*ReplayParkedResp) ProtoMessage() {} func (x *ReplayParkedResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[12] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1020,7 +1020,87 @@ func (x *ReplayParkedResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayParkedResp.ProtoReflect.Descriptor instead. func (*ReplayParkedResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{12} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{12} +} + +type TruncateParkedReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *TruncateParkedReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TruncateParkedReq) Reset() { + *x = TruncateParkedReq{} + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TruncateParkedReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TruncateParkedReq) ProtoMessage() {} + +func (x *TruncateParkedReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TruncateParkedReq.ProtoReflect.Descriptor instead. +func (*TruncateParkedReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{13} +} + +func (x *TruncateParkedReq) GetOptions() *TruncateParkedReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type TruncateParkedResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TruncateParkedResp) Reset() { + *x = TruncateParkedResp{} + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TruncateParkedResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TruncateParkedResp) ProtoMessage() {} + +func (x *TruncateParkedResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TruncateParkedResp.ProtoReflect.Descriptor instead. +func (*TruncateParkedResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{14} } type ListReq struct { @@ -1032,7 +1112,7 @@ type ListReq struct { func (x *ListReq) Reset() { *x = ListReq{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[13] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1044,7 +1124,7 @@ func (x *ListReq) String() string { func (*ListReq) ProtoMessage() {} func (x *ListReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[13] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1057,7 +1137,7 @@ func (x *ListReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReq.ProtoReflect.Descriptor instead. func (*ListReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{13} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{15} } func (x *ListReq) GetOptions() *ListReq_Options { @@ -1070,13 +1150,16 @@ func (x *ListReq) GetOptions() *ListReq_Options { type ListResp struct { state protoimpl.MessageState `protogen:"open.v1"` Subscriptions []*SubscriptionInfo `protobuf:"bytes,1,rep,name=subscriptions,proto3" json:"subscriptions,omitempty"` + Offset *int32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + Count *int32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + Total *int32 `protobuf:"varint,4,opt,name=total,proto3,oneof" json:"total,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListResp) Reset() { *x = ListResp{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[14] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1088,7 +1171,7 @@ func (x *ListResp) String() string { func (*ListResp) ProtoMessage() {} func (x *ListResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[14] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1101,7 +1184,7 @@ func (x *ListResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResp.ProtoReflect.Descriptor instead. func (*ListResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{14} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{16} } func (x *ListResp) GetSubscriptions() []*SubscriptionInfo { @@ -1111,6 +1194,27 @@ func (x *ListResp) GetSubscriptions() []*SubscriptionInfo { return nil } +func (x *ListResp) GetOffset() int32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *ListResp) GetCount() int32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +func (x *ListResp) GetTotal() int32 { + if x != nil && x.Total != nil { + return *x.Total + } + return 0 +} + type ReadReq_Options struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to StreamOption: @@ -1127,7 +1231,7 @@ type ReadReq_Options struct { func (x *ReadReq_Options) Reset() { *x = ReadReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[15] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1139,7 +1243,7 @@ func (x *ReadReq_Options) String() string { func (*ReadReq_Options) ProtoMessage() {} func (x *ReadReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[15] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1152,7 +1256,7 @@ func (x *ReadReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options.ProtoReflect.Descriptor instead. func (*ReadReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 0} } func (x *ReadReq_Options) GetStreamOption() isReadReq_Options_StreamOption { @@ -1227,7 +1331,7 @@ type ReadReq_Ack struct { func (x *ReadReq_Ack) Reset() { *x = ReadReq_Ack{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[16] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +1343,7 @@ func (x *ReadReq_Ack) String() string { func (*ReadReq_Ack) ProtoMessage() {} func (x *ReadReq_Ack) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[16] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +1356,7 @@ func (x *ReadReq_Ack) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Ack.ProtoReflect.Descriptor instead. func (*ReadReq_Ack) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 1} } func (x *ReadReq_Ack) GetId() []byte { @@ -1281,7 +1385,7 @@ type ReadReq_Nack struct { func (x *ReadReq_Nack) Reset() { *x = ReadReq_Nack{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[17] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1293,7 +1397,7 @@ func (x *ReadReq_Nack) String() string { func (*ReadReq_Nack) ProtoMessage() {} func (x *ReadReq_Nack) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[17] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1306,7 +1410,7 @@ func (x *ReadReq_Nack) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Nack.ProtoReflect.Descriptor instead. func (*ReadReq_Nack) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 2} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 2} } func (x *ReadReq_Nack) GetId() []byte { @@ -1350,7 +1454,7 @@ type ReadReq_Options_UUIDOption struct { func (x *ReadReq_Options_UUIDOption) Reset() { *x = ReadReq_Options_UUIDOption{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[18] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1362,7 +1466,7 @@ func (x *ReadReq_Options_UUIDOption) String() string { func (*ReadReq_Options_UUIDOption) ProtoMessage() {} func (x *ReadReq_Options_UUIDOption) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[18] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1375,7 +1479,7 @@ func (x *ReadReq_Options_UUIDOption) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_UUIDOption.ProtoReflect.Descriptor instead. func (*ReadReq_Options_UUIDOption) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 0, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{0, 0, 0} } func (x *ReadReq_Options_UUIDOption) GetContent() isReadReq_Options_UUIDOption_Content { @@ -1439,7 +1543,7 @@ type ReadResp_ReadEvent struct { func (x *ReadResp_ReadEvent) Reset() { *x = ReadResp_ReadEvent{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[19] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1451,7 +1555,7 @@ func (x *ReadResp_ReadEvent) String() string { func (*ReadResp_ReadEvent) ProtoMessage() {} func (x *ReadResp_ReadEvent) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[19] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1464,7 +1568,7 @@ func (x *ReadResp_ReadEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_ReadEvent.ProtoReflect.Descriptor instead. func (*ReadResp_ReadEvent) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{1, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{1, 0} } func (x *ReadResp_ReadEvent) GetEvent() *ReadResp_ReadEvent_RecordedEvent { @@ -1572,7 +1676,7 @@ type ReadResp_SubscriptionConfirmation struct { func (x *ReadResp_SubscriptionConfirmation) Reset() { *x = ReadResp_SubscriptionConfirmation{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[20] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1584,7 +1688,7 @@ func (x *ReadResp_SubscriptionConfirmation) String() string { func (*ReadResp_SubscriptionConfirmation) ProtoMessage() {} func (x *ReadResp_SubscriptionConfirmation) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[20] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1597,7 +1701,7 @@ func (x *ReadResp_SubscriptionConfirmation) ProtoReflect() protoreflect.Message // Deprecated: Use ReadResp_SubscriptionConfirmation.ProtoReflect.Descriptor instead. func (*ReadResp_SubscriptionConfirmation) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{1, 1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{1, 1} } func (x *ReadResp_SubscriptionConfirmation) GetSubscriptionId() string { @@ -1623,7 +1727,7 @@ type ReadResp_ReadEvent_RecordedEvent struct { func (x *ReadResp_ReadEvent_RecordedEvent) Reset() { *x = ReadResp_ReadEvent_RecordedEvent{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[21] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1635,7 +1739,7 @@ func (x *ReadResp_ReadEvent_RecordedEvent) String() string { func (*ReadResp_ReadEvent_RecordedEvent) ProtoMessage() {} func (x *ReadResp_ReadEvent_RecordedEvent) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[21] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1648,7 +1752,7 @@ func (x *ReadResp_ReadEvent_RecordedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_ReadEvent_RecordedEvent.ProtoReflect.Descriptor instead. func (*ReadResp_ReadEvent_RecordedEvent) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{1, 0, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{1, 0, 0} } func (x *ReadResp_ReadEvent_RecordedEvent) GetId() *shared.UUID { @@ -1714,7 +1818,7 @@ type CreateReq_Options struct { // *CreateReq_Options_Stream // *CreateReq_Options_All StreamOption isCreateReq_Options_StreamOption `protobuf_oneof:"stream_option"` - // Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. + // Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. StreamIdentifier *shared.StreamIdentifier `protobuf:"bytes,1,opt,name=stream_identifier,json=streamIdentifier,proto3" json:"stream_identifier,omitempty"` GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` Settings *CreateReq_Settings `protobuf:"bytes,3,opt,name=settings,proto3" json:"settings,omitempty"` @@ -1724,7 +1828,7 @@ type CreateReq_Options struct { func (x *CreateReq_Options) Reset() { *x = CreateReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[23] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1736,7 +1840,7 @@ func (x *CreateReq_Options) String() string { func (*CreateReq_Options) ProtoMessage() {} func (x *CreateReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[23] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1749,7 +1853,7 @@ func (x *CreateReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateReq_Options.ProtoReflect.Descriptor instead. func (*CreateReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 0} } func (x *CreateReq_Options) GetStreamOption() isCreateReq_Options_StreamOption { @@ -1777,7 +1881,7 @@ func (x *CreateReq_Options) GetAll() *CreateReq_AllOptions { return nil } -// Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. +// Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. func (x *CreateReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { if x != nil { return x.StreamIdentifier @@ -1830,7 +1934,7 @@ type CreateReq_StreamOptions struct { func (x *CreateReq_StreamOptions) Reset() { *x = CreateReq_StreamOptions{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[24] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1842,7 +1946,7 @@ func (x *CreateReq_StreamOptions) String() string { func (*CreateReq_StreamOptions) ProtoMessage() {} func (x *CreateReq_StreamOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[24] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1855,7 +1959,7 @@ func (x *CreateReq_StreamOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateReq_StreamOptions.ProtoReflect.Descriptor instead. func (*CreateReq_StreamOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 1} } func (x *CreateReq_StreamOptions) GetStreamIdentifier() *shared.StreamIdentifier { @@ -1940,7 +2044,7 @@ type CreateReq_AllOptions struct { func (x *CreateReq_AllOptions) Reset() { *x = CreateReq_AllOptions{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[25] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1952,7 +2056,7 @@ func (x *CreateReq_AllOptions) String() string { func (*CreateReq_AllOptions) ProtoMessage() {} func (x *CreateReq_AllOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[25] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1965,7 +2069,7 @@ func (x *CreateReq_AllOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateReq_AllOptions.ProtoReflect.Descriptor instead. func (*CreateReq_AllOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 2} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 2} } func (x *CreateReq_AllOptions) GetAllOption() isCreateReq_AllOptions_AllOption { @@ -2075,7 +2179,7 @@ type CreateReq_Position struct { func (x *CreateReq_Position) Reset() { *x = CreateReq_Position{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[26] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2087,7 +2191,7 @@ func (x *CreateReq_Position) String() string { func (*CreateReq_Position) ProtoMessage() {} func (x *CreateReq_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[26] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2100,7 +2204,7 @@ func (x *CreateReq_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateReq_Position.ProtoReflect.Descriptor instead. func (*CreateReq_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 3} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 3} } func (x *CreateReq_Position) GetCommitPosition() uint64 { @@ -2120,7 +2224,7 @@ func (x *CreateReq_Position) GetPreparePosition() uint64 { type CreateReq_Settings struct { state protoimpl.MessageState `protogen:"open.v1"` ResolveLinks bool `protobuf:"varint,1,opt,name=resolve_links,json=resolveLinks,proto3" json:"resolve_links,omitempty"` - // Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. + // Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. Revision uint64 `protobuf:"varint,2,opt,name=revision,proto3" json:"revision,omitempty"` ExtraStatistics bool `protobuf:"varint,3,opt,name=extra_statistics,json=extraStatistics,proto3" json:"extra_statistics,omitempty"` MaxRetryCount int32 `protobuf:"varint,5,opt,name=max_retry_count,json=maxRetryCount,proto3" json:"max_retry_count,omitempty"` @@ -2130,7 +2234,7 @@ type CreateReq_Settings struct { LiveBufferSize int32 `protobuf:"varint,10,opt,name=live_buffer_size,json=liveBufferSize,proto3" json:"live_buffer_size,omitempty"` ReadBatchSize int32 `protobuf:"varint,11,opt,name=read_batch_size,json=readBatchSize,proto3" json:"read_batch_size,omitempty"` HistoryBufferSize int32 `protobuf:"varint,12,opt,name=history_buffer_size,json=historyBufferSize,proto3" json:"history_buffer_size,omitempty"` - // Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. + // Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. NamedConsumerStrategy CreateReq_ConsumerStrategy `protobuf:"varint,13,opt,name=named_consumer_strategy,json=namedConsumerStrategy,proto3,enum=event_store.client.persistent_subscriptions.CreateReq_ConsumerStrategy" json:"named_consumer_strategy,omitempty"` // Types that are valid to be assigned to MessageTimeout: // @@ -2149,7 +2253,7 @@ type CreateReq_Settings struct { func (x *CreateReq_Settings) Reset() { *x = CreateReq_Settings{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[27] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2161,7 +2265,7 @@ func (x *CreateReq_Settings) String() string { func (*CreateReq_Settings) ProtoMessage() {} func (x *CreateReq_Settings) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[27] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2174,7 +2278,7 @@ func (x *CreateReq_Settings) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateReq_Settings.ProtoReflect.Descriptor instead. func (*CreateReq_Settings) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 4} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 4} } func (x *CreateReq_Settings) GetResolveLinks() bool { @@ -2184,7 +2288,7 @@ func (x *CreateReq_Settings) GetResolveLinks() bool { return false } -// Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. +// Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. func (x *CreateReq_Settings) GetRevision() uint64 { if x != nil { return x.Revision @@ -2248,7 +2352,7 @@ func (x *CreateReq_Settings) GetHistoryBufferSize() int32 { return 0 } -// Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. +// Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. func (x *CreateReq_Settings) GetNamedConsumerStrategy() CreateReq_ConsumerStrategy { if x != nil { return x.NamedConsumerStrategy @@ -2364,7 +2468,7 @@ type CreateReq_AllOptions_FilterOptions struct { func (x *CreateReq_AllOptions_FilterOptions) Reset() { *x = CreateReq_AllOptions_FilterOptions{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[28] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2376,7 +2480,7 @@ func (x *CreateReq_AllOptions_FilterOptions) String() string { func (*CreateReq_AllOptions_FilterOptions) ProtoMessage() {} func (x *CreateReq_AllOptions_FilterOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[28] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2389,7 +2493,7 @@ func (x *CreateReq_AllOptions_FilterOptions) ProtoReflect() protoreflect.Message // Deprecated: Use CreateReq_AllOptions_FilterOptions.ProtoReflect.Descriptor instead. func (*CreateReq_AllOptions_FilterOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 2, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 2, 0} } func (x *CreateReq_AllOptions_FilterOptions) GetFilter() isCreateReq_AllOptions_FilterOptions_Filter { @@ -2492,7 +2596,7 @@ type CreateReq_AllOptions_FilterOptions_Expression struct { func (x *CreateReq_AllOptions_FilterOptions_Expression) Reset() { *x = CreateReq_AllOptions_FilterOptions_Expression{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[29] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2504,7 +2608,7 @@ func (x *CreateReq_AllOptions_FilterOptions_Expression) String() string { func (*CreateReq_AllOptions_FilterOptions_Expression) ProtoMessage() {} func (x *CreateReq_AllOptions_FilterOptions_Expression) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[29] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2517,7 +2621,7 @@ func (x *CreateReq_AllOptions_FilterOptions_Expression) ProtoReflect() protorefl // Deprecated: Use CreateReq_AllOptions_FilterOptions_Expression.ProtoReflect.Descriptor instead. func (*CreateReq_AllOptions_FilterOptions_Expression) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 2, 0, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{2, 2, 0, 0} } func (x *CreateReq_AllOptions_FilterOptions_Expression) GetRegex() string { @@ -2541,7 +2645,7 @@ type UpdateReq_Options struct { // *UpdateReq_Options_Stream // *UpdateReq_Options_All StreamOption isUpdateReq_Options_StreamOption `protobuf_oneof:"stream_option"` - // Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. + // Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. StreamIdentifier *shared.StreamIdentifier `protobuf:"bytes,1,opt,name=stream_identifier,json=streamIdentifier,proto3" json:"stream_identifier,omitempty"` GroupName string `protobuf:"bytes,2,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` Settings *UpdateReq_Settings `protobuf:"bytes,3,opt,name=settings,proto3" json:"settings,omitempty"` @@ -2551,7 +2655,7 @@ type UpdateReq_Options struct { func (x *UpdateReq_Options) Reset() { *x = UpdateReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[30] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2563,7 +2667,7 @@ func (x *UpdateReq_Options) String() string { func (*UpdateReq_Options) ProtoMessage() {} func (x *UpdateReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[30] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2576,7 +2680,7 @@ func (x *UpdateReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateReq_Options.ProtoReflect.Descriptor instead. func (*UpdateReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 0} } func (x *UpdateReq_Options) GetStreamOption() isUpdateReq_Options_StreamOption { @@ -2604,7 +2708,7 @@ func (x *UpdateReq_Options) GetAll() *UpdateReq_AllOptions { return nil } -// Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. +// Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. func (x *UpdateReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { if x != nil { return x.StreamIdentifier @@ -2657,7 +2761,7 @@ type UpdateReq_StreamOptions struct { func (x *UpdateReq_StreamOptions) Reset() { *x = UpdateReq_StreamOptions{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[31] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2669,7 +2773,7 @@ func (x *UpdateReq_StreamOptions) String() string { func (*UpdateReq_StreamOptions) ProtoMessage() {} func (x *UpdateReq_StreamOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[31] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2682,7 +2786,7 @@ func (x *UpdateReq_StreamOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateReq_StreamOptions.ProtoReflect.Descriptor instead. func (*UpdateReq_StreamOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 1} } func (x *UpdateReq_StreamOptions) GetStreamIdentifier() *shared.StreamIdentifier { @@ -2762,7 +2866,7 @@ type UpdateReq_AllOptions struct { func (x *UpdateReq_AllOptions) Reset() { *x = UpdateReq_AllOptions{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[32] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2774,7 +2878,7 @@ func (x *UpdateReq_AllOptions) String() string { func (*UpdateReq_AllOptions) ProtoMessage() {} func (x *UpdateReq_AllOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[32] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2787,7 +2891,7 @@ func (x *UpdateReq_AllOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateReq_AllOptions.ProtoReflect.Descriptor instead. func (*UpdateReq_AllOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 2} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 2} } func (x *UpdateReq_AllOptions) GetAllOption() isUpdateReq_AllOptions_AllOption { @@ -2856,7 +2960,7 @@ type UpdateReq_Position struct { func (x *UpdateReq_Position) Reset() { *x = UpdateReq_Position{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[33] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2868,7 +2972,7 @@ func (x *UpdateReq_Position) String() string { func (*UpdateReq_Position) ProtoMessage() {} func (x *UpdateReq_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[33] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2881,7 +2985,7 @@ func (x *UpdateReq_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateReq_Position.ProtoReflect.Descriptor instead. func (*UpdateReq_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 3} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 3} } func (x *UpdateReq_Position) GetCommitPosition() uint64 { @@ -2901,16 +3005,17 @@ func (x *UpdateReq_Position) GetPreparePosition() uint64 { type UpdateReq_Settings struct { state protoimpl.MessageState `protogen:"open.v1"` ResolveLinks bool `protobuf:"varint,1,opt,name=resolve_links,json=resolveLinks,proto3" json:"resolve_links,omitempty"` - // Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. - Revision uint64 `protobuf:"varint,2,opt,name=revision,proto3" json:"revision,omitempty"` - ExtraStatistics bool `protobuf:"varint,3,opt,name=extra_statistics,json=extraStatistics,proto3" json:"extra_statistics,omitempty"` - MaxRetryCount int32 `protobuf:"varint,5,opt,name=max_retry_count,json=maxRetryCount,proto3" json:"max_retry_count,omitempty"` - MinCheckpointCount int32 `protobuf:"varint,7,opt,name=min_checkpoint_count,json=minCheckpointCount,proto3" json:"min_checkpoint_count,omitempty"` - MaxCheckpointCount int32 `protobuf:"varint,8,opt,name=max_checkpoint_count,json=maxCheckpointCount,proto3" json:"max_checkpoint_count,omitempty"` - MaxSubscriberCount int32 `protobuf:"varint,9,opt,name=max_subscriber_count,json=maxSubscriberCount,proto3" json:"max_subscriber_count,omitempty"` - LiveBufferSize int32 `protobuf:"varint,10,opt,name=live_buffer_size,json=liveBufferSize,proto3" json:"live_buffer_size,omitempty"` - ReadBatchSize int32 `protobuf:"varint,11,opt,name=read_batch_size,json=readBatchSize,proto3" json:"read_batch_size,omitempty"` - HistoryBufferSize int32 `protobuf:"varint,12,opt,name=history_buffer_size,json=historyBufferSize,proto3" json:"history_buffer_size,omitempty"` + // Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. + Revision uint64 `protobuf:"varint,2,opt,name=revision,proto3" json:"revision,omitempty"` + ExtraStatistics bool `protobuf:"varint,3,opt,name=extra_statistics,json=extraStatistics,proto3" json:"extra_statistics,omitempty"` + MaxRetryCount int32 `protobuf:"varint,5,opt,name=max_retry_count,json=maxRetryCount,proto3" json:"max_retry_count,omitempty"` + MinCheckpointCount int32 `protobuf:"varint,7,opt,name=min_checkpoint_count,json=minCheckpointCount,proto3" json:"min_checkpoint_count,omitempty"` + MaxCheckpointCount int32 `protobuf:"varint,8,opt,name=max_checkpoint_count,json=maxCheckpointCount,proto3" json:"max_checkpoint_count,omitempty"` + MaxSubscriberCount int32 `protobuf:"varint,9,opt,name=max_subscriber_count,json=maxSubscriberCount,proto3" json:"max_subscriber_count,omitempty"` + LiveBufferSize int32 `protobuf:"varint,10,opt,name=live_buffer_size,json=liveBufferSize,proto3" json:"live_buffer_size,omitempty"` + ReadBatchSize int32 `protobuf:"varint,11,opt,name=read_batch_size,json=readBatchSize,proto3" json:"read_batch_size,omitempty"` + HistoryBufferSize int32 `protobuf:"varint,12,opt,name=history_buffer_size,json=historyBufferSize,proto3" json:"history_buffer_size,omitempty"` + // Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. NamedConsumerStrategy UpdateReq_ConsumerStrategy `protobuf:"varint,13,opt,name=named_consumer_strategy,json=namedConsumerStrategy,proto3,enum=event_store.client.persistent_subscriptions.UpdateReq_ConsumerStrategy" json:"named_consumer_strategy,omitempty"` // Types that are valid to be assigned to MessageTimeout: // @@ -2921,14 +3026,15 @@ type UpdateReq_Settings struct { // // *UpdateReq_Settings_CheckpointAfterTicks // *UpdateReq_Settings_CheckpointAfterMs - CheckpointAfter isUpdateReq_Settings_CheckpointAfter `protobuf_oneof:"checkpoint_after"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + CheckpointAfter isUpdateReq_Settings_CheckpointAfter `protobuf_oneof:"checkpoint_after"` + ConsumerStrategy string `protobuf:"bytes,16,opt,name=consumer_strategy,json=consumerStrategy,proto3" json:"consumer_strategy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateReq_Settings) Reset() { *x = UpdateReq_Settings{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[34] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2940,7 +3046,7 @@ func (x *UpdateReq_Settings) String() string { func (*UpdateReq_Settings) ProtoMessage() {} func (x *UpdateReq_Settings) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[34] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2953,7 +3059,7 @@ func (x *UpdateReq_Settings) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateReq_Settings.ProtoReflect.Descriptor instead. func (*UpdateReq_Settings) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 4} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{4, 4} } func (x *UpdateReq_Settings) GetResolveLinks() bool { @@ -2963,7 +3069,7 @@ func (x *UpdateReq_Settings) GetResolveLinks() bool { return false } -// Deprecated: Marked as deprecated in kurrentdb/protocols/v1/persistent.proto. +// Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. func (x *UpdateReq_Settings) GetRevision() uint64 { if x != nil { return x.Revision @@ -3027,6 +3133,7 @@ func (x *UpdateReq_Settings) GetHistoryBufferSize() int32 { return 0 } +// Deprecated: Marked as deprecated in trogoneventstore/protocols/v1/persistent.proto. func (x *UpdateReq_Settings) GetNamedConsumerStrategy() UpdateReq_ConsumerStrategy { if x != nil { return x.NamedConsumerStrategy @@ -3084,6 +3191,13 @@ func (x *UpdateReq_Settings) GetCheckpointAfterMs() int32 { return 0 } +func (x *UpdateReq_Settings) GetConsumerStrategy() string { + if x != nil { + return x.ConsumerStrategy + } + return "" +} + type isUpdateReq_Settings_MessageTimeout interface { isUpdateReq_Settings_MessageTimeout() } @@ -3130,7 +3244,7 @@ type DeleteReq_Options struct { func (x *DeleteReq_Options) Reset() { *x = DeleteReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[35] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3142,7 +3256,7 @@ func (x *DeleteReq_Options) String() string { func (*DeleteReq_Options) ProtoMessage() {} func (x *DeleteReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[35] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3155,7 +3269,7 @@ func (x *DeleteReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReq_Options.ProtoReflect.Descriptor instead. func (*DeleteReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{6, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{6, 0} } func (x *DeleteReq_Options) GetStreamOption() isDeleteReq_Options_StreamOption { @@ -3220,7 +3334,7 @@ type GetInfoReq_Options struct { func (x *GetInfoReq_Options) Reset() { *x = GetInfoReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[36] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3232,7 +3346,7 @@ func (x *GetInfoReq_Options) String() string { func (*GetInfoReq_Options) ProtoMessage() {} func (x *GetInfoReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[36] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3245,7 +3359,7 @@ func (x *GetInfoReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoReq_Options.ProtoReflect.Descriptor instead. func (*GetInfoReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{8, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{8, 0} } func (x *GetInfoReq_Options) GetStreamOption() isGetInfoReq_Options_StreamOption { @@ -3313,7 +3427,7 @@ type SubscriptionInfo_ConnectionInfo struct { func (x *SubscriptionInfo_ConnectionInfo) Reset() { *x = SubscriptionInfo_ConnectionInfo{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[37] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3325,7 +3439,7 @@ func (x *SubscriptionInfo_ConnectionInfo) String() string { func (*SubscriptionInfo_ConnectionInfo) ProtoMessage() {} func (x *SubscriptionInfo_ConnectionInfo) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[37] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3338,7 +3452,7 @@ func (x *SubscriptionInfo_ConnectionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionInfo_ConnectionInfo.ProtoReflect.Descriptor instead. func (*SubscriptionInfo_ConnectionInfo) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{10, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{10, 0} } func (x *SubscriptionInfo_ConnectionInfo) GetFrom() string { @@ -3414,7 +3528,7 @@ type SubscriptionInfo_Measurement struct { func (x *SubscriptionInfo_Measurement) Reset() { *x = SubscriptionInfo_Measurement{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[38] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3426,7 +3540,7 @@ func (x *SubscriptionInfo_Measurement) String() string { func (*SubscriptionInfo_Measurement) ProtoMessage() {} func (x *SubscriptionInfo_Measurement) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[38] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3439,7 +3553,7 @@ func (x *SubscriptionInfo_Measurement) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionInfo_Measurement.ProtoReflect.Descriptor instead. func (*SubscriptionInfo_Measurement) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{10, 1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{10, 1} } func (x *SubscriptionInfo_Measurement) GetKey() string { @@ -3475,7 +3589,7 @@ type ReplayParkedReq_Options struct { func (x *ReplayParkedReq_Options) Reset() { *x = ReplayParkedReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[39] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3487,7 +3601,7 @@ func (x *ReplayParkedReq_Options) String() string { func (*ReplayParkedReq_Options) ProtoMessage() {} func (x *ReplayParkedReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[39] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3500,7 +3614,7 @@ func (x *ReplayParkedReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayParkedReq_Options.ProtoReflect.Descriptor instead. func (*ReplayParkedReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{11, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{11, 0} } func (x *ReplayParkedReq_Options) GetGroupName() string { @@ -3592,6 +3706,142 @@ func (*ReplayParkedReq_Options_StopAt) isReplayParkedReq_Options_StopAtOption() func (*ReplayParkedReq_Options_NoLimit) isReplayParkedReq_Options_StopAtOption() {} +type TruncateParkedReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + GroupName string `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"` + // Types that are valid to be assigned to StreamOption: + // + // *TruncateParkedReq_Options_StreamIdentifier + // *TruncateParkedReq_Options_All + StreamOption isTruncateParkedReq_Options_StreamOption `protobuf_oneof:"stream_option"` + // Types that are valid to be assigned to StopAtOption: + // + // *TruncateParkedReq_Options_StopAt + // *TruncateParkedReq_Options_NoLimit + StopAtOption isTruncateParkedReq_Options_StopAtOption `protobuf_oneof:"stop_at_option"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TruncateParkedReq_Options) Reset() { + *x = TruncateParkedReq_Options{} + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TruncateParkedReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TruncateParkedReq_Options) ProtoMessage() {} + +func (x *TruncateParkedReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TruncateParkedReq_Options.ProtoReflect.Descriptor instead. +func (*TruncateParkedReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{13, 0} +} + +func (x *TruncateParkedReq_Options) GetGroupName() string { + if x != nil { + return x.GroupName + } + return "" +} + +func (x *TruncateParkedReq_Options) GetStreamOption() isTruncateParkedReq_Options_StreamOption { + if x != nil { + return x.StreamOption + } + return nil +} + +func (x *TruncateParkedReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { + if x != nil { + if x, ok := x.StreamOption.(*TruncateParkedReq_Options_StreamIdentifier); ok { + return x.StreamIdentifier + } + } + return nil +} + +func (x *TruncateParkedReq_Options) GetAll() *shared.Empty { + if x != nil { + if x, ok := x.StreamOption.(*TruncateParkedReq_Options_All); ok { + return x.All + } + } + return nil +} + +func (x *TruncateParkedReq_Options) GetStopAtOption() isTruncateParkedReq_Options_StopAtOption { + if x != nil { + return x.StopAtOption + } + return nil +} + +func (x *TruncateParkedReq_Options) GetStopAt() int64 { + if x != nil { + if x, ok := x.StopAtOption.(*TruncateParkedReq_Options_StopAt); ok { + return x.StopAt + } + } + return 0 +} + +func (x *TruncateParkedReq_Options) GetNoLimit() *shared.Empty { + if x != nil { + if x, ok := x.StopAtOption.(*TruncateParkedReq_Options_NoLimit); ok { + return x.NoLimit + } + } + return nil +} + +type isTruncateParkedReq_Options_StreamOption interface { + isTruncateParkedReq_Options_StreamOption() +} + +type TruncateParkedReq_Options_StreamIdentifier struct { + StreamIdentifier *shared.StreamIdentifier `protobuf:"bytes,2,opt,name=stream_identifier,json=streamIdentifier,proto3,oneof"` +} + +type TruncateParkedReq_Options_All struct { + All *shared.Empty `protobuf:"bytes,3,opt,name=all,proto3,oneof"` +} + +func (*TruncateParkedReq_Options_StreamIdentifier) isTruncateParkedReq_Options_StreamOption() {} + +func (*TruncateParkedReq_Options_All) isTruncateParkedReq_Options_StreamOption() {} + +type isTruncateParkedReq_Options_StopAtOption interface { + isTruncateParkedReq_Options_StopAtOption() +} + +type TruncateParkedReq_Options_StopAt struct { + StopAt int64 `protobuf:"varint,4,opt,name=stop_at,json=stopAt,proto3,oneof"` +} + +type TruncateParkedReq_Options_NoLimit struct { + NoLimit *shared.Empty `protobuf:"bytes,5,opt,name=no_limit,json=noLimit,proto3,oneof"` +} + +func (*TruncateParkedReq_Options_StopAt) isTruncateParkedReq_Options_StopAtOption() {} + +func (*TruncateParkedReq_Options_NoLimit) isTruncateParkedReq_Options_StopAtOption() {} + type ListReq_Options struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to ListOption: @@ -3599,13 +3849,15 @@ type ListReq_Options struct { // *ListReq_Options_ListAllSubscriptions // *ListReq_Options_ListForStream ListOption isListReq_Options_ListOption `protobuf_oneof:"list_option"` + Offset *int32 `protobuf:"varint,3,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + Count *int32 `protobuf:"varint,4,opt,name=count,proto3,oneof" json:"count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListReq_Options) Reset() { *x = ListReq_Options{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[40] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3617,7 +3869,7 @@ func (x *ListReq_Options) String() string { func (*ListReq_Options) ProtoMessage() {} func (x *ListReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[40] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3630,7 +3882,7 @@ func (x *ListReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReq_Options.ProtoReflect.Descriptor instead. func (*ListReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{13, 0} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{15, 0} } func (x *ListReq_Options) GetListOption() isListReq_Options_ListOption { @@ -3658,6 +3910,20 @@ func (x *ListReq_Options) GetListForStream() *ListReq_StreamOption { return nil } +func (x *ListReq_Options) GetOffset() int32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *ListReq_Options) GetCount() int32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + type isListReq_Options_ListOption interface { isListReq_Options_ListOption() } @@ -3687,7 +3953,7 @@ type ListReq_StreamOption struct { func (x *ListReq_StreamOption) Reset() { *x = ListReq_StreamOption{} - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[41] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3699,7 +3965,7 @@ func (x *ListReq_StreamOption) String() string { func (*ListReq_StreamOption) ProtoMessage() {} func (x *ListReq_StreamOption) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_persistent_proto_msgTypes[41] + mi := &file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3712,7 +3978,7 @@ func (x *ListReq_StreamOption) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReq_StreamOption.ProtoReflect.Descriptor instead. func (*ListReq_StreamOption) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP(), []int{13, 1} + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP(), []int{15, 1} } func (x *ListReq_StreamOption) GetStreamOption() isListReq_StreamOption_StreamOption { @@ -3756,11 +4022,11 @@ func (*ListReq_StreamOption_Stream) isListReq_StreamOption_StreamOption() {} func (*ListReq_StreamOption_All) isListReq_StreamOption_StreamOption() {} -var File_kurrentdb_protocols_v1_persistent_proto protoreflect.FileDescriptor +var File_trogoneventstore_protocols_v1_persistent_proto protoreflect.FileDescriptor -const file_kurrentdb_protocols_v1_persistent_proto_rawDesc = "" + +const file_trogoneventstore_protocols_v1_persistent_proto_rawDesc = "" + "\n" + - "'kurrentdb/protocols/v1/persistent.proto\x12+event_store.client.persistent_subscriptions\x1a#kurrentdb/protocols/v1/shared.proto\"\x9e\b\n" + + ".trogoneventstore/protocols/v1/persistent.proto\x12+event_store.client.persistent_subscriptions\x1a*trogoneventstore/protocols/v1/shared.proto\"\x9e\b\n" + "\aReadReq\x12X\n" + "\aoptions\x18\x01 \x01(\v2<.event_store.client.persistent_subscriptions.ReadReq.OptionsH\x00R\aoptions\x12L\n" + "\x03ack\x18\x02 \x01(\v28.event_store.client.persistent_subscriptions.ReadReq.AckH\x00R\x03ack\x12O\n" + @@ -3896,7 +4162,7 @@ const file_kurrentdb_protocols_v1_persistent_proto_rawDesc = "" + "\n" + "\x06Pinned\x10\x02\"\f\n" + "\n" + - "CreateResp\"\xbd\x0f\n" + + "CreateResp\"\xef\x0f\n" + "\tUpdateReq\x12X\n" + "\aoptions\x18\x01 \x01(\v2>.event_store.client.persistent_subscriptions.UpdateReq.OptionsR\aoptions\x1a\xa4\x03\n" + "\aOptions\x12^\n" + @@ -3922,7 +4188,7 @@ const file_kurrentdb_protocols_v1_persistent_proto_rawDesc = "" + "all_option\x1a^\n" + "\bPosition\x12'\n" + "\x0fcommit_position\x18\x01 \x01(\x04R\x0ecommitPosition\x12)\n" + - "\x10prepare_position\x18\x02 \x01(\x04R\x0fpreparePosition\x1a\xb2\x06\n" + + "\x10prepare_position\x18\x02 \x01(\x04R\x0fpreparePosition\x1a\xe4\x06\n" + "\bSettings\x12#\n" + "\rresolve_links\x18\x01 \x01(\bR\fresolveLinks\x12\x1e\n" + "\brevision\x18\x02 \x01(\x04B\x02\x18\x01R\brevision\x12)\n" + @@ -3934,12 +4200,13 @@ const file_kurrentdb_protocols_v1_persistent_proto_rawDesc = "" + "\x10live_buffer_size\x18\n" + " \x01(\x05R\x0eliveBufferSize\x12&\n" + "\x0fread_batch_size\x18\v \x01(\x05R\rreadBatchSize\x12.\n" + - "\x13history_buffer_size\x18\f \x01(\x05R\x11historyBufferSize\x12\x7f\n" + - "\x17named_consumer_strategy\x18\r \x01(\x0e2G.event_store.client.persistent_subscriptions.UpdateReq.ConsumerStrategyR\x15namedConsumerStrategy\x124\n" + + "\x13history_buffer_size\x18\f \x01(\x05R\x11historyBufferSize\x12\x83\x01\n" + + "\x17named_consumer_strategy\x18\r \x01(\x0e2G.event_store.client.persistent_subscriptions.UpdateReq.ConsumerStrategyB\x02\x18\x01R\x15namedConsumerStrategy\x124\n" + "\x15message_timeout_ticks\x18\x04 \x01(\x03H\x00R\x13messageTimeoutTicks\x12.\n" + "\x12message_timeout_ms\x18\x0e \x01(\x05H\x00R\x10messageTimeoutMs\x126\n" + "\x16checkpoint_after_ticks\x18\x06 \x01(\x03H\x01R\x14checkpointAfterTicks\x120\n" + - "\x13checkpoint_after_ms\x18\x0f \x01(\x05H\x01R\x11checkpointAfterMsB\x11\n" + + "\x13checkpoint_after_ms\x18\x0f \x01(\x05H\x01R\x11checkpointAfterMs\x12+\n" + + "\x11consumer_strategy\x18\x10 \x01(\tR\x10consumerStrategyB\x11\n" + "\x0fmessage_timeoutB\x12\n" + "\x10checkpoint_after\"D\n" + "\x10ConsumerStrategy\x12\x14\n" + @@ -4030,45 +4297,68 @@ const file_kurrentdb_protocols_v1_persistent_proto_rawDesc = "" + "\bno_limit\x18\x05 \x01(\v2\x19.event_store.client.EmptyH\x01R\anoLimitB\x0f\n" + "\rstream_optionB\x10\n" + "\x0estop_at_option\"\x12\n" + - "\x10ReplayParkedResp\"\xcd\x03\n" + + "\x10ReplayParkedResp\"\x9a\x03\n" + + "\x11TruncateParkedReq\x12`\n" + + "\aoptions\x18\x01 \x01(\v2F.event_store.client.persistent_subscriptions.TruncateParkedReq.OptionsR\aoptions\x1a\xa2\x02\n" + + "\aOptions\x12\x1d\n" + + "\n" + + "group_name\x18\x01 \x01(\tR\tgroupName\x12S\n" + + "\x11stream_identifier\x18\x02 \x01(\v2$.event_store.client.StreamIdentifierH\x00R\x10streamIdentifier\x12-\n" + + "\x03all\x18\x03 \x01(\v2\x19.event_store.client.EmptyH\x00R\x03all\x12\x19\n" + + "\astop_at\x18\x04 \x01(\x03H\x01R\x06stopAt\x126\n" + + "\bno_limit\x18\x05 \x01(\v2\x19.event_store.client.EmptyH\x01R\anoLimitB\x0f\n" + + "\rstream_optionB\x10\n" + + "\x0estop_at_option\"\x14\n" + + "\x12TruncateParkedResp\"\x9a\x04\n" + "\aListReq\x12V\n" + - "\aoptions\x18\x01 \x01(\v2<.event_store.client.persistent_subscriptions.ListReq.OptionsR\aoptions\x1a\xd8\x01\n" + + "\aoptions\x18\x01 \x01(\v2<.event_store.client.persistent_subscriptions.ListReq.OptionsR\aoptions\x1a\xa5\x02\n" + "\aOptions\x12Q\n" + "\x16list_all_subscriptions\x18\x01 \x01(\v2\x19.event_store.client.EmptyH\x00R\x14listAllSubscriptions\x12k\n" + - "\x0flist_for_stream\x18\x02 \x01(\v2A.event_store.client.persistent_subscriptions.ListReq.StreamOptionH\x00R\rlistForStreamB\r\n" + - "\vlist_option\x1a\x8e\x01\n" + + "\x0flist_for_stream\x18\x02 \x01(\v2A.event_store.client.persistent_subscriptions.ListReq.StreamOptionH\x00R\rlistForStream\x12\x1b\n" + + "\x06offset\x18\x03 \x01(\x05H\x01R\x06offset\x88\x01\x01\x12\x19\n" + + "\x05count\x18\x04 \x01(\x05H\x02R\x05count\x88\x01\x01B\r\n" + + "\vlist_optionB\t\n" + + "\a_offsetB\b\n" + + "\x06_count\x1a\x8e\x01\n" + "\fStreamOption\x12>\n" + "\x06stream\x18\x01 \x01(\v2$.event_store.client.StreamIdentifierH\x00R\x06stream\x12-\n" + "\x03all\x18\x02 \x01(\v2\x19.event_store.client.EmptyH\x00R\x03allB\x0f\n" + - "\rstream_option\"o\n" + + "\rstream_option\"\xe1\x01\n" + "\bListResp\x12c\n" + - "\rsubscriptions\x18\x01 \x03(\v2=.event_store.client.persistent_subscriptions.SubscriptionInfoR\rsubscriptions2\xce\a\n" + + "\rsubscriptions\x18\x01 \x03(\v2=.event_store.client.persistent_subscriptions.SubscriptionInfoR\rsubscriptions\x12\x1b\n" + + "\x06offset\x18\x02 \x01(\x05H\x00R\x06offset\x88\x01\x01\x12\x19\n" + + "\x05count\x18\x03 \x01(\x05H\x01R\x05count\x88\x01\x01\x12\x19\n" + + "\x05total\x18\x04 \x01(\x05H\x02R\x05total\x88\x01\x01B\t\n" + + "\a_offsetB\b\n" + + "\x06_countB\b\n" + + "\x06_total2\xe2\b\n" + "\x17PersistentSubscriptions\x12y\n" + "\x06Create\x126.event_store.client.persistent_subscriptions.CreateReq\x1a7.event_store.client.persistent_subscriptions.CreateResp\x12y\n" + "\x06Update\x126.event_store.client.persistent_subscriptions.UpdateReq\x1a7.event_store.client.persistent_subscriptions.UpdateResp\x12y\n" + "\x06Delete\x126.event_store.client.persistent_subscriptions.DeleteReq\x1a7.event_store.client.persistent_subscriptions.DeleteResp\x12w\n" + "\x04Read\x124.event_store.client.persistent_subscriptions.ReadReq\x1a5.event_store.client.persistent_subscriptions.ReadResp(\x010\x01\x12|\n" + "\aGetInfo\x127.event_store.client.persistent_subscriptions.GetInfoReq\x1a8.event_store.client.persistent_subscriptions.GetInfoResp\x12\x8b\x01\n" + - "\fReplayParked\x12<.event_store.client.persistent_subscriptions.ReplayParkedReq\x1a=.event_store.client.persistent_subscriptions.ReplayParkedResp\x12s\n" + + "\fReplayParked\x12<.event_store.client.persistent_subscriptions.ReplayParkedReq\x1a=.event_store.client.persistent_subscriptions.ReplayParkedResp\x12\x91\x01\n" + + "\x0eTruncateParked\x12>.event_store.client.persistent_subscriptions.TruncateParkedReq\x1a?.event_store.client.persistent_subscriptions.TruncateParkedResp\x12s\n" + "\x04List\x124.event_store.client.persistent_subscriptions.ListReq\x1a5.event_store.client.persistent_subscriptions.ListResp\x12H\n" + - "\x10RestartSubsystem\x12\x19.event_store.client.Empty\x1a\x19.event_store.client.EmptyB\x8b\x01\n" + - "5com.eventstore.dbclient.proto.persistentsubscriptionsZRgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/persistentb\x06proto3" + "\x10RestartSubsystem\x12\x19.event_store.client.Empty\x1a\x19.event_store.client.EmptyB\x9a\x01\n" + + "5com.eventstore.dbclient.proto.persistentsubscriptionsZagithub.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/persistentb\x06proto3" var ( - file_kurrentdb_protocols_v1_persistent_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_persistent_proto_rawDescData []byte + file_trogoneventstore_protocols_v1_persistent_proto_rawDescOnce sync.Once + file_trogoneventstore_protocols_v1_persistent_proto_rawDescData []byte ) -func file_kurrentdb_protocols_v1_persistent_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_persistent_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_persistent_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_persistent_proto_rawDesc), len(file_kurrentdb_protocols_v1_persistent_proto_rawDesc))) +func file_trogoneventstore_protocols_v1_persistent_proto_rawDescGZIP() []byte { + file_trogoneventstore_protocols_v1_persistent_proto_rawDescOnce.Do(func() { + file_trogoneventstore_protocols_v1_persistent_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_persistent_proto_rawDesc), len(file_trogoneventstore_protocols_v1_persistent_proto_rawDesc))) }) - return file_kurrentdb_protocols_v1_persistent_proto_rawDescData + return file_trogoneventstore_protocols_v1_persistent_proto_rawDescData } -var file_kurrentdb_protocols_v1_persistent_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_kurrentdb_protocols_v1_persistent_proto_msgTypes = make([]protoimpl.MessageInfo, 42) -var file_kurrentdb_protocols_v1_persistent_proto_goTypes = []any{ +var file_trogoneventstore_protocols_v1_persistent_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_trogoneventstore_protocols_v1_persistent_proto_msgTypes = make([]protoimpl.MessageInfo, 45) +var file_trogoneventstore_protocols_v1_persistent_proto_goTypes = []any{ (ReadReq_Nack_Action)(0), // 0: event_store.client.persistent_subscriptions.ReadReq.Nack.Action (CreateReq_ConsumerStrategy)(0), // 1: event_store.client.persistent_subscriptions.CreateReq.ConsumerStrategy (UpdateReq_ConsumerStrategy)(0), // 2: event_store.client.persistent_subscriptions.UpdateReq.ConsumerStrategy @@ -4085,226 +4375,242 @@ var file_kurrentdb_protocols_v1_persistent_proto_goTypes = []any{ (*SubscriptionInfo)(nil), // 13: event_store.client.persistent_subscriptions.SubscriptionInfo (*ReplayParkedReq)(nil), // 14: event_store.client.persistent_subscriptions.ReplayParkedReq (*ReplayParkedResp)(nil), // 15: event_store.client.persistent_subscriptions.ReplayParkedResp - (*ListReq)(nil), // 16: event_store.client.persistent_subscriptions.ListReq - (*ListResp)(nil), // 17: event_store.client.persistent_subscriptions.ListResp - (*ReadReq_Options)(nil), // 18: event_store.client.persistent_subscriptions.ReadReq.Options - (*ReadReq_Ack)(nil), // 19: event_store.client.persistent_subscriptions.ReadReq.Ack - (*ReadReq_Nack)(nil), // 20: event_store.client.persistent_subscriptions.ReadReq.Nack - (*ReadReq_Options_UUIDOption)(nil), // 21: event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption - (*ReadResp_ReadEvent)(nil), // 22: event_store.client.persistent_subscriptions.ReadResp.ReadEvent - (*ReadResp_SubscriptionConfirmation)(nil), // 23: event_store.client.persistent_subscriptions.ReadResp.SubscriptionConfirmation - (*ReadResp_ReadEvent_RecordedEvent)(nil), // 24: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent - nil, // 25: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.MetadataEntry - (*CreateReq_Options)(nil), // 26: event_store.client.persistent_subscriptions.CreateReq.Options - (*CreateReq_StreamOptions)(nil), // 27: event_store.client.persistent_subscriptions.CreateReq.StreamOptions - (*CreateReq_AllOptions)(nil), // 28: event_store.client.persistent_subscriptions.CreateReq.AllOptions - (*CreateReq_Position)(nil), // 29: event_store.client.persistent_subscriptions.CreateReq.Position - (*CreateReq_Settings)(nil), // 30: event_store.client.persistent_subscriptions.CreateReq.Settings - (*CreateReq_AllOptions_FilterOptions)(nil), // 31: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions - (*CreateReq_AllOptions_FilterOptions_Expression)(nil), // 32: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.Expression - (*UpdateReq_Options)(nil), // 33: event_store.client.persistent_subscriptions.UpdateReq.Options - (*UpdateReq_StreamOptions)(nil), // 34: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions - (*UpdateReq_AllOptions)(nil), // 35: event_store.client.persistent_subscriptions.UpdateReq.AllOptions - (*UpdateReq_Position)(nil), // 36: event_store.client.persistent_subscriptions.UpdateReq.Position - (*UpdateReq_Settings)(nil), // 37: event_store.client.persistent_subscriptions.UpdateReq.Settings - (*DeleteReq_Options)(nil), // 38: event_store.client.persistent_subscriptions.DeleteReq.Options - (*GetInfoReq_Options)(nil), // 39: event_store.client.persistent_subscriptions.GetInfoReq.Options - (*SubscriptionInfo_ConnectionInfo)(nil), // 40: event_store.client.persistent_subscriptions.SubscriptionInfo.ConnectionInfo - (*SubscriptionInfo_Measurement)(nil), // 41: event_store.client.persistent_subscriptions.SubscriptionInfo.Measurement - (*ReplayParkedReq_Options)(nil), // 42: event_store.client.persistent_subscriptions.ReplayParkedReq.Options - (*ListReq_Options)(nil), // 43: event_store.client.persistent_subscriptions.ListReq.Options - (*ListReq_StreamOption)(nil), // 44: event_store.client.persistent_subscriptions.ListReq.StreamOption - (*shared.StreamIdentifier)(nil), // 45: event_store.client.StreamIdentifier - (*shared.Empty)(nil), // 46: event_store.client.Empty - (*shared.UUID)(nil), // 47: event_store.client.UUID -} -var file_kurrentdb_protocols_v1_persistent_proto_depIdxs = []int32{ - 18, // 0: event_store.client.persistent_subscriptions.ReadReq.options:type_name -> event_store.client.persistent_subscriptions.ReadReq.Options - 19, // 1: event_store.client.persistent_subscriptions.ReadReq.ack:type_name -> event_store.client.persistent_subscriptions.ReadReq.Ack - 20, // 2: event_store.client.persistent_subscriptions.ReadReq.nack:type_name -> event_store.client.persistent_subscriptions.ReadReq.Nack - 22, // 3: event_store.client.persistent_subscriptions.ReadResp.event:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent - 23, // 4: event_store.client.persistent_subscriptions.ReadResp.subscription_confirmation:type_name -> event_store.client.persistent_subscriptions.ReadResp.SubscriptionConfirmation - 26, // 5: event_store.client.persistent_subscriptions.CreateReq.options:type_name -> event_store.client.persistent_subscriptions.CreateReq.Options - 33, // 6: event_store.client.persistent_subscriptions.UpdateReq.options:type_name -> event_store.client.persistent_subscriptions.UpdateReq.Options - 38, // 7: event_store.client.persistent_subscriptions.DeleteReq.options:type_name -> event_store.client.persistent_subscriptions.DeleteReq.Options - 39, // 8: event_store.client.persistent_subscriptions.GetInfoReq.options:type_name -> event_store.client.persistent_subscriptions.GetInfoReq.Options + (*TruncateParkedReq)(nil), // 16: event_store.client.persistent_subscriptions.TruncateParkedReq + (*TruncateParkedResp)(nil), // 17: event_store.client.persistent_subscriptions.TruncateParkedResp + (*ListReq)(nil), // 18: event_store.client.persistent_subscriptions.ListReq + (*ListResp)(nil), // 19: event_store.client.persistent_subscriptions.ListResp + (*ReadReq_Options)(nil), // 20: event_store.client.persistent_subscriptions.ReadReq.Options + (*ReadReq_Ack)(nil), // 21: event_store.client.persistent_subscriptions.ReadReq.Ack + (*ReadReq_Nack)(nil), // 22: event_store.client.persistent_subscriptions.ReadReq.Nack + (*ReadReq_Options_UUIDOption)(nil), // 23: event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption + (*ReadResp_ReadEvent)(nil), // 24: event_store.client.persistent_subscriptions.ReadResp.ReadEvent + (*ReadResp_SubscriptionConfirmation)(nil), // 25: event_store.client.persistent_subscriptions.ReadResp.SubscriptionConfirmation + (*ReadResp_ReadEvent_RecordedEvent)(nil), // 26: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent + nil, // 27: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.MetadataEntry + (*CreateReq_Options)(nil), // 28: event_store.client.persistent_subscriptions.CreateReq.Options + (*CreateReq_StreamOptions)(nil), // 29: event_store.client.persistent_subscriptions.CreateReq.StreamOptions + (*CreateReq_AllOptions)(nil), // 30: event_store.client.persistent_subscriptions.CreateReq.AllOptions + (*CreateReq_Position)(nil), // 31: event_store.client.persistent_subscriptions.CreateReq.Position + (*CreateReq_Settings)(nil), // 32: event_store.client.persistent_subscriptions.CreateReq.Settings + (*CreateReq_AllOptions_FilterOptions)(nil), // 33: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions + (*CreateReq_AllOptions_FilterOptions_Expression)(nil), // 34: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.Expression + (*UpdateReq_Options)(nil), // 35: event_store.client.persistent_subscriptions.UpdateReq.Options + (*UpdateReq_StreamOptions)(nil), // 36: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions + (*UpdateReq_AllOptions)(nil), // 37: event_store.client.persistent_subscriptions.UpdateReq.AllOptions + (*UpdateReq_Position)(nil), // 38: event_store.client.persistent_subscriptions.UpdateReq.Position + (*UpdateReq_Settings)(nil), // 39: event_store.client.persistent_subscriptions.UpdateReq.Settings + (*DeleteReq_Options)(nil), // 40: event_store.client.persistent_subscriptions.DeleteReq.Options + (*GetInfoReq_Options)(nil), // 41: event_store.client.persistent_subscriptions.GetInfoReq.Options + (*SubscriptionInfo_ConnectionInfo)(nil), // 42: event_store.client.persistent_subscriptions.SubscriptionInfo.ConnectionInfo + (*SubscriptionInfo_Measurement)(nil), // 43: event_store.client.persistent_subscriptions.SubscriptionInfo.Measurement + (*ReplayParkedReq_Options)(nil), // 44: event_store.client.persistent_subscriptions.ReplayParkedReq.Options + (*TruncateParkedReq_Options)(nil), // 45: event_store.client.persistent_subscriptions.TruncateParkedReq.Options + (*ListReq_Options)(nil), // 46: event_store.client.persistent_subscriptions.ListReq.Options + (*ListReq_StreamOption)(nil), // 47: event_store.client.persistent_subscriptions.ListReq.StreamOption + (*shared.StreamIdentifier)(nil), // 48: event_store.client.StreamIdentifier + (*shared.Empty)(nil), // 49: event_store.client.Empty + (*shared.UUID)(nil), // 50: event_store.client.UUID +} +var file_trogoneventstore_protocols_v1_persistent_proto_depIdxs = []int32{ + 20, // 0: event_store.client.persistent_subscriptions.ReadReq.options:type_name -> event_store.client.persistent_subscriptions.ReadReq.Options + 21, // 1: event_store.client.persistent_subscriptions.ReadReq.ack:type_name -> event_store.client.persistent_subscriptions.ReadReq.Ack + 22, // 2: event_store.client.persistent_subscriptions.ReadReq.nack:type_name -> event_store.client.persistent_subscriptions.ReadReq.Nack + 24, // 3: event_store.client.persistent_subscriptions.ReadResp.event:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent + 25, // 4: event_store.client.persistent_subscriptions.ReadResp.subscription_confirmation:type_name -> event_store.client.persistent_subscriptions.ReadResp.SubscriptionConfirmation + 28, // 5: event_store.client.persistent_subscriptions.CreateReq.options:type_name -> event_store.client.persistent_subscriptions.CreateReq.Options + 35, // 6: event_store.client.persistent_subscriptions.UpdateReq.options:type_name -> event_store.client.persistent_subscriptions.UpdateReq.Options + 40, // 7: event_store.client.persistent_subscriptions.DeleteReq.options:type_name -> event_store.client.persistent_subscriptions.DeleteReq.Options + 41, // 8: event_store.client.persistent_subscriptions.GetInfoReq.options:type_name -> event_store.client.persistent_subscriptions.GetInfoReq.Options 13, // 9: event_store.client.persistent_subscriptions.GetInfoResp.subscription_info:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo - 40, // 10: event_store.client.persistent_subscriptions.SubscriptionInfo.connections:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo.ConnectionInfo - 42, // 11: event_store.client.persistent_subscriptions.ReplayParkedReq.options:type_name -> event_store.client.persistent_subscriptions.ReplayParkedReq.Options - 43, // 12: event_store.client.persistent_subscriptions.ListReq.options:type_name -> event_store.client.persistent_subscriptions.ListReq.Options - 13, // 13: event_store.client.persistent_subscriptions.ListResp.subscriptions:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo - 45, // 14: event_store.client.persistent_subscriptions.ReadReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 46, // 15: event_store.client.persistent_subscriptions.ReadReq.Options.all:type_name -> event_store.client.Empty - 21, // 16: event_store.client.persistent_subscriptions.ReadReq.Options.uuid_option:type_name -> event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption - 47, // 17: event_store.client.persistent_subscriptions.ReadReq.Ack.ids:type_name -> event_store.client.UUID - 47, // 18: event_store.client.persistent_subscriptions.ReadReq.Nack.ids:type_name -> event_store.client.UUID - 0, // 19: event_store.client.persistent_subscriptions.ReadReq.Nack.action:type_name -> event_store.client.persistent_subscriptions.ReadReq.Nack.Action - 46, // 20: event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption.structured:type_name -> event_store.client.Empty - 46, // 21: event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption.string:type_name -> event_store.client.Empty - 24, // 22: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.event:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent - 24, // 23: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.link:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent - 46, // 24: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.no_position:type_name -> event_store.client.Empty - 46, // 25: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.no_retry_count:type_name -> event_store.client.Empty - 47, // 26: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.id:type_name -> event_store.client.UUID - 45, // 27: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.stream_identifier:type_name -> event_store.client.StreamIdentifier - 25, // 28: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.metadata:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.MetadataEntry - 27, // 29: event_store.client.persistent_subscriptions.CreateReq.Options.stream:type_name -> event_store.client.persistent_subscriptions.CreateReq.StreamOptions - 28, // 30: event_store.client.persistent_subscriptions.CreateReq.Options.all:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions - 45, // 31: event_store.client.persistent_subscriptions.CreateReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 30, // 32: event_store.client.persistent_subscriptions.CreateReq.Options.settings:type_name -> event_store.client.persistent_subscriptions.CreateReq.Settings - 45, // 33: event_store.client.persistent_subscriptions.CreateReq.StreamOptions.stream_identifier:type_name -> event_store.client.StreamIdentifier - 46, // 34: event_store.client.persistent_subscriptions.CreateReq.StreamOptions.start:type_name -> event_store.client.Empty - 46, // 35: event_store.client.persistent_subscriptions.CreateReq.StreamOptions.end:type_name -> event_store.client.Empty - 29, // 36: event_store.client.persistent_subscriptions.CreateReq.AllOptions.position:type_name -> event_store.client.persistent_subscriptions.CreateReq.Position - 46, // 37: event_store.client.persistent_subscriptions.CreateReq.AllOptions.start:type_name -> event_store.client.Empty - 46, // 38: event_store.client.persistent_subscriptions.CreateReq.AllOptions.end:type_name -> event_store.client.Empty - 31, // 39: event_store.client.persistent_subscriptions.CreateReq.AllOptions.filter:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions - 46, // 40: event_store.client.persistent_subscriptions.CreateReq.AllOptions.no_filter:type_name -> event_store.client.Empty - 1, // 41: event_store.client.persistent_subscriptions.CreateReq.Settings.named_consumer_strategy:type_name -> event_store.client.persistent_subscriptions.CreateReq.ConsumerStrategy - 32, // 42: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.stream_identifier:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.Expression - 32, // 43: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.event_type:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.Expression - 46, // 44: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.count:type_name -> event_store.client.Empty - 34, // 45: event_store.client.persistent_subscriptions.UpdateReq.Options.stream:type_name -> event_store.client.persistent_subscriptions.UpdateReq.StreamOptions - 35, // 46: event_store.client.persistent_subscriptions.UpdateReq.Options.all:type_name -> event_store.client.persistent_subscriptions.UpdateReq.AllOptions - 45, // 47: event_store.client.persistent_subscriptions.UpdateReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 37, // 48: event_store.client.persistent_subscriptions.UpdateReq.Options.settings:type_name -> event_store.client.persistent_subscriptions.UpdateReq.Settings - 45, // 49: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions.stream_identifier:type_name -> event_store.client.StreamIdentifier - 46, // 50: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions.start:type_name -> event_store.client.Empty - 46, // 51: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions.end:type_name -> event_store.client.Empty - 36, // 52: event_store.client.persistent_subscriptions.UpdateReq.AllOptions.position:type_name -> event_store.client.persistent_subscriptions.UpdateReq.Position - 46, // 53: event_store.client.persistent_subscriptions.UpdateReq.AllOptions.start:type_name -> event_store.client.Empty - 46, // 54: event_store.client.persistent_subscriptions.UpdateReq.AllOptions.end:type_name -> event_store.client.Empty - 2, // 55: event_store.client.persistent_subscriptions.UpdateReq.Settings.named_consumer_strategy:type_name -> event_store.client.persistent_subscriptions.UpdateReq.ConsumerStrategy - 45, // 56: event_store.client.persistent_subscriptions.DeleteReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 46, // 57: event_store.client.persistent_subscriptions.DeleteReq.Options.all:type_name -> event_store.client.Empty - 45, // 58: event_store.client.persistent_subscriptions.GetInfoReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 46, // 59: event_store.client.persistent_subscriptions.GetInfoReq.Options.all:type_name -> event_store.client.Empty - 41, // 60: event_store.client.persistent_subscriptions.SubscriptionInfo.ConnectionInfo.observed_measurements:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo.Measurement - 45, // 61: event_store.client.persistent_subscriptions.ReplayParkedReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 46, // 62: event_store.client.persistent_subscriptions.ReplayParkedReq.Options.all:type_name -> event_store.client.Empty - 46, // 63: event_store.client.persistent_subscriptions.ReplayParkedReq.Options.no_limit:type_name -> event_store.client.Empty - 46, // 64: event_store.client.persistent_subscriptions.ListReq.Options.list_all_subscriptions:type_name -> event_store.client.Empty - 44, // 65: event_store.client.persistent_subscriptions.ListReq.Options.list_for_stream:type_name -> event_store.client.persistent_subscriptions.ListReq.StreamOption - 45, // 66: event_store.client.persistent_subscriptions.ListReq.StreamOption.stream:type_name -> event_store.client.StreamIdentifier - 46, // 67: event_store.client.persistent_subscriptions.ListReq.StreamOption.all:type_name -> event_store.client.Empty - 5, // 68: event_store.client.persistent_subscriptions.PersistentSubscriptions.Create:input_type -> event_store.client.persistent_subscriptions.CreateReq - 7, // 69: event_store.client.persistent_subscriptions.PersistentSubscriptions.Update:input_type -> event_store.client.persistent_subscriptions.UpdateReq - 9, // 70: event_store.client.persistent_subscriptions.PersistentSubscriptions.Delete:input_type -> event_store.client.persistent_subscriptions.DeleteReq - 3, // 71: event_store.client.persistent_subscriptions.PersistentSubscriptions.Read:input_type -> event_store.client.persistent_subscriptions.ReadReq - 11, // 72: event_store.client.persistent_subscriptions.PersistentSubscriptions.GetInfo:input_type -> event_store.client.persistent_subscriptions.GetInfoReq - 14, // 73: event_store.client.persistent_subscriptions.PersistentSubscriptions.ReplayParked:input_type -> event_store.client.persistent_subscriptions.ReplayParkedReq - 16, // 74: event_store.client.persistent_subscriptions.PersistentSubscriptions.List:input_type -> event_store.client.persistent_subscriptions.ListReq - 46, // 75: event_store.client.persistent_subscriptions.PersistentSubscriptions.RestartSubsystem:input_type -> event_store.client.Empty - 6, // 76: event_store.client.persistent_subscriptions.PersistentSubscriptions.Create:output_type -> event_store.client.persistent_subscriptions.CreateResp - 8, // 77: event_store.client.persistent_subscriptions.PersistentSubscriptions.Update:output_type -> event_store.client.persistent_subscriptions.UpdateResp - 10, // 78: event_store.client.persistent_subscriptions.PersistentSubscriptions.Delete:output_type -> event_store.client.persistent_subscriptions.DeleteResp - 4, // 79: event_store.client.persistent_subscriptions.PersistentSubscriptions.Read:output_type -> event_store.client.persistent_subscriptions.ReadResp - 12, // 80: event_store.client.persistent_subscriptions.PersistentSubscriptions.GetInfo:output_type -> event_store.client.persistent_subscriptions.GetInfoResp - 15, // 81: event_store.client.persistent_subscriptions.PersistentSubscriptions.ReplayParked:output_type -> event_store.client.persistent_subscriptions.ReplayParkedResp - 17, // 82: event_store.client.persistent_subscriptions.PersistentSubscriptions.List:output_type -> event_store.client.persistent_subscriptions.ListResp - 46, // 83: event_store.client.persistent_subscriptions.PersistentSubscriptions.RestartSubsystem:output_type -> event_store.client.Empty - 76, // [76:84] is the sub-list for method output_type - 68, // [68:76] is the sub-list for method input_type - 68, // [68:68] is the sub-list for extension type_name - 68, // [68:68] is the sub-list for extension extendee - 0, // [0:68] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v1_persistent_proto_init() } -func file_kurrentdb_protocols_v1_persistent_proto_init() { - if File_kurrentdb_protocols_v1_persistent_proto != nil { + 42, // 10: event_store.client.persistent_subscriptions.SubscriptionInfo.connections:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo.ConnectionInfo + 44, // 11: event_store.client.persistent_subscriptions.ReplayParkedReq.options:type_name -> event_store.client.persistent_subscriptions.ReplayParkedReq.Options + 45, // 12: event_store.client.persistent_subscriptions.TruncateParkedReq.options:type_name -> event_store.client.persistent_subscriptions.TruncateParkedReq.Options + 46, // 13: event_store.client.persistent_subscriptions.ListReq.options:type_name -> event_store.client.persistent_subscriptions.ListReq.Options + 13, // 14: event_store.client.persistent_subscriptions.ListResp.subscriptions:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo + 48, // 15: event_store.client.persistent_subscriptions.ReadReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 16: event_store.client.persistent_subscriptions.ReadReq.Options.all:type_name -> event_store.client.Empty + 23, // 17: event_store.client.persistent_subscriptions.ReadReq.Options.uuid_option:type_name -> event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption + 50, // 18: event_store.client.persistent_subscriptions.ReadReq.Ack.ids:type_name -> event_store.client.UUID + 50, // 19: event_store.client.persistent_subscriptions.ReadReq.Nack.ids:type_name -> event_store.client.UUID + 0, // 20: event_store.client.persistent_subscriptions.ReadReq.Nack.action:type_name -> event_store.client.persistent_subscriptions.ReadReq.Nack.Action + 49, // 21: event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption.structured:type_name -> event_store.client.Empty + 49, // 22: event_store.client.persistent_subscriptions.ReadReq.Options.UUIDOption.string:type_name -> event_store.client.Empty + 26, // 23: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.event:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent + 26, // 24: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.link:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent + 49, // 25: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.no_position:type_name -> event_store.client.Empty + 49, // 26: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.no_retry_count:type_name -> event_store.client.Empty + 50, // 27: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.id:type_name -> event_store.client.UUID + 48, // 28: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.stream_identifier:type_name -> event_store.client.StreamIdentifier + 27, // 29: event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.metadata:type_name -> event_store.client.persistent_subscriptions.ReadResp.ReadEvent.RecordedEvent.MetadataEntry + 29, // 30: event_store.client.persistent_subscriptions.CreateReq.Options.stream:type_name -> event_store.client.persistent_subscriptions.CreateReq.StreamOptions + 30, // 31: event_store.client.persistent_subscriptions.CreateReq.Options.all:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions + 48, // 32: event_store.client.persistent_subscriptions.CreateReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 32, // 33: event_store.client.persistent_subscriptions.CreateReq.Options.settings:type_name -> event_store.client.persistent_subscriptions.CreateReq.Settings + 48, // 34: event_store.client.persistent_subscriptions.CreateReq.StreamOptions.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 35: event_store.client.persistent_subscriptions.CreateReq.StreamOptions.start:type_name -> event_store.client.Empty + 49, // 36: event_store.client.persistent_subscriptions.CreateReq.StreamOptions.end:type_name -> event_store.client.Empty + 31, // 37: event_store.client.persistent_subscriptions.CreateReq.AllOptions.position:type_name -> event_store.client.persistent_subscriptions.CreateReq.Position + 49, // 38: event_store.client.persistent_subscriptions.CreateReq.AllOptions.start:type_name -> event_store.client.Empty + 49, // 39: event_store.client.persistent_subscriptions.CreateReq.AllOptions.end:type_name -> event_store.client.Empty + 33, // 40: event_store.client.persistent_subscriptions.CreateReq.AllOptions.filter:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions + 49, // 41: event_store.client.persistent_subscriptions.CreateReq.AllOptions.no_filter:type_name -> event_store.client.Empty + 1, // 42: event_store.client.persistent_subscriptions.CreateReq.Settings.named_consumer_strategy:type_name -> event_store.client.persistent_subscriptions.CreateReq.ConsumerStrategy + 34, // 43: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.stream_identifier:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.Expression + 34, // 44: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.event_type:type_name -> event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.Expression + 49, // 45: event_store.client.persistent_subscriptions.CreateReq.AllOptions.FilterOptions.count:type_name -> event_store.client.Empty + 36, // 46: event_store.client.persistent_subscriptions.UpdateReq.Options.stream:type_name -> event_store.client.persistent_subscriptions.UpdateReq.StreamOptions + 37, // 47: event_store.client.persistent_subscriptions.UpdateReq.Options.all:type_name -> event_store.client.persistent_subscriptions.UpdateReq.AllOptions + 48, // 48: event_store.client.persistent_subscriptions.UpdateReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 39, // 49: event_store.client.persistent_subscriptions.UpdateReq.Options.settings:type_name -> event_store.client.persistent_subscriptions.UpdateReq.Settings + 48, // 50: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 51: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions.start:type_name -> event_store.client.Empty + 49, // 52: event_store.client.persistent_subscriptions.UpdateReq.StreamOptions.end:type_name -> event_store.client.Empty + 38, // 53: event_store.client.persistent_subscriptions.UpdateReq.AllOptions.position:type_name -> event_store.client.persistent_subscriptions.UpdateReq.Position + 49, // 54: event_store.client.persistent_subscriptions.UpdateReq.AllOptions.start:type_name -> event_store.client.Empty + 49, // 55: event_store.client.persistent_subscriptions.UpdateReq.AllOptions.end:type_name -> event_store.client.Empty + 2, // 56: event_store.client.persistent_subscriptions.UpdateReq.Settings.named_consumer_strategy:type_name -> event_store.client.persistent_subscriptions.UpdateReq.ConsumerStrategy + 48, // 57: event_store.client.persistent_subscriptions.DeleteReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 58: event_store.client.persistent_subscriptions.DeleteReq.Options.all:type_name -> event_store.client.Empty + 48, // 59: event_store.client.persistent_subscriptions.GetInfoReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 60: event_store.client.persistent_subscriptions.GetInfoReq.Options.all:type_name -> event_store.client.Empty + 43, // 61: event_store.client.persistent_subscriptions.SubscriptionInfo.ConnectionInfo.observed_measurements:type_name -> event_store.client.persistent_subscriptions.SubscriptionInfo.Measurement + 48, // 62: event_store.client.persistent_subscriptions.ReplayParkedReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 63: event_store.client.persistent_subscriptions.ReplayParkedReq.Options.all:type_name -> event_store.client.Empty + 49, // 64: event_store.client.persistent_subscriptions.ReplayParkedReq.Options.no_limit:type_name -> event_store.client.Empty + 48, // 65: event_store.client.persistent_subscriptions.TruncateParkedReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 49, // 66: event_store.client.persistent_subscriptions.TruncateParkedReq.Options.all:type_name -> event_store.client.Empty + 49, // 67: event_store.client.persistent_subscriptions.TruncateParkedReq.Options.no_limit:type_name -> event_store.client.Empty + 49, // 68: event_store.client.persistent_subscriptions.ListReq.Options.list_all_subscriptions:type_name -> event_store.client.Empty + 47, // 69: event_store.client.persistent_subscriptions.ListReq.Options.list_for_stream:type_name -> event_store.client.persistent_subscriptions.ListReq.StreamOption + 48, // 70: event_store.client.persistent_subscriptions.ListReq.StreamOption.stream:type_name -> event_store.client.StreamIdentifier + 49, // 71: event_store.client.persistent_subscriptions.ListReq.StreamOption.all:type_name -> event_store.client.Empty + 5, // 72: event_store.client.persistent_subscriptions.PersistentSubscriptions.Create:input_type -> event_store.client.persistent_subscriptions.CreateReq + 7, // 73: event_store.client.persistent_subscriptions.PersistentSubscriptions.Update:input_type -> event_store.client.persistent_subscriptions.UpdateReq + 9, // 74: event_store.client.persistent_subscriptions.PersistentSubscriptions.Delete:input_type -> event_store.client.persistent_subscriptions.DeleteReq + 3, // 75: event_store.client.persistent_subscriptions.PersistentSubscriptions.Read:input_type -> event_store.client.persistent_subscriptions.ReadReq + 11, // 76: event_store.client.persistent_subscriptions.PersistentSubscriptions.GetInfo:input_type -> event_store.client.persistent_subscriptions.GetInfoReq + 14, // 77: event_store.client.persistent_subscriptions.PersistentSubscriptions.ReplayParked:input_type -> event_store.client.persistent_subscriptions.ReplayParkedReq + 16, // 78: event_store.client.persistent_subscriptions.PersistentSubscriptions.TruncateParked:input_type -> event_store.client.persistent_subscriptions.TruncateParkedReq + 18, // 79: event_store.client.persistent_subscriptions.PersistentSubscriptions.List:input_type -> event_store.client.persistent_subscriptions.ListReq + 49, // 80: event_store.client.persistent_subscriptions.PersistentSubscriptions.RestartSubsystem:input_type -> event_store.client.Empty + 6, // 81: event_store.client.persistent_subscriptions.PersistentSubscriptions.Create:output_type -> event_store.client.persistent_subscriptions.CreateResp + 8, // 82: event_store.client.persistent_subscriptions.PersistentSubscriptions.Update:output_type -> event_store.client.persistent_subscriptions.UpdateResp + 10, // 83: event_store.client.persistent_subscriptions.PersistentSubscriptions.Delete:output_type -> event_store.client.persistent_subscriptions.DeleteResp + 4, // 84: event_store.client.persistent_subscriptions.PersistentSubscriptions.Read:output_type -> event_store.client.persistent_subscriptions.ReadResp + 12, // 85: event_store.client.persistent_subscriptions.PersistentSubscriptions.GetInfo:output_type -> event_store.client.persistent_subscriptions.GetInfoResp + 15, // 86: event_store.client.persistent_subscriptions.PersistentSubscriptions.ReplayParked:output_type -> event_store.client.persistent_subscriptions.ReplayParkedResp + 17, // 87: event_store.client.persistent_subscriptions.PersistentSubscriptions.TruncateParked:output_type -> event_store.client.persistent_subscriptions.TruncateParkedResp + 19, // 88: event_store.client.persistent_subscriptions.PersistentSubscriptions.List:output_type -> event_store.client.persistent_subscriptions.ListResp + 49, // 89: event_store.client.persistent_subscriptions.PersistentSubscriptions.RestartSubsystem:output_type -> event_store.client.Empty + 81, // [81:90] is the sub-list for method output_type + 72, // [72:81] is the sub-list for method input_type + 72, // [72:72] is the sub-list for extension type_name + 72, // [72:72] is the sub-list for extension extendee + 0, // [0:72] is the sub-list for field type_name +} + +func init() { file_trogoneventstore_protocols_v1_persistent_proto_init() } +func file_trogoneventstore_protocols_v1_persistent_proto_init() { + if File_trogoneventstore_protocols_v1_persistent_proto != nil { return } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[0].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[0].OneofWrappers = []any{ (*ReadReq_Options_)(nil), (*ReadReq_Ack_)(nil), (*ReadReq_Nack_)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[1].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[1].OneofWrappers = []any{ (*ReadResp_Event)(nil), (*ReadResp_SubscriptionConfirmation_)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[15].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[16].OneofWrappers = []any{} + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[17].OneofWrappers = []any{ (*ReadReq_Options_StreamIdentifier)(nil), (*ReadReq_Options_All)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[18].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[20].OneofWrappers = []any{ (*ReadReq_Options_UUIDOption_Structured)(nil), (*ReadReq_Options_UUIDOption_String_)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[19].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[21].OneofWrappers = []any{ (*ReadResp_ReadEvent_CommitPosition)(nil), (*ReadResp_ReadEvent_NoPosition)(nil), (*ReadResp_ReadEvent_RetryCount)(nil), (*ReadResp_ReadEvent_NoRetryCount)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[23].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[25].OneofWrappers = []any{ (*CreateReq_Options_Stream)(nil), (*CreateReq_Options_All)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[24].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[26].OneofWrappers = []any{ (*CreateReq_StreamOptions_Revision)(nil), (*CreateReq_StreamOptions_Start)(nil), (*CreateReq_StreamOptions_End)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[25].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[27].OneofWrappers = []any{ (*CreateReq_AllOptions_Position)(nil), (*CreateReq_AllOptions_Start)(nil), (*CreateReq_AllOptions_End)(nil), (*CreateReq_AllOptions_Filter)(nil), (*CreateReq_AllOptions_NoFilter)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[27].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[29].OneofWrappers = []any{ (*CreateReq_Settings_MessageTimeoutTicks)(nil), (*CreateReq_Settings_MessageTimeoutMs)(nil), (*CreateReq_Settings_CheckpointAfterTicks)(nil), (*CreateReq_Settings_CheckpointAfterMs)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[28].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[30].OneofWrappers = []any{ (*CreateReq_AllOptions_FilterOptions_StreamIdentifier)(nil), (*CreateReq_AllOptions_FilterOptions_EventType)(nil), (*CreateReq_AllOptions_FilterOptions_Max)(nil), (*CreateReq_AllOptions_FilterOptions_Count)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[30].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[32].OneofWrappers = []any{ (*UpdateReq_Options_Stream)(nil), (*UpdateReq_Options_All)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[31].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[33].OneofWrappers = []any{ (*UpdateReq_StreamOptions_Revision)(nil), (*UpdateReq_StreamOptions_Start)(nil), (*UpdateReq_StreamOptions_End)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[32].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[34].OneofWrappers = []any{ (*UpdateReq_AllOptions_Position)(nil), (*UpdateReq_AllOptions_Start)(nil), (*UpdateReq_AllOptions_End)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[34].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[36].OneofWrappers = []any{ (*UpdateReq_Settings_MessageTimeoutTicks)(nil), (*UpdateReq_Settings_MessageTimeoutMs)(nil), (*UpdateReq_Settings_CheckpointAfterTicks)(nil), (*UpdateReq_Settings_CheckpointAfterMs)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[35].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[37].OneofWrappers = []any{ (*DeleteReq_Options_StreamIdentifier)(nil), (*DeleteReq_Options_All)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[36].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[38].OneofWrappers = []any{ (*GetInfoReq_Options_StreamIdentifier)(nil), (*GetInfoReq_Options_All)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[39].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[41].OneofWrappers = []any{ (*ReplayParkedReq_Options_StreamIdentifier)(nil), (*ReplayParkedReq_Options_All)(nil), (*ReplayParkedReq_Options_StopAt)(nil), (*ReplayParkedReq_Options_NoLimit)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[40].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[42].OneofWrappers = []any{ + (*TruncateParkedReq_Options_StreamIdentifier)(nil), + (*TruncateParkedReq_Options_All)(nil), + (*TruncateParkedReq_Options_StopAt)(nil), + (*TruncateParkedReq_Options_NoLimit)(nil), + } + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[43].OneofWrappers = []any{ (*ListReq_Options_ListAllSubscriptions)(nil), (*ListReq_Options_ListForStream)(nil), } - file_kurrentdb_protocols_v1_persistent_proto_msgTypes[41].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_persistent_proto_msgTypes[44].OneofWrappers = []any{ (*ListReq_StreamOption_Stream)(nil), (*ListReq_StreamOption_All)(nil), } @@ -4312,18 +4618,18 @@ func file_kurrentdb_protocols_v1_persistent_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_persistent_proto_rawDesc), len(file_kurrentdb_protocols_v1_persistent_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_persistent_proto_rawDesc), len(file_trogoneventstore_protocols_v1_persistent_proto_rawDesc)), NumEnums: 3, - NumMessages: 42, + NumMessages: 45, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_kurrentdb_protocols_v1_persistent_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_persistent_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v1_persistent_proto_enumTypes, - MessageInfos: file_kurrentdb_protocols_v1_persistent_proto_msgTypes, + GoTypes: file_trogoneventstore_protocols_v1_persistent_proto_goTypes, + DependencyIndexes: file_trogoneventstore_protocols_v1_persistent_proto_depIdxs, + EnumInfos: file_trogoneventstore_protocols_v1_persistent_proto_enumTypes, + MessageInfos: file_trogoneventstore_protocols_v1_persistent_proto_msgTypes, }.Build() - File_kurrentdb_protocols_v1_persistent_proto = out.File - file_kurrentdb_protocols_v1_persistent_proto_goTypes = nil - file_kurrentdb_protocols_v1_persistent_proto_depIdxs = nil + File_trogoneventstore_protocols_v1_persistent_proto = out.File + file_trogoneventstore_protocols_v1_persistent_proto_goTypes = nil + file_trogoneventstore_protocols_v1_persistent_proto_depIdxs = nil } diff --git a/protos/kurrentdb/protocols/v1/persistent/persistent_grpc.pb.go b/protos/trogoneventstore/protocols/v1/persistent/persistent_grpc.pb.go similarity index 88% rename from protos/kurrentdb/protocols/v1/persistent/persistent_grpc.pb.go rename to protos/trogoneventstore/protocols/v1/persistent/persistent_grpc.pb.go index 8fab0ea..8e5c7c7 100644 --- a/protos/kurrentdb/protocols/v1/persistent/persistent_grpc.pb.go +++ b/protos/trogoneventstore/protocols/v1/persistent/persistent_grpc.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.26.0 -// source: kurrentdb/protocols/v1/persistent.proto +// - protoc v7.36.0 +// source: trogoneventstore/protocols/v1/persistent.proto package persistent import ( context "context" - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -26,6 +26,7 @@ const ( PersistentSubscriptions_Read_FullMethodName = "/event_store.client.persistent_subscriptions.PersistentSubscriptions/Read" PersistentSubscriptions_GetInfo_FullMethodName = "/event_store.client.persistent_subscriptions.PersistentSubscriptions/GetInfo" PersistentSubscriptions_ReplayParked_FullMethodName = "/event_store.client.persistent_subscriptions.PersistentSubscriptions/ReplayParked" + PersistentSubscriptions_TruncateParked_FullMethodName = "/event_store.client.persistent_subscriptions.PersistentSubscriptions/TruncateParked" PersistentSubscriptions_List_FullMethodName = "/event_store.client.persistent_subscriptions.PersistentSubscriptions/List" PersistentSubscriptions_RestartSubsystem_FullMethodName = "/event_store.client.persistent_subscriptions.PersistentSubscriptions/RestartSubsystem" ) @@ -40,6 +41,7 @@ type PersistentSubscriptionsClient interface { Read(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ReadReq, ReadResp], error) GetInfo(ctx context.Context, in *GetInfoReq, opts ...grpc.CallOption) (*GetInfoResp, error) ReplayParked(ctx context.Context, in *ReplayParkedReq, opts ...grpc.CallOption) (*ReplayParkedResp, error) + TruncateParked(ctx context.Context, in *TruncateParkedReq, opts ...grpc.CallOption) (*TruncateParkedResp, error) List(ctx context.Context, in *ListReq, opts ...grpc.CallOption) (*ListResp, error) RestartSubsystem(ctx context.Context, in *shared.Empty, opts ...grpc.CallOption) (*shared.Empty, error) } @@ -115,6 +117,16 @@ func (c *persistentSubscriptionsClient) ReplayParked(ctx context.Context, in *Re return out, nil } +func (c *persistentSubscriptionsClient) TruncateParked(ctx context.Context, in *TruncateParkedReq, opts ...grpc.CallOption) (*TruncateParkedResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(TruncateParkedResp) + err := c.cc.Invoke(ctx, PersistentSubscriptions_TruncateParked_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *persistentSubscriptionsClient) List(ctx context.Context, in *ListReq, opts ...grpc.CallOption) (*ListResp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListResp) @@ -145,6 +157,7 @@ type PersistentSubscriptionsServer interface { Read(grpc.BidiStreamingServer[ReadReq, ReadResp]) error GetInfo(context.Context, *GetInfoReq) (*GetInfoResp, error) ReplayParked(context.Context, *ReplayParkedReq) (*ReplayParkedResp, error) + TruncateParked(context.Context, *TruncateParkedReq) (*TruncateParkedResp, error) List(context.Context, *ListReq) (*ListResp, error) RestartSubsystem(context.Context, *shared.Empty) (*shared.Empty, error) mustEmbedUnimplementedPersistentSubscriptionsServer() @@ -175,6 +188,9 @@ func (UnimplementedPersistentSubscriptionsServer) GetInfo(context.Context, *GetI func (UnimplementedPersistentSubscriptionsServer) ReplayParked(context.Context, *ReplayParkedReq) (*ReplayParkedResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ReplayParked not implemented") } +func (UnimplementedPersistentSubscriptionsServer) TruncateParked(context.Context, *TruncateParkedReq) (*TruncateParkedResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method TruncateParked not implemented") +} func (UnimplementedPersistentSubscriptionsServer) List(context.Context, *ListReq) (*ListResp, error) { return nil, status.Errorf(codes.Unimplemented, "method List not implemented") } @@ -300,6 +316,24 @@ func _PersistentSubscriptions_ReplayParked_Handler(srv interface{}, ctx context. return interceptor(ctx, in, info, handler) } +func _PersistentSubscriptions_TruncateParked_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TruncateParkedReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PersistentSubscriptionsServer).TruncateParked(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PersistentSubscriptions_TruncateParked_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PersistentSubscriptionsServer).TruncateParked(ctx, req.(*TruncateParkedReq)) + } + return interceptor(ctx, in, info, handler) +} + func _PersistentSubscriptions_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListReq) if err := dec(in); err != nil { @@ -363,6 +397,10 @@ var PersistentSubscriptions_ServiceDesc = grpc.ServiceDesc{ MethodName: "ReplayParked", Handler: _PersistentSubscriptions_ReplayParked_Handler, }, + { + MethodName: "TruncateParked", + Handler: _PersistentSubscriptions_TruncateParked_Handler, + }, { MethodName: "List", Handler: _PersistentSubscriptions_List_Handler, @@ -380,5 +418,5 @@ var PersistentSubscriptions_ServiceDesc = grpc.ServiceDesc{ ClientStreams: true, }, }, - Metadata: "kurrentdb/protocols/v1/persistent.proto", + Metadata: "trogoneventstore/protocols/v1/persistent.proto", } diff --git a/protos/kurrentdb/protocols/v1/projections.proto b/protos/trogoneventstore/protocols/v1/projections.proto similarity index 51% rename from protos/kurrentdb/protocols/v1/projections.proto rename to protos/trogoneventstore/protocols/v1/projections.proto index 926f8a5..a4fdd10 100644 --- a/protos/kurrentdb/protocols/v1/projections.proto +++ b/protos/trogoneventstore/protocols/v1/projections.proto @@ -1,21 +1,27 @@ syntax = "proto3"; package event_store.client.projections; + +option go_package = "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/projections"; option java_package = "com.eventstore.dbclient.proto.projections"; -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/projections"; import "google/protobuf/struct.proto"; -import "kurrentdb/protocols/v1/shared.proto"; +import "trogoneventstore/protocols/v1/shared.proto"; service Projections { rpc Create (CreateReq) returns (CreateResp); rpc Update (UpdateReq) returns (UpdateResp); + rpc GetQuery (GetQueryReq) returns (GetQueryResp); rpc Delete (DeleteReq) returns (DeleteResp); rpc Statistics (StatisticsReq) returns (stream StatisticsResp); rpc Disable (DisableReq) returns (DisableResp); rpc Enable (EnableReq) returns (EnableResp); rpc Reset (ResetReq) returns (ResetResp); + rpc Abort (AbortReq) returns (AbortResp); rpc State (StateReq) returns (StateResp); rpc Result (ResultReq) returns (ResultResp); + rpc GetConfig (GetConfigReq) returns (GetConfigResp); + rpc UpdateConfig (UpdateConfigReq) returns (UpdateConfigResp); + rpc ReadEvents (ReadEventsReq) returns (ReadEventsResp); rpc RestartSubsystem (event_store.client.Empty) returns (event_store.client.Empty); } @@ -29,8 +35,16 @@ message CreateReq { Continuous continuous = 3; } string query = 4; - int32 engine_version = 5; // 0 or 1 = v1 (default), 2 = v2 - map properties = 6; + string handler_type = 5; + oneof enabled_option { + bool enabled = 6; + event_store.client.Empty no_enabled_option = 7; + } + optional string name = 8; + bool checkpoints_enabled = 9; + bool emit_enabled = 10; + bool track_emitted_streams = 11; + map annotations = 12; message Transient { string name = 1; @@ -56,13 +70,36 @@ message UpdateReq { bool emit_enabled = 3; event_store.client.Empty no_emit_options = 4; } - map properties = 5; + map annotations = 5; } } message UpdateResp { } +message GetQueryReq { + Options options = 1; + + message Options { + string name = 1; + } +} + +message GetQueryResp { + Details details = 1; + + message Details { + string name = 1; + string query = 2; + bool emit_enabled = 3; + string projection_type = 4; + optional bool track_emitted_streams = 5; + optional bool checkpoints_enabled = 6; + string definition_json = 7; + string output_config_json = 8; + } +} + message DeleteReq { Options options = 1; @@ -86,6 +123,7 @@ message StatisticsReq { event_store.client.Empty transient = 3; event_store.client.Empty continuous = 4; event_store.client.Empty one_time = 5; + event_store.client.Empty all_non_transient = 6; } } } @@ -142,6 +180,50 @@ message ResultResp { google.protobuf.Value result = 1; } +message GetConfigReq { + Options options = 1; + + message Options { + string name = 1; + } +} + +message GetConfigResp { + Details details = 1; + + message Details { + bool emit_enabled = 1; + bool track_emitted_streams = 2; + int32 checkpoint_after_ms = 3; + int32 checkpoint_handled_threshold = 4; + int32 checkpoint_unhandled_bytes_threshold = 5; + int32 pending_events_threshold = 6; + int32 max_write_batch_length = 7; + int32 max_allowed_writes_in_flight = 8; + optional int32 projection_execution_timeout = 9; + } +} + +message UpdateConfigReq { + Options options = 1; + + message Options { + string name = 1; + bool emit_enabled = 2; + bool track_emitted_streams = 3; + int32 checkpoint_after_ms = 4; + int32 checkpoint_handled_threshold = 5; + int32 checkpoint_unhandled_bytes_threshold = 6; + int32 pending_events_threshold = 7; + int32 max_write_batch_length = 8; + int32 max_allowed_writes_in_flight = 9; + optional int32 projection_execution_timeout = 10; + } +} + +message UpdateConfigResp { +} + message ResetReq { Options options = 1; @@ -154,6 +236,16 @@ message ResetReq { message ResetResp { } +message AbortReq { + Options options = 1; + + message Options { + string name = 1; + } +} + +message AbortResp { +} message EnableReq { Options options = 1; @@ -177,3 +269,34 @@ message DisableReq { message DisableResp { } + +message ReadEventsReq { + Options options = 1; + + message Options { + string query_sources_json = 1; + string position_json = 2; + int32 max_events = 3; + } +} + +message ReadEventsResp { + Details details = 1; + + message Details { + string correlation_id = 1; + string reader_position_json = 2; + repeated Event events = 3; + + message Event { + string event_stream_id = 1; + int64 event_number = 2; + string event_type = 3; + google.protobuf.Value data = 4; + google.protobuf.Value metadata = 5; + google.protobuf.Value link_metadata = 6; + bool is_json = 7; + string reader_position_json = 8; + } + } +} diff --git a/protos/trogoneventstore/protocols/v1/projections/projections.pb.go b/protos/trogoneventstore/protocols/v1/projections/projections.pb.go new file mode 100644 index 0000000..fb14f27 --- /dev/null +++ b/protos/trogoneventstore/protocols/v1/projections/projections.pb.go @@ -0,0 +1,3348 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.9 +// protoc v7.36.0 +// source: trogoneventstore/protocols/v1/projections.proto + +package projections + +import ( + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type CreateReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *CreateReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateReq) Reset() { + *x = CreateReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq) ProtoMessage() {} + +func (x *CreateReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq.ProtoReflect.Descriptor instead. +func (*CreateReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateReq) GetOptions() *CreateReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type CreateResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateResp) Reset() { + *x = CreateResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateResp) ProtoMessage() {} + +func (x *CreateResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateResp.ProtoReflect.Descriptor instead. +func (*CreateResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{1} +} + +type UpdateReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *UpdateReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateReq) Reset() { + *x = UpdateReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateReq) ProtoMessage() {} + +func (x *UpdateReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateReq.ProtoReflect.Descriptor instead. +func (*UpdateReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{2} +} + +func (x *UpdateReq) GetOptions() *UpdateReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type UpdateResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateResp) Reset() { + *x = UpdateResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateResp) ProtoMessage() {} + +func (x *UpdateResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateResp.ProtoReflect.Descriptor instead. +func (*UpdateResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{3} +} + +type GetQueryReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *GetQueryReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetQueryReq) Reset() { + *x = GetQueryReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetQueryReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQueryReq) ProtoMessage() {} + +func (x *GetQueryReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQueryReq.ProtoReflect.Descriptor instead. +func (*GetQueryReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{4} +} + +func (x *GetQueryReq) GetOptions() *GetQueryReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type GetQueryResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Details *GetQueryResp_Details `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetQueryResp) Reset() { + *x = GetQueryResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetQueryResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQueryResp) ProtoMessage() {} + +func (x *GetQueryResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQueryResp.ProtoReflect.Descriptor instead. +func (*GetQueryResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{5} +} + +func (x *GetQueryResp) GetDetails() *GetQueryResp_Details { + if x != nil { + return x.Details + } + return nil +} + +type DeleteReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *DeleteReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteReq) Reset() { + *x = DeleteReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReq) ProtoMessage() {} + +func (x *DeleteReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. +func (*DeleteReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{6} +} + +func (x *DeleteReq) GetOptions() *DeleteReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type DeleteResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteResp) Reset() { + *x = DeleteResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteResp) ProtoMessage() {} + +func (x *DeleteResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. +func (*DeleteResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{7} +} + +type StatisticsReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *StatisticsReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatisticsReq) Reset() { + *x = StatisticsReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatisticsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatisticsReq) ProtoMessage() {} + +func (x *StatisticsReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatisticsReq.ProtoReflect.Descriptor instead. +func (*StatisticsReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{8} +} + +func (x *StatisticsReq) GetOptions() *StatisticsReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type StatisticsResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Details *StatisticsResp_Details `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatisticsResp) Reset() { + *x = StatisticsResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatisticsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatisticsResp) ProtoMessage() {} + +func (x *StatisticsResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatisticsResp.ProtoReflect.Descriptor instead. +func (*StatisticsResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{9} +} + +func (x *StatisticsResp) GetDetails() *StatisticsResp_Details { + if x != nil { + return x.Details + } + return nil +} + +type StateReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *StateReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StateReq) Reset() { + *x = StateReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StateReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateReq) ProtoMessage() {} + +func (x *StateReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateReq.ProtoReflect.Descriptor instead. +func (*StateReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{10} +} + +func (x *StateReq) GetOptions() *StateReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type StateResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + State *structpb.Value `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StateResp) Reset() { + *x = StateResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StateResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateResp) ProtoMessage() {} + +func (x *StateResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateResp.ProtoReflect.Descriptor instead. +func (*StateResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{11} +} + +func (x *StateResp) GetState() *structpb.Value { + if x != nil { + return x.State + } + return nil +} + +type ResultReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *ResultReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResultReq) Reset() { + *x = ResultReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResultReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResultReq) ProtoMessage() {} + +func (x *ResultReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResultReq.ProtoReflect.Descriptor instead. +func (*ResultReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{12} +} + +func (x *ResultReq) GetOptions() *ResultReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type ResultResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Result *structpb.Value `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResultResp) Reset() { + *x = ResultResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResultResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResultResp) ProtoMessage() {} + +func (x *ResultResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResultResp.ProtoReflect.Descriptor instead. +func (*ResultResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{13} +} + +func (x *ResultResp) GetResult() *structpb.Value { + if x != nil { + return x.Result + } + return nil +} + +type GetConfigReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *GetConfigReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetConfigReq) Reset() { + *x = GetConfigReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetConfigReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigReq) ProtoMessage() {} + +func (x *GetConfigReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigReq.ProtoReflect.Descriptor instead. +func (*GetConfigReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{14} +} + +func (x *GetConfigReq) GetOptions() *GetConfigReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type GetConfigResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Details *GetConfigResp_Details `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetConfigResp) Reset() { + *x = GetConfigResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetConfigResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigResp) ProtoMessage() {} + +func (x *GetConfigResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigResp.ProtoReflect.Descriptor instead. +func (*GetConfigResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{15} +} + +func (x *GetConfigResp) GetDetails() *GetConfigResp_Details { + if x != nil { + return x.Details + } + return nil +} + +type UpdateConfigReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *UpdateConfigReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateConfigReq) Reset() { + *x = UpdateConfigReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateConfigReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateConfigReq) ProtoMessage() {} + +func (x *UpdateConfigReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateConfigReq.ProtoReflect.Descriptor instead. +func (*UpdateConfigReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{16} +} + +func (x *UpdateConfigReq) GetOptions() *UpdateConfigReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type UpdateConfigResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateConfigResp) Reset() { + *x = UpdateConfigResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateConfigResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateConfigResp) ProtoMessage() {} + +func (x *UpdateConfigResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateConfigResp.ProtoReflect.Descriptor instead. +func (*UpdateConfigResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{17} +} + +type ResetReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *ResetReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResetReq) Reset() { + *x = ResetReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResetReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResetReq) ProtoMessage() {} + +func (x *ResetReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResetReq.ProtoReflect.Descriptor instead. +func (*ResetReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{18} +} + +func (x *ResetReq) GetOptions() *ResetReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type ResetResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResetResp) Reset() { + *x = ResetResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResetResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResetResp) ProtoMessage() {} + +func (x *ResetResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResetResp.ProtoReflect.Descriptor instead. +func (*ResetResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{19} +} + +type AbortReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *AbortReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AbortReq) Reset() { + *x = AbortReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AbortReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbortReq) ProtoMessage() {} + +func (x *AbortReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbortReq.ProtoReflect.Descriptor instead. +func (*AbortReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{20} +} + +func (x *AbortReq) GetOptions() *AbortReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type AbortResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AbortResp) Reset() { + *x = AbortResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AbortResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbortResp) ProtoMessage() {} + +func (x *AbortResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbortResp.ProtoReflect.Descriptor instead. +func (*AbortResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{21} +} + +type EnableReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *EnableReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EnableReq) Reset() { + *x = EnableReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EnableReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnableReq) ProtoMessage() {} + +func (x *EnableReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnableReq.ProtoReflect.Descriptor instead. +func (*EnableReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{22} +} + +func (x *EnableReq) GetOptions() *EnableReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type EnableResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EnableResp) Reset() { + *x = EnableResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EnableResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnableResp) ProtoMessage() {} + +func (x *EnableResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnableResp.ProtoReflect.Descriptor instead. +func (*EnableResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{23} +} + +type DisableReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *DisableReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DisableReq) Reset() { + *x = DisableReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DisableReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisableReq) ProtoMessage() {} + +func (x *DisableReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisableReq.ProtoReflect.Descriptor instead. +func (*DisableReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{24} +} + +func (x *DisableReq) GetOptions() *DisableReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type DisableResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DisableResp) Reset() { + *x = DisableResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DisableResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisableResp) ProtoMessage() {} + +func (x *DisableResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisableResp.ProtoReflect.Descriptor instead. +func (*DisableResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{25} +} + +type ReadEventsReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Options *ReadEventsReq_Options `protobuf:"bytes,1,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadEventsReq) Reset() { + *x = ReadEventsReq{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadEventsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadEventsReq) ProtoMessage() {} + +func (x *ReadEventsReq) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadEventsReq.ProtoReflect.Descriptor instead. +func (*ReadEventsReq) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{26} +} + +func (x *ReadEventsReq) GetOptions() *ReadEventsReq_Options { + if x != nil { + return x.Options + } + return nil +} + +type ReadEventsResp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Details *ReadEventsResp_Details `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadEventsResp) Reset() { + *x = ReadEventsResp{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadEventsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadEventsResp) ProtoMessage() {} + +func (x *ReadEventsResp) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadEventsResp.ProtoReflect.Descriptor instead. +func (*ReadEventsResp) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{27} +} + +func (x *ReadEventsResp) GetDetails() *ReadEventsResp_Details { + if x != nil { + return x.Details + } + return nil +} + +type CreateReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Mode: + // + // *CreateReq_Options_OneTime + // *CreateReq_Options_Transient_ + // *CreateReq_Options_Continuous_ + Mode isCreateReq_Options_Mode `protobuf_oneof:"mode"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + HandlerType string `protobuf:"bytes,5,opt,name=handler_type,json=handlerType,proto3" json:"handler_type,omitempty"` + // Types that are valid to be assigned to EnabledOption: + // + // *CreateReq_Options_Enabled + // *CreateReq_Options_NoEnabledOption + EnabledOption isCreateReq_Options_EnabledOption `protobuf_oneof:"enabled_option"` + Name *string `protobuf:"bytes,8,opt,name=name,proto3,oneof" json:"name,omitempty"` + CheckpointsEnabled bool `protobuf:"varint,9,opt,name=checkpoints_enabled,json=checkpointsEnabled,proto3" json:"checkpoints_enabled,omitempty"` + EmitEnabled bool `protobuf:"varint,10,opt,name=emit_enabled,json=emitEnabled,proto3" json:"emit_enabled,omitempty"` + TrackEmittedStreams bool `protobuf:"varint,11,opt,name=track_emitted_streams,json=trackEmittedStreams,proto3" json:"track_emitted_streams,omitempty"` + Annotations map[string]string `protobuf:"bytes,12,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateReq_Options) Reset() { + *x = CreateReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq_Options) ProtoMessage() {} + +func (x *CreateReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq_Options.ProtoReflect.Descriptor instead. +func (*CreateReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *CreateReq_Options) GetMode() isCreateReq_Options_Mode { + if x != nil { + return x.Mode + } + return nil +} + +func (x *CreateReq_Options) GetOneTime() *shared.Empty { + if x != nil { + if x, ok := x.Mode.(*CreateReq_Options_OneTime); ok { + return x.OneTime + } + } + return nil +} + +func (x *CreateReq_Options) GetTransient() *CreateReq_Options_Transient { + if x != nil { + if x, ok := x.Mode.(*CreateReq_Options_Transient_); ok { + return x.Transient + } + } + return nil +} + +func (x *CreateReq_Options) GetContinuous() *CreateReq_Options_Continuous { + if x != nil { + if x, ok := x.Mode.(*CreateReq_Options_Continuous_); ok { + return x.Continuous + } + } + return nil +} + +func (x *CreateReq_Options) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *CreateReq_Options) GetHandlerType() string { + if x != nil { + return x.HandlerType + } + return "" +} + +func (x *CreateReq_Options) GetEnabledOption() isCreateReq_Options_EnabledOption { + if x != nil { + return x.EnabledOption + } + return nil +} + +func (x *CreateReq_Options) GetEnabled() bool { + if x != nil { + if x, ok := x.EnabledOption.(*CreateReq_Options_Enabled); ok { + return x.Enabled + } + } + return false +} + +func (x *CreateReq_Options) GetNoEnabledOption() *shared.Empty { + if x != nil { + if x, ok := x.EnabledOption.(*CreateReq_Options_NoEnabledOption); ok { + return x.NoEnabledOption + } + } + return nil +} + +func (x *CreateReq_Options) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *CreateReq_Options) GetCheckpointsEnabled() bool { + if x != nil { + return x.CheckpointsEnabled + } + return false +} + +func (x *CreateReq_Options) GetEmitEnabled() bool { + if x != nil { + return x.EmitEnabled + } + return false +} + +func (x *CreateReq_Options) GetTrackEmittedStreams() bool { + if x != nil { + return x.TrackEmittedStreams + } + return false +} + +func (x *CreateReq_Options) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + +type isCreateReq_Options_Mode interface { + isCreateReq_Options_Mode() +} + +type CreateReq_Options_OneTime struct { + OneTime *shared.Empty `protobuf:"bytes,1,opt,name=one_time,json=oneTime,proto3,oneof"` +} + +type CreateReq_Options_Transient_ struct { + Transient *CreateReq_Options_Transient `protobuf:"bytes,2,opt,name=transient,proto3,oneof"` +} + +type CreateReq_Options_Continuous_ struct { + Continuous *CreateReq_Options_Continuous `protobuf:"bytes,3,opt,name=continuous,proto3,oneof"` +} + +func (*CreateReq_Options_OneTime) isCreateReq_Options_Mode() {} + +func (*CreateReq_Options_Transient_) isCreateReq_Options_Mode() {} + +func (*CreateReq_Options_Continuous_) isCreateReq_Options_Mode() {} + +type isCreateReq_Options_EnabledOption interface { + isCreateReq_Options_EnabledOption() +} + +type CreateReq_Options_Enabled struct { + Enabled bool `protobuf:"varint,6,opt,name=enabled,proto3,oneof"` +} + +type CreateReq_Options_NoEnabledOption struct { + NoEnabledOption *shared.Empty `protobuf:"bytes,7,opt,name=no_enabled_option,json=noEnabledOption,proto3,oneof"` +} + +func (*CreateReq_Options_Enabled) isCreateReq_Options_EnabledOption() {} + +func (*CreateReq_Options_NoEnabledOption) isCreateReq_Options_EnabledOption() {} + +type CreateReq_Options_Transient struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateReq_Options_Transient) Reset() { + *x = CreateReq_Options_Transient{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateReq_Options_Transient) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq_Options_Transient) ProtoMessage() {} + +func (x *CreateReq_Options_Transient) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq_Options_Transient.ProtoReflect.Descriptor instead. +func (*CreateReq_Options_Transient) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{0, 0, 1} +} + +func (x *CreateReq_Options_Transient) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type CreateReq_Options_Continuous struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + EmitEnabled bool `protobuf:"varint,2,opt,name=emit_enabled,json=emitEnabled,proto3" json:"emit_enabled,omitempty"` + TrackEmittedStreams bool `protobuf:"varint,3,opt,name=track_emitted_streams,json=trackEmittedStreams,proto3" json:"track_emitted_streams,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateReq_Options_Continuous) Reset() { + *x = CreateReq_Options_Continuous{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateReq_Options_Continuous) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateReq_Options_Continuous) ProtoMessage() {} + +func (x *CreateReq_Options_Continuous) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateReq_Options_Continuous.ProtoReflect.Descriptor instead. +func (*CreateReq_Options_Continuous) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{0, 0, 2} +} + +func (x *CreateReq_Options_Continuous) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateReq_Options_Continuous) GetEmitEnabled() bool { + if x != nil { + return x.EmitEnabled + } + return false +} + +func (x *CreateReq_Options_Continuous) GetTrackEmittedStreams() bool { + if x != nil { + return x.TrackEmittedStreams + } + return false +} + +type UpdateReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + // Types that are valid to be assigned to EmitOption: + // + // *UpdateReq_Options_EmitEnabled + // *UpdateReq_Options_NoEmitOptions + EmitOption isUpdateReq_Options_EmitOption `protobuf_oneof:"emit_option"` + Annotations map[string]string `protobuf:"bytes,5,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateReq_Options) Reset() { + *x = UpdateReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateReq_Options) ProtoMessage() {} + +func (x *UpdateReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateReq_Options.ProtoReflect.Descriptor instead. +func (*UpdateReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *UpdateReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateReq_Options) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *UpdateReq_Options) GetEmitOption() isUpdateReq_Options_EmitOption { + if x != nil { + return x.EmitOption + } + return nil +} + +func (x *UpdateReq_Options) GetEmitEnabled() bool { + if x != nil { + if x, ok := x.EmitOption.(*UpdateReq_Options_EmitEnabled); ok { + return x.EmitEnabled + } + } + return false +} + +func (x *UpdateReq_Options) GetNoEmitOptions() *shared.Empty { + if x != nil { + if x, ok := x.EmitOption.(*UpdateReq_Options_NoEmitOptions); ok { + return x.NoEmitOptions + } + } + return nil +} + +func (x *UpdateReq_Options) GetAnnotations() map[string]string { + if x != nil { + return x.Annotations + } + return nil +} + +type isUpdateReq_Options_EmitOption interface { + isUpdateReq_Options_EmitOption() +} + +type UpdateReq_Options_EmitEnabled struct { + EmitEnabled bool `protobuf:"varint,3,opt,name=emit_enabled,json=emitEnabled,proto3,oneof"` +} + +type UpdateReq_Options_NoEmitOptions struct { + NoEmitOptions *shared.Empty `protobuf:"bytes,4,opt,name=no_emit_options,json=noEmitOptions,proto3,oneof"` +} + +func (*UpdateReq_Options_EmitEnabled) isUpdateReq_Options_EmitOption() {} + +func (*UpdateReq_Options_NoEmitOptions) isUpdateReq_Options_EmitOption() {} + +type GetQueryReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetQueryReq_Options) Reset() { + *x = GetQueryReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetQueryReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQueryReq_Options) ProtoMessage() {} + +func (x *GetQueryReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQueryReq_Options.ProtoReflect.Descriptor instead. +func (*GetQueryReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *GetQueryReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type GetQueryResp_Details struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + EmitEnabled bool `protobuf:"varint,3,opt,name=emit_enabled,json=emitEnabled,proto3" json:"emit_enabled,omitempty"` + ProjectionType string `protobuf:"bytes,4,opt,name=projection_type,json=projectionType,proto3" json:"projection_type,omitempty"` + TrackEmittedStreams *bool `protobuf:"varint,5,opt,name=track_emitted_streams,json=trackEmittedStreams,proto3,oneof" json:"track_emitted_streams,omitempty"` + CheckpointsEnabled *bool `protobuf:"varint,6,opt,name=checkpoints_enabled,json=checkpointsEnabled,proto3,oneof" json:"checkpoints_enabled,omitempty"` + DefinitionJson string `protobuf:"bytes,7,opt,name=definition_json,json=definitionJson,proto3" json:"definition_json,omitempty"` + OutputConfigJson string `protobuf:"bytes,8,opt,name=output_config_json,json=outputConfigJson,proto3" json:"output_config_json,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetQueryResp_Details) Reset() { + *x = GetQueryResp_Details{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetQueryResp_Details) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQueryResp_Details) ProtoMessage() {} + +func (x *GetQueryResp_Details) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQueryResp_Details.ProtoReflect.Descriptor instead. +func (*GetQueryResp_Details) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *GetQueryResp_Details) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetQueryResp_Details) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *GetQueryResp_Details) GetEmitEnabled() bool { + if x != nil { + return x.EmitEnabled + } + return false +} + +func (x *GetQueryResp_Details) GetProjectionType() string { + if x != nil { + return x.ProjectionType + } + return "" +} + +func (x *GetQueryResp_Details) GetTrackEmittedStreams() bool { + if x != nil && x.TrackEmittedStreams != nil { + return *x.TrackEmittedStreams + } + return false +} + +func (x *GetQueryResp_Details) GetCheckpointsEnabled() bool { + if x != nil && x.CheckpointsEnabled != nil { + return *x.CheckpointsEnabled + } + return false +} + +func (x *GetQueryResp_Details) GetDefinitionJson() string { + if x != nil { + return x.DefinitionJson + } + return "" +} + +func (x *GetQueryResp_Details) GetOutputConfigJson() string { + if x != nil { + return x.OutputConfigJson + } + return "" +} + +type DeleteReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + DeleteEmittedStreams bool `protobuf:"varint,2,opt,name=delete_emitted_streams,json=deleteEmittedStreams,proto3" json:"delete_emitted_streams,omitempty"` + DeleteStateStream bool `protobuf:"varint,3,opt,name=delete_state_stream,json=deleteStateStream,proto3" json:"delete_state_stream,omitempty"` + DeleteCheckpointStream bool `protobuf:"varint,4,opt,name=delete_checkpoint_stream,json=deleteCheckpointStream,proto3" json:"delete_checkpoint_stream,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteReq_Options) Reset() { + *x = DeleteReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteReq_Options) ProtoMessage() {} + +func (x *DeleteReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteReq_Options.ProtoReflect.Descriptor instead. +func (*DeleteReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *DeleteReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteReq_Options) GetDeleteEmittedStreams() bool { + if x != nil { + return x.DeleteEmittedStreams + } + return false +} + +func (x *DeleteReq_Options) GetDeleteStateStream() bool { + if x != nil { + return x.DeleteStateStream + } + return false +} + +func (x *DeleteReq_Options) GetDeleteCheckpointStream() bool { + if x != nil { + return x.DeleteCheckpointStream + } + return false +} + +type StatisticsReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Mode: + // + // *StatisticsReq_Options_Name + // *StatisticsReq_Options_All + // *StatisticsReq_Options_Transient + // *StatisticsReq_Options_Continuous + // *StatisticsReq_Options_OneTime + // *StatisticsReq_Options_AllNonTransient + Mode isStatisticsReq_Options_Mode `protobuf_oneof:"mode"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatisticsReq_Options) Reset() { + *x = StatisticsReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatisticsReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatisticsReq_Options) ProtoMessage() {} + +func (x *StatisticsReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatisticsReq_Options.ProtoReflect.Descriptor instead. +func (*StatisticsReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{8, 0} +} + +func (x *StatisticsReq_Options) GetMode() isStatisticsReq_Options_Mode { + if x != nil { + return x.Mode + } + return nil +} + +func (x *StatisticsReq_Options) GetName() string { + if x != nil { + if x, ok := x.Mode.(*StatisticsReq_Options_Name); ok { + return x.Name + } + } + return "" +} + +func (x *StatisticsReq_Options) GetAll() *shared.Empty { + if x != nil { + if x, ok := x.Mode.(*StatisticsReq_Options_All); ok { + return x.All + } + } + return nil +} + +func (x *StatisticsReq_Options) GetTransient() *shared.Empty { + if x != nil { + if x, ok := x.Mode.(*StatisticsReq_Options_Transient); ok { + return x.Transient + } + } + return nil +} + +func (x *StatisticsReq_Options) GetContinuous() *shared.Empty { + if x != nil { + if x, ok := x.Mode.(*StatisticsReq_Options_Continuous); ok { + return x.Continuous + } + } + return nil +} + +func (x *StatisticsReq_Options) GetOneTime() *shared.Empty { + if x != nil { + if x, ok := x.Mode.(*StatisticsReq_Options_OneTime); ok { + return x.OneTime + } + } + return nil +} + +func (x *StatisticsReq_Options) GetAllNonTransient() *shared.Empty { + if x != nil { + if x, ok := x.Mode.(*StatisticsReq_Options_AllNonTransient); ok { + return x.AllNonTransient + } + } + return nil +} + +type isStatisticsReq_Options_Mode interface { + isStatisticsReq_Options_Mode() +} + +type StatisticsReq_Options_Name struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3,oneof"` +} + +type StatisticsReq_Options_All struct { + All *shared.Empty `protobuf:"bytes,2,opt,name=all,proto3,oneof"` +} + +type StatisticsReq_Options_Transient struct { + Transient *shared.Empty `protobuf:"bytes,3,opt,name=transient,proto3,oneof"` +} + +type StatisticsReq_Options_Continuous struct { + Continuous *shared.Empty `protobuf:"bytes,4,opt,name=continuous,proto3,oneof"` +} + +type StatisticsReq_Options_OneTime struct { + OneTime *shared.Empty `protobuf:"bytes,5,opt,name=one_time,json=oneTime,proto3,oneof"` +} + +type StatisticsReq_Options_AllNonTransient struct { + AllNonTransient *shared.Empty `protobuf:"bytes,6,opt,name=all_non_transient,json=allNonTransient,proto3,oneof"` +} + +func (*StatisticsReq_Options_Name) isStatisticsReq_Options_Mode() {} + +func (*StatisticsReq_Options_All) isStatisticsReq_Options_Mode() {} + +func (*StatisticsReq_Options_Transient) isStatisticsReq_Options_Mode() {} + +func (*StatisticsReq_Options_Continuous) isStatisticsReq_Options_Mode() {} + +func (*StatisticsReq_Options_OneTime) isStatisticsReq_Options_Mode() {} + +func (*StatisticsReq_Options_AllNonTransient) isStatisticsReq_Options_Mode() {} + +type StatisticsResp_Details struct { + state protoimpl.MessageState `protogen:"open.v1"` + CoreProcessingTime int64 `protobuf:"varint,1,opt,name=coreProcessingTime,proto3" json:"coreProcessingTime,omitempty"` + Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + Epoch int64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + EffectiveName string `protobuf:"bytes,4,opt,name=effectiveName,proto3" json:"effectiveName,omitempty"` + WritesInProgress int32 `protobuf:"varint,5,opt,name=writesInProgress,proto3" json:"writesInProgress,omitempty"` + ReadsInProgress int32 `protobuf:"varint,6,opt,name=readsInProgress,proto3" json:"readsInProgress,omitempty"` + PartitionsCached int32 `protobuf:"varint,7,opt,name=partitionsCached,proto3" json:"partitionsCached,omitempty"` + Status string `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"` + StateReason string `protobuf:"bytes,9,opt,name=stateReason,proto3" json:"stateReason,omitempty"` + Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"` + Mode string `protobuf:"bytes,11,opt,name=mode,proto3" json:"mode,omitempty"` + Position string `protobuf:"bytes,12,opt,name=position,proto3" json:"position,omitempty"` + Progress float32 `protobuf:"fixed32,13,opt,name=progress,proto3" json:"progress,omitempty"` + LastCheckpoint string `protobuf:"bytes,14,opt,name=lastCheckpoint,proto3" json:"lastCheckpoint,omitempty"` + EventsProcessedAfterRestart int64 `protobuf:"varint,15,opt,name=eventsProcessedAfterRestart,proto3" json:"eventsProcessedAfterRestart,omitempty"` + CheckpointStatus string `protobuf:"bytes,16,opt,name=checkpointStatus,proto3" json:"checkpointStatus,omitempty"` + BufferedEvents int64 `protobuf:"varint,17,opt,name=bufferedEvents,proto3" json:"bufferedEvents,omitempty"` + WritePendingEventsBeforeCheckpoint int32 `protobuf:"varint,18,opt,name=writePendingEventsBeforeCheckpoint,proto3" json:"writePendingEventsBeforeCheckpoint,omitempty"` + WritePendingEventsAfterCheckpoint int32 `protobuf:"varint,19,opt,name=writePendingEventsAfterCheckpoint,proto3" json:"writePendingEventsAfterCheckpoint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StatisticsResp_Details) Reset() { + *x = StatisticsResp_Details{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatisticsResp_Details) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatisticsResp_Details) ProtoMessage() {} + +func (x *StatisticsResp_Details) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatisticsResp_Details.ProtoReflect.Descriptor instead. +func (*StatisticsResp_Details) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{9, 0} +} + +func (x *StatisticsResp_Details) GetCoreProcessingTime() int64 { + if x != nil { + return x.CoreProcessingTime + } + return 0 +} + +func (x *StatisticsResp_Details) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *StatisticsResp_Details) GetEpoch() int64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *StatisticsResp_Details) GetEffectiveName() string { + if x != nil { + return x.EffectiveName + } + return "" +} + +func (x *StatisticsResp_Details) GetWritesInProgress() int32 { + if x != nil { + return x.WritesInProgress + } + return 0 +} + +func (x *StatisticsResp_Details) GetReadsInProgress() int32 { + if x != nil { + return x.ReadsInProgress + } + return 0 +} + +func (x *StatisticsResp_Details) GetPartitionsCached() int32 { + if x != nil { + return x.PartitionsCached + } + return 0 +} + +func (x *StatisticsResp_Details) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *StatisticsResp_Details) GetStateReason() string { + if x != nil { + return x.StateReason + } + return "" +} + +func (x *StatisticsResp_Details) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StatisticsResp_Details) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *StatisticsResp_Details) GetPosition() string { + if x != nil { + return x.Position + } + return "" +} + +func (x *StatisticsResp_Details) GetProgress() float32 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *StatisticsResp_Details) GetLastCheckpoint() string { + if x != nil { + return x.LastCheckpoint + } + return "" +} + +func (x *StatisticsResp_Details) GetEventsProcessedAfterRestart() int64 { + if x != nil { + return x.EventsProcessedAfterRestart + } + return 0 +} + +func (x *StatisticsResp_Details) GetCheckpointStatus() string { + if x != nil { + return x.CheckpointStatus + } + return "" +} + +func (x *StatisticsResp_Details) GetBufferedEvents() int64 { + if x != nil { + return x.BufferedEvents + } + return 0 +} + +func (x *StatisticsResp_Details) GetWritePendingEventsBeforeCheckpoint() int32 { + if x != nil { + return x.WritePendingEventsBeforeCheckpoint + } + return 0 +} + +func (x *StatisticsResp_Details) GetWritePendingEventsAfterCheckpoint() int32 { + if x != nil { + return x.WritePendingEventsAfterCheckpoint + } + return 0 +} + +type StateReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Partition string `protobuf:"bytes,2,opt,name=partition,proto3" json:"partition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StateReq_Options) Reset() { + *x = StateReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StateReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateReq_Options) ProtoMessage() {} + +func (x *StateReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateReq_Options.ProtoReflect.Descriptor instead. +func (*StateReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{10, 0} +} + +func (x *StateReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StateReq_Options) GetPartition() string { + if x != nil { + return x.Partition + } + return "" +} + +type ResultReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Partition string `protobuf:"bytes,2,opt,name=partition,proto3" json:"partition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResultReq_Options) Reset() { + *x = ResultReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResultReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResultReq_Options) ProtoMessage() {} + +func (x *ResultReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResultReq_Options.ProtoReflect.Descriptor instead. +func (*ResultReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{12, 0} +} + +func (x *ResultReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResultReq_Options) GetPartition() string { + if x != nil { + return x.Partition + } + return "" +} + +type GetConfigReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetConfigReq_Options) Reset() { + *x = GetConfigReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetConfigReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigReq_Options) ProtoMessage() {} + +func (x *GetConfigReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigReq_Options.ProtoReflect.Descriptor instead. +func (*GetConfigReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{14, 0} +} + +func (x *GetConfigReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type GetConfigResp_Details struct { + state protoimpl.MessageState `protogen:"open.v1"` + EmitEnabled bool `protobuf:"varint,1,opt,name=emit_enabled,json=emitEnabled,proto3" json:"emit_enabled,omitempty"` + TrackEmittedStreams bool `protobuf:"varint,2,opt,name=track_emitted_streams,json=trackEmittedStreams,proto3" json:"track_emitted_streams,omitempty"` + CheckpointAfterMs int32 `protobuf:"varint,3,opt,name=checkpoint_after_ms,json=checkpointAfterMs,proto3" json:"checkpoint_after_ms,omitempty"` + CheckpointHandledThreshold int32 `protobuf:"varint,4,opt,name=checkpoint_handled_threshold,json=checkpointHandledThreshold,proto3" json:"checkpoint_handled_threshold,omitempty"` + CheckpointUnhandledBytesThreshold int32 `protobuf:"varint,5,opt,name=checkpoint_unhandled_bytes_threshold,json=checkpointUnhandledBytesThreshold,proto3" json:"checkpoint_unhandled_bytes_threshold,omitempty"` + PendingEventsThreshold int32 `protobuf:"varint,6,opt,name=pending_events_threshold,json=pendingEventsThreshold,proto3" json:"pending_events_threshold,omitempty"` + MaxWriteBatchLength int32 `protobuf:"varint,7,opt,name=max_write_batch_length,json=maxWriteBatchLength,proto3" json:"max_write_batch_length,omitempty"` + MaxAllowedWritesInFlight int32 `protobuf:"varint,8,opt,name=max_allowed_writes_in_flight,json=maxAllowedWritesInFlight,proto3" json:"max_allowed_writes_in_flight,omitempty"` + ProjectionExecutionTimeout *int32 `protobuf:"varint,9,opt,name=projection_execution_timeout,json=projectionExecutionTimeout,proto3,oneof" json:"projection_execution_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetConfigResp_Details) Reset() { + *x = GetConfigResp_Details{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetConfigResp_Details) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigResp_Details) ProtoMessage() {} + +func (x *GetConfigResp_Details) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigResp_Details.ProtoReflect.Descriptor instead. +func (*GetConfigResp_Details) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{15, 0} +} + +func (x *GetConfigResp_Details) GetEmitEnabled() bool { + if x != nil { + return x.EmitEnabled + } + return false +} + +func (x *GetConfigResp_Details) GetTrackEmittedStreams() bool { + if x != nil { + return x.TrackEmittedStreams + } + return false +} + +func (x *GetConfigResp_Details) GetCheckpointAfterMs() int32 { + if x != nil { + return x.CheckpointAfterMs + } + return 0 +} + +func (x *GetConfigResp_Details) GetCheckpointHandledThreshold() int32 { + if x != nil { + return x.CheckpointHandledThreshold + } + return 0 +} + +func (x *GetConfigResp_Details) GetCheckpointUnhandledBytesThreshold() int32 { + if x != nil { + return x.CheckpointUnhandledBytesThreshold + } + return 0 +} + +func (x *GetConfigResp_Details) GetPendingEventsThreshold() int32 { + if x != nil { + return x.PendingEventsThreshold + } + return 0 +} + +func (x *GetConfigResp_Details) GetMaxWriteBatchLength() int32 { + if x != nil { + return x.MaxWriteBatchLength + } + return 0 +} + +func (x *GetConfigResp_Details) GetMaxAllowedWritesInFlight() int32 { + if x != nil { + return x.MaxAllowedWritesInFlight + } + return 0 +} + +func (x *GetConfigResp_Details) GetProjectionExecutionTimeout() int32 { + if x != nil && x.ProjectionExecutionTimeout != nil { + return *x.ProjectionExecutionTimeout + } + return 0 +} + +type UpdateConfigReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + EmitEnabled bool `protobuf:"varint,2,opt,name=emit_enabled,json=emitEnabled,proto3" json:"emit_enabled,omitempty"` + TrackEmittedStreams bool `protobuf:"varint,3,opt,name=track_emitted_streams,json=trackEmittedStreams,proto3" json:"track_emitted_streams,omitempty"` + CheckpointAfterMs int32 `protobuf:"varint,4,opt,name=checkpoint_after_ms,json=checkpointAfterMs,proto3" json:"checkpoint_after_ms,omitempty"` + CheckpointHandledThreshold int32 `protobuf:"varint,5,opt,name=checkpoint_handled_threshold,json=checkpointHandledThreshold,proto3" json:"checkpoint_handled_threshold,omitempty"` + CheckpointUnhandledBytesThreshold int32 `protobuf:"varint,6,opt,name=checkpoint_unhandled_bytes_threshold,json=checkpointUnhandledBytesThreshold,proto3" json:"checkpoint_unhandled_bytes_threshold,omitempty"` + PendingEventsThreshold int32 `protobuf:"varint,7,opt,name=pending_events_threshold,json=pendingEventsThreshold,proto3" json:"pending_events_threshold,omitempty"` + MaxWriteBatchLength int32 `protobuf:"varint,8,opt,name=max_write_batch_length,json=maxWriteBatchLength,proto3" json:"max_write_batch_length,omitempty"` + MaxAllowedWritesInFlight int32 `protobuf:"varint,9,opt,name=max_allowed_writes_in_flight,json=maxAllowedWritesInFlight,proto3" json:"max_allowed_writes_in_flight,omitempty"` + ProjectionExecutionTimeout *int32 `protobuf:"varint,10,opt,name=projection_execution_timeout,json=projectionExecutionTimeout,proto3,oneof" json:"projection_execution_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateConfigReq_Options) Reset() { + *x = UpdateConfigReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateConfigReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateConfigReq_Options) ProtoMessage() {} + +func (x *UpdateConfigReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateConfigReq_Options.ProtoReflect.Descriptor instead. +func (*UpdateConfigReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{16, 0} +} + +func (x *UpdateConfigReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateConfigReq_Options) GetEmitEnabled() bool { + if x != nil { + return x.EmitEnabled + } + return false +} + +func (x *UpdateConfigReq_Options) GetTrackEmittedStreams() bool { + if x != nil { + return x.TrackEmittedStreams + } + return false +} + +func (x *UpdateConfigReq_Options) GetCheckpointAfterMs() int32 { + if x != nil { + return x.CheckpointAfterMs + } + return 0 +} + +func (x *UpdateConfigReq_Options) GetCheckpointHandledThreshold() int32 { + if x != nil { + return x.CheckpointHandledThreshold + } + return 0 +} + +func (x *UpdateConfigReq_Options) GetCheckpointUnhandledBytesThreshold() int32 { + if x != nil { + return x.CheckpointUnhandledBytesThreshold + } + return 0 +} + +func (x *UpdateConfigReq_Options) GetPendingEventsThreshold() int32 { + if x != nil { + return x.PendingEventsThreshold + } + return 0 +} + +func (x *UpdateConfigReq_Options) GetMaxWriteBatchLength() int32 { + if x != nil { + return x.MaxWriteBatchLength + } + return 0 +} + +func (x *UpdateConfigReq_Options) GetMaxAllowedWritesInFlight() int32 { + if x != nil { + return x.MaxAllowedWritesInFlight + } + return 0 +} + +func (x *UpdateConfigReq_Options) GetProjectionExecutionTimeout() int32 { + if x != nil && x.ProjectionExecutionTimeout != nil { + return *x.ProjectionExecutionTimeout + } + return 0 +} + +type ResetReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + WriteCheckpoint bool `protobuf:"varint,2,opt,name=write_checkpoint,json=writeCheckpoint,proto3" json:"write_checkpoint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResetReq_Options) Reset() { + *x = ResetReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResetReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResetReq_Options) ProtoMessage() {} + +func (x *ResetReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResetReq_Options.ProtoReflect.Descriptor instead. +func (*ResetReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{18, 0} +} + +func (x *ResetReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResetReq_Options) GetWriteCheckpoint() bool { + if x != nil { + return x.WriteCheckpoint + } + return false +} + +type AbortReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AbortReq_Options) Reset() { + *x = AbortReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AbortReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AbortReq_Options) ProtoMessage() {} + +func (x *AbortReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AbortReq_Options.ProtoReflect.Descriptor instead. +func (*AbortReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *AbortReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type EnableReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EnableReq_Options) Reset() { + *x = EnableReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EnableReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EnableReq_Options) ProtoMessage() {} + +func (x *EnableReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EnableReq_Options.ProtoReflect.Descriptor instead. +func (*EnableReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{22, 0} +} + +func (x *EnableReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type DisableReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + WriteCheckpoint bool `protobuf:"varint,2,opt,name=write_checkpoint,json=writeCheckpoint,proto3" json:"write_checkpoint,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DisableReq_Options) Reset() { + *x = DisableReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DisableReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisableReq_Options) ProtoMessage() {} + +func (x *DisableReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisableReq_Options.ProtoReflect.Descriptor instead. +func (*DisableReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{24, 0} +} + +func (x *DisableReq_Options) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DisableReq_Options) GetWriteCheckpoint() bool { + if x != nil { + return x.WriteCheckpoint + } + return false +} + +type ReadEventsReq_Options struct { + state protoimpl.MessageState `protogen:"open.v1"` + QuerySourcesJson string `protobuf:"bytes,1,opt,name=query_sources_json,json=querySourcesJson,proto3" json:"query_sources_json,omitempty"` + PositionJson string `protobuf:"bytes,2,opt,name=position_json,json=positionJson,proto3" json:"position_json,omitempty"` + MaxEvents int32 `protobuf:"varint,3,opt,name=max_events,json=maxEvents,proto3" json:"max_events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadEventsReq_Options) Reset() { + *x = ReadEventsReq_Options{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadEventsReq_Options) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadEventsReq_Options) ProtoMessage() {} + +func (x *ReadEventsReq_Options) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadEventsReq_Options.ProtoReflect.Descriptor instead. +func (*ReadEventsReq_Options) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{26, 0} +} + +func (x *ReadEventsReq_Options) GetQuerySourcesJson() string { + if x != nil { + return x.QuerySourcesJson + } + return "" +} + +func (x *ReadEventsReq_Options) GetPositionJson() string { + if x != nil { + return x.PositionJson + } + return "" +} + +func (x *ReadEventsReq_Options) GetMaxEvents() int32 { + if x != nil { + return x.MaxEvents + } + return 0 +} + +type ReadEventsResp_Details struct { + state protoimpl.MessageState `protogen:"open.v1"` + CorrelationId string `protobuf:"bytes,1,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"` + ReaderPositionJson string `protobuf:"bytes,2,opt,name=reader_position_json,json=readerPositionJson,proto3" json:"reader_position_json,omitempty"` + Events []*ReadEventsResp_Details_Event `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadEventsResp_Details) Reset() { + *x = ReadEventsResp_Details{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadEventsResp_Details) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadEventsResp_Details) ProtoMessage() {} + +func (x *ReadEventsResp_Details) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadEventsResp_Details.ProtoReflect.Descriptor instead. +func (*ReadEventsResp_Details) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{27, 0} +} + +func (x *ReadEventsResp_Details) GetCorrelationId() string { + if x != nil { + return x.CorrelationId + } + return "" +} + +func (x *ReadEventsResp_Details) GetReaderPositionJson() string { + if x != nil { + return x.ReaderPositionJson + } + return "" +} + +func (x *ReadEventsResp_Details) GetEvents() []*ReadEventsResp_Details_Event { + if x != nil { + return x.Events + } + return nil +} + +type ReadEventsResp_Details_Event struct { + state protoimpl.MessageState `protogen:"open.v1"` + EventStreamId string `protobuf:"bytes,1,opt,name=event_stream_id,json=eventStreamId,proto3" json:"event_stream_id,omitempty"` + EventNumber int64 `protobuf:"varint,2,opt,name=event_number,json=eventNumber,proto3" json:"event_number,omitempty"` + EventType string `protobuf:"bytes,3,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` + Data *structpb.Value `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` + Metadata *structpb.Value `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` + LinkMetadata *structpb.Value `protobuf:"bytes,6,opt,name=link_metadata,json=linkMetadata,proto3" json:"link_metadata,omitempty"` + IsJson bool `protobuf:"varint,7,opt,name=is_json,json=isJson,proto3" json:"is_json,omitempty"` + ReaderPositionJson string `protobuf:"bytes,8,opt,name=reader_position_json,json=readerPositionJson,proto3" json:"reader_position_json,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReadEventsResp_Details_Event) Reset() { + *x = ReadEventsResp_Details_Event{} + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReadEventsResp_Details_Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadEventsResp_Details_Event) ProtoMessage() {} + +func (x *ReadEventsResp_Details_Event) ProtoReflect() protoreflect.Message { + mi := &file_trogoneventstore_protocols_v1_projections_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadEventsResp_Details_Event.ProtoReflect.Descriptor instead. +func (*ReadEventsResp_Details_Event) Descriptor() ([]byte, []int) { + return file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP(), []int{27, 0, 0} +} + +func (x *ReadEventsResp_Details_Event) GetEventStreamId() string { + if x != nil { + return x.EventStreamId + } + return "" +} + +func (x *ReadEventsResp_Details_Event) GetEventNumber() int64 { + if x != nil { + return x.EventNumber + } + return 0 +} + +func (x *ReadEventsResp_Details_Event) GetEventType() string { + if x != nil { + return x.EventType + } + return "" +} + +func (x *ReadEventsResp_Details_Event) GetData() *structpb.Value { + if x != nil { + return x.Data + } + return nil +} + +func (x *ReadEventsResp_Details_Event) GetMetadata() *structpb.Value { + if x != nil { + return x.Metadata + } + return nil +} + +func (x *ReadEventsResp_Details_Event) GetLinkMetadata() *structpb.Value { + if x != nil { + return x.LinkMetadata + } + return nil +} + +func (x *ReadEventsResp_Details_Event) GetIsJson() bool { + if x != nil { + return x.IsJson + } + return false +} + +func (x *ReadEventsResp_Details_Event) GetReaderPositionJson() string { + if x != nil { + return x.ReaderPositionJson + } + return "" +} + +var File_trogoneventstore_protocols_v1_projections_proto protoreflect.FileDescriptor + +const file_trogoneventstore_protocols_v1_projections_proto_rawDesc = "" + + "\n" + + "/trogoneventstore/protocols/v1/projections.proto\x12\x1eevent_store.client.projections\x1a\x1cgoogle/protobuf/struct.proto\x1a*trogoneventstore/protocols/v1/shared.proto\"\xfb\a\n" + + "\tCreateReq\x12K\n" + + "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.CreateReq.OptionsR\aoptions\x1a\xa0\a\n" + + "\aOptions\x126\n" + + "\bone_time\x18\x01 \x01(\v2\x19.event_store.client.EmptyH\x00R\aoneTime\x12[\n" + + "\ttransient\x18\x02 \x01(\v2;.event_store.client.projections.CreateReq.Options.TransientH\x00R\ttransient\x12^\n" + + "\n" + + "continuous\x18\x03 \x01(\v2<.event_store.client.projections.CreateReq.Options.ContinuousH\x00R\n" + + "continuous\x12\x14\n" + + "\x05query\x18\x04 \x01(\tR\x05query\x12!\n" + + "\fhandler_type\x18\x05 \x01(\tR\vhandlerType\x12\x1a\n" + + "\aenabled\x18\x06 \x01(\bH\x01R\aenabled\x12G\n" + + "\x11no_enabled_option\x18\a \x01(\v2\x19.event_store.client.EmptyH\x01R\x0fnoEnabledOption\x12\x17\n" + + "\x04name\x18\b \x01(\tH\x02R\x04name\x88\x01\x01\x12/\n" + + "\x13checkpoints_enabled\x18\t \x01(\bR\x12checkpointsEnabled\x12!\n" + + "\femit_enabled\x18\n" + + " \x01(\bR\vemitEnabled\x122\n" + + "\x15track_emitted_streams\x18\v \x01(\bR\x13trackEmittedStreams\x12d\n" + + "\vannotations\x18\f \x03(\v2B.event_store.client.projections.CreateReq.Options.AnnotationsEntryR\vannotations\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\x1f\n" + + "\tTransient\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x1aw\n" + + "\n" + + "Continuous\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12!\n" + + "\femit_enabled\x18\x02 \x01(\bR\vemitEnabled\x122\n" + + "\x15track_emitted_streams\x18\x03 \x01(\bR\x13trackEmittedStreamsB\x06\n" + + "\x04modeB\x10\n" + + "\x0eenabled_optionB\a\n" + + "\x05_name\"\f\n" + + "\n" + + "CreateResp\"\xad\x03\n" + + "\tUpdateReq\x12K\n" + + "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.UpdateReq.OptionsR\aoptions\x1a\xd2\x02\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05query\x18\x02 \x01(\tR\x05query\x12#\n" + + "\femit_enabled\x18\x03 \x01(\bH\x00R\vemitEnabled\x12C\n" + + "\x0fno_emit_options\x18\x04 \x01(\v2\x19.event_store.client.EmptyH\x00R\rnoEmitOptions\x12d\n" + + "\vannotations\x18\x05 \x03(\v2B.event_store.client.projections.UpdateReq.Options.AnnotationsEntryR\vannotations\x1a>\n" + + "\x10AnnotationsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\r\n" + + "\vemit_option\"\f\n" + + "\n" + + "UpdateResp\"{\n" + + "\vGetQueryReq\x12M\n" + + "\aoptions\x18\x01 \x01(\v23.event_store.client.projections.GetQueryReq.OptionsR\aoptions\x1a\x1d\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\xd8\x03\n" + + "\fGetQueryResp\x12N\n" + + "\adetails\x18\x01 \x01(\v24.event_store.client.projections.GetQueryResp.DetailsR\adetails\x1a\xf7\x02\n" + + "\aDetails\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" + + "\x05query\x18\x02 \x01(\tR\x05query\x12!\n" + + "\femit_enabled\x18\x03 \x01(\bR\vemitEnabled\x12'\n" + + "\x0fprojection_type\x18\x04 \x01(\tR\x0eprojectionType\x127\n" + + "\x15track_emitted_streams\x18\x05 \x01(\bH\x00R\x13trackEmittedStreams\x88\x01\x01\x124\n" + + "\x13checkpoints_enabled\x18\x06 \x01(\bH\x01R\x12checkpointsEnabled\x88\x01\x01\x12'\n" + + "\x0fdefinition_json\x18\a \x01(\tR\x0edefinitionJson\x12,\n" + + "\x12output_config_json\x18\b \x01(\tR\x10outputConfigJsonB\x18\n" + + "\x16_track_emitted_streamsB\x16\n" + + "\x14_checkpoints_enabled\"\x98\x02\n" + + "\tDeleteReq\x12K\n" + + "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.DeleteReq.OptionsR\aoptions\x1a\xbd\x01\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x124\n" + + "\x16delete_emitted_streams\x18\x02 \x01(\bR\x14deleteEmittedStreams\x12.\n" + + "\x13delete_state_stream\x18\x03 \x01(\bR\x11deleteStateStream\x128\n" + + "\x18delete_checkpoint_stream\x18\x04 \x01(\bR\x16deleteCheckpointStream\"\f\n" + + "\n" + + "DeleteResp\"\xb2\x03\n" + + "\rStatisticsReq\x12O\n" + + "\aoptions\x18\x01 \x01(\v25.event_store.client.projections.StatisticsReq.OptionsR\aoptions\x1a\xcf\x02\n" + + "\aOptions\x12\x14\n" + + "\x04name\x18\x01 \x01(\tH\x00R\x04name\x12-\n" + + "\x03all\x18\x02 \x01(\v2\x19.event_store.client.EmptyH\x00R\x03all\x129\n" + + "\ttransient\x18\x03 \x01(\v2\x19.event_store.client.EmptyH\x00R\ttransient\x12;\n" + + "\n" + + "continuous\x18\x04 \x01(\v2\x19.event_store.client.EmptyH\x00R\n" + + "continuous\x126\n" + + "\bone_time\x18\x05 \x01(\v2\x19.event_store.client.EmptyH\x00R\aoneTime\x12G\n" + + "\x11all_non_transient\x18\x06 \x01(\v2\x19.event_store.client.EmptyH\x00R\x0fallNonTransientB\x06\n" + + "\x04mode\"\xec\x06\n" + + "\x0eStatisticsResp\x12P\n" + + "\adetails\x18\x01 \x01(\v26.event_store.client.projections.StatisticsResp.DetailsR\adetails\x1a\x87\x06\n" + + "\aDetails\x12.\n" + + "\x12coreProcessingTime\x18\x01 \x01(\x03R\x12coreProcessingTime\x12\x18\n" + + "\aversion\x18\x02 \x01(\x03R\aversion\x12\x14\n" + + "\x05epoch\x18\x03 \x01(\x03R\x05epoch\x12$\n" + + "\reffectiveName\x18\x04 \x01(\tR\reffectiveName\x12*\n" + + "\x10writesInProgress\x18\x05 \x01(\x05R\x10writesInProgress\x12(\n" + + "\x0freadsInProgress\x18\x06 \x01(\x05R\x0freadsInProgress\x12*\n" + + "\x10partitionsCached\x18\a \x01(\x05R\x10partitionsCached\x12\x16\n" + + "\x06status\x18\b \x01(\tR\x06status\x12 \n" + + "\vstateReason\x18\t \x01(\tR\vstateReason\x12\x12\n" + + "\x04name\x18\n" + + " \x01(\tR\x04name\x12\x12\n" + + "\x04mode\x18\v \x01(\tR\x04mode\x12\x1a\n" + + "\bposition\x18\f \x01(\tR\bposition\x12\x1a\n" + + "\bprogress\x18\r \x01(\x02R\bprogress\x12&\n" + + "\x0elastCheckpoint\x18\x0e \x01(\tR\x0elastCheckpoint\x12@\n" + + "\x1beventsProcessedAfterRestart\x18\x0f \x01(\x03R\x1beventsProcessedAfterRestart\x12*\n" + + "\x10checkpointStatus\x18\x10 \x01(\tR\x10checkpointStatus\x12&\n" + + "\x0ebufferedEvents\x18\x11 \x01(\x03R\x0ebufferedEvents\x12N\n" + + "\"writePendingEventsBeforeCheckpoint\x18\x12 \x01(\x05R\"writePendingEventsBeforeCheckpoint\x12L\n" + + "!writePendingEventsAfterCheckpoint\x18\x13 \x01(\x05R!writePendingEventsAfterCheckpoint\"\x93\x01\n" + + "\bStateReq\x12J\n" + + "\aoptions\x18\x01 \x01(\v20.event_store.client.projections.StateReq.OptionsR\aoptions\x1a;\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tpartition\x18\x02 \x01(\tR\tpartition\"9\n" + + "\tStateResp\x12,\n" + + "\x05state\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x05state\"\x95\x01\n" + + "\tResultReq\x12K\n" + + "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.ResultReq.OptionsR\aoptions\x1a;\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" + + "\tpartition\x18\x02 \x01(\tR\tpartition\"<\n" + + "\n" + + "ResultResp\x12.\n" + + "\x06result\x18\x01 \x01(\v2\x16.google.protobuf.ValueR\x06result\"}\n" + + "\fGetConfigReq\x12N\n" + + "\aoptions\x18\x01 \x01(\v24.event_store.client.projections.GetConfigReq.OptionsR\aoptions\x1a\x1d\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\x9d\x05\n" + + "\rGetConfigResp\x12O\n" + + "\adetails\x18\x01 \x01(\v25.event_store.client.projections.GetConfigResp.DetailsR\adetails\x1a\xba\x04\n" + + "\aDetails\x12!\n" + + "\femit_enabled\x18\x01 \x01(\bR\vemitEnabled\x122\n" + + "\x15track_emitted_streams\x18\x02 \x01(\bR\x13trackEmittedStreams\x12.\n" + + "\x13checkpoint_after_ms\x18\x03 \x01(\x05R\x11checkpointAfterMs\x12@\n" + + "\x1ccheckpoint_handled_threshold\x18\x04 \x01(\x05R\x1acheckpointHandledThreshold\x12O\n" + + "$checkpoint_unhandled_bytes_threshold\x18\x05 \x01(\x05R!checkpointUnhandledBytesThreshold\x128\n" + + "\x18pending_events_threshold\x18\x06 \x01(\x05R\x16pendingEventsThreshold\x123\n" + + "\x16max_write_batch_length\x18\a \x01(\x05R\x13maxWriteBatchLength\x12>\n" + + "\x1cmax_allowed_writes_in_flight\x18\b \x01(\x05R\x18maxAllowedWritesInFlight\x12E\n" + + "\x1cprojection_execution_timeout\x18\t \x01(\x05H\x00R\x1aprojectionExecutionTimeout\x88\x01\x01B\x1f\n" + + "\x1d_projection_execution_timeout\"\xb5\x05\n" + + "\x0fUpdateConfigReq\x12Q\n" + + "\aoptions\x18\x01 \x01(\v27.event_store.client.projections.UpdateConfigReq.OptionsR\aoptions\x1a\xce\x04\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12!\n" + + "\femit_enabled\x18\x02 \x01(\bR\vemitEnabled\x122\n" + + "\x15track_emitted_streams\x18\x03 \x01(\bR\x13trackEmittedStreams\x12.\n" + + "\x13checkpoint_after_ms\x18\x04 \x01(\x05R\x11checkpointAfterMs\x12@\n" + + "\x1ccheckpoint_handled_threshold\x18\x05 \x01(\x05R\x1acheckpointHandledThreshold\x12O\n" + + "$checkpoint_unhandled_bytes_threshold\x18\x06 \x01(\x05R!checkpointUnhandledBytesThreshold\x128\n" + + "\x18pending_events_threshold\x18\a \x01(\x05R\x16pendingEventsThreshold\x123\n" + + "\x16max_write_batch_length\x18\b \x01(\x05R\x13maxWriteBatchLength\x12>\n" + + "\x1cmax_allowed_writes_in_flight\x18\t \x01(\x05R\x18maxAllowedWritesInFlight\x12E\n" + + "\x1cprojection_execution_timeout\x18\n" + + " \x01(\x05H\x00R\x1aprojectionExecutionTimeout\x88\x01\x01B\x1f\n" + + "\x1d_projection_execution_timeout\"\x12\n" + + "\x10UpdateConfigResp\"\xa0\x01\n" + + "\bResetReq\x12J\n" + + "\aoptions\x18\x01 \x01(\v20.event_store.client.projections.ResetReq.OptionsR\aoptions\x1aH\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12)\n" + + "\x10write_checkpoint\x18\x02 \x01(\bR\x0fwriteCheckpoint\"\v\n" + + "\tResetResp\"u\n" + + "\bAbortReq\x12J\n" + + "\aoptions\x18\x01 \x01(\v20.event_store.client.projections.AbortReq.OptionsR\aoptions\x1a\x1d\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\v\n" + + "\tAbortResp\"w\n" + + "\tEnableReq\x12K\n" + + "\aoptions\x18\x01 \x01(\v21.event_store.client.projections.EnableReq.OptionsR\aoptions\x1a\x1d\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"\f\n" + + "\n" + + "EnableResp\"\xa4\x01\n" + + "\n" + + "DisableReq\x12L\n" + + "\aoptions\x18\x01 \x01(\v22.event_store.client.projections.DisableReq.OptionsR\aoptions\x1aH\n" + + "\aOptions\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12)\n" + + "\x10write_checkpoint\x18\x02 \x01(\bR\x0fwriteCheckpoint\"\r\n" + + "\vDisableResp\"\xdd\x01\n" + + "\rReadEventsReq\x12O\n" + + "\aoptions\x18\x01 \x01(\v25.event_store.client.projections.ReadEventsReq.OptionsR\aoptions\x1a{\n" + + "\aOptions\x12,\n" + + "\x12query_sources_json\x18\x01 \x01(\tR\x10querySourcesJson\x12#\n" + + "\rposition_json\x18\x02 \x01(\tR\fpositionJson\x12\x1d\n" + + "\n" + + "max_events\x18\x03 \x01(\x05R\tmaxEvents\"\xf9\x04\n" + + "\x0eReadEventsResp\x12P\n" + + "\adetails\x18\x01 \x01(\v26.event_store.client.projections.ReadEventsResp.DetailsR\adetails\x1a\x94\x04\n" + + "\aDetails\x12%\n" + + "\x0ecorrelation_id\x18\x01 \x01(\tR\rcorrelationId\x120\n" + + "\x14reader_position_json\x18\x02 \x01(\tR\x12readerPositionJson\x12T\n" + + "\x06events\x18\x03 \x03(\v2<.event_store.client.projections.ReadEventsResp.Details.EventR\x06events\x1a\xd9\x02\n" + + "\x05Event\x12&\n" + + "\x0fevent_stream_id\x18\x01 \x01(\tR\reventStreamId\x12!\n" + + "\fevent_number\x18\x02 \x01(\x03R\veventNumber\x12\x1d\n" + + "\n" + + "event_type\x18\x03 \x01(\tR\teventType\x12*\n" + + "\x04data\x18\x04 \x01(\v2\x16.google.protobuf.ValueR\x04data\x122\n" + + "\bmetadata\x18\x05 \x01(\v2\x16.google.protobuf.ValueR\bmetadata\x12;\n" + + "\rlink_metadata\x18\x06 \x01(\v2\x16.google.protobuf.ValueR\flinkMetadata\x12\x17\n" + + "\ais_json\x18\a \x01(\bR\x06isJson\x120\n" + + "\x14reader_position_json\x18\b \x01(\tR\x12readerPositionJson2\xda\v\n" + + "\vProjections\x12_\n" + + "\x06Create\x12).event_store.client.projections.CreateReq\x1a*.event_store.client.projections.CreateResp\x12_\n" + + "\x06Update\x12).event_store.client.projections.UpdateReq\x1a*.event_store.client.projections.UpdateResp\x12e\n" + + "\bGetQuery\x12+.event_store.client.projections.GetQueryReq\x1a,.event_store.client.projections.GetQueryResp\x12_\n" + + "\x06Delete\x12).event_store.client.projections.DeleteReq\x1a*.event_store.client.projections.DeleteResp\x12m\n" + + "\n" + + "Statistics\x12-.event_store.client.projections.StatisticsReq\x1a..event_store.client.projections.StatisticsResp0\x01\x12b\n" + + "\aDisable\x12*.event_store.client.projections.DisableReq\x1a+.event_store.client.projections.DisableResp\x12_\n" + + "\x06Enable\x12).event_store.client.projections.EnableReq\x1a*.event_store.client.projections.EnableResp\x12\\\n" + + "\x05Reset\x12(.event_store.client.projections.ResetReq\x1a).event_store.client.projections.ResetResp\x12\\\n" + + "\x05Abort\x12(.event_store.client.projections.AbortReq\x1a).event_store.client.projections.AbortResp\x12\\\n" + + "\x05State\x12(.event_store.client.projections.StateReq\x1a).event_store.client.projections.StateResp\x12_\n" + + "\x06Result\x12).event_store.client.projections.ResultReq\x1a*.event_store.client.projections.ResultResp\x12h\n" + + "\tGetConfig\x12,.event_store.client.projections.GetConfigReq\x1a-.event_store.client.projections.GetConfigResp\x12q\n" + + "\fUpdateConfig\x12/.event_store.client.projections.UpdateConfigReq\x1a0.event_store.client.projections.UpdateConfigResp\x12k\n" + + "\n" + + "ReadEvents\x12-.event_store.client.projections.ReadEventsReq\x1a..event_store.client.projections.ReadEventsResp\x12H\n" + + "\x10RestartSubsystem\x12\x19.event_store.client.Empty\x1a\x19.event_store.client.EmptyB\x8f\x01\n" + + ")com.eventstore.dbclient.proto.projectionsZbgithub.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/projectionsb\x06proto3" + +var ( + file_trogoneventstore_protocols_v1_projections_proto_rawDescOnce sync.Once + file_trogoneventstore_protocols_v1_projections_proto_rawDescData []byte +) + +func file_trogoneventstore_protocols_v1_projections_proto_rawDescGZIP() []byte { + file_trogoneventstore_protocols_v1_projections_proto_rawDescOnce.Do(func() { + file_trogoneventstore_protocols_v1_projections_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_projections_proto_rawDesc), len(file_trogoneventstore_protocols_v1_projections_proto_rawDesc))) + }) + return file_trogoneventstore_protocols_v1_projections_proto_rawDescData +} + +var file_trogoneventstore_protocols_v1_projections_proto_msgTypes = make([]protoimpl.MessageInfo, 51) +var file_trogoneventstore_protocols_v1_projections_proto_goTypes = []any{ + (*CreateReq)(nil), // 0: event_store.client.projections.CreateReq + (*CreateResp)(nil), // 1: event_store.client.projections.CreateResp + (*UpdateReq)(nil), // 2: event_store.client.projections.UpdateReq + (*UpdateResp)(nil), // 3: event_store.client.projections.UpdateResp + (*GetQueryReq)(nil), // 4: event_store.client.projections.GetQueryReq + (*GetQueryResp)(nil), // 5: event_store.client.projections.GetQueryResp + (*DeleteReq)(nil), // 6: event_store.client.projections.DeleteReq + (*DeleteResp)(nil), // 7: event_store.client.projections.DeleteResp + (*StatisticsReq)(nil), // 8: event_store.client.projections.StatisticsReq + (*StatisticsResp)(nil), // 9: event_store.client.projections.StatisticsResp + (*StateReq)(nil), // 10: event_store.client.projections.StateReq + (*StateResp)(nil), // 11: event_store.client.projections.StateResp + (*ResultReq)(nil), // 12: event_store.client.projections.ResultReq + (*ResultResp)(nil), // 13: event_store.client.projections.ResultResp + (*GetConfigReq)(nil), // 14: event_store.client.projections.GetConfigReq + (*GetConfigResp)(nil), // 15: event_store.client.projections.GetConfigResp + (*UpdateConfigReq)(nil), // 16: event_store.client.projections.UpdateConfigReq + (*UpdateConfigResp)(nil), // 17: event_store.client.projections.UpdateConfigResp + (*ResetReq)(nil), // 18: event_store.client.projections.ResetReq + (*ResetResp)(nil), // 19: event_store.client.projections.ResetResp + (*AbortReq)(nil), // 20: event_store.client.projections.AbortReq + (*AbortResp)(nil), // 21: event_store.client.projections.AbortResp + (*EnableReq)(nil), // 22: event_store.client.projections.EnableReq + (*EnableResp)(nil), // 23: event_store.client.projections.EnableResp + (*DisableReq)(nil), // 24: event_store.client.projections.DisableReq + (*DisableResp)(nil), // 25: event_store.client.projections.DisableResp + (*ReadEventsReq)(nil), // 26: event_store.client.projections.ReadEventsReq + (*ReadEventsResp)(nil), // 27: event_store.client.projections.ReadEventsResp + (*CreateReq_Options)(nil), // 28: event_store.client.projections.CreateReq.Options + nil, // 29: event_store.client.projections.CreateReq.Options.AnnotationsEntry + (*CreateReq_Options_Transient)(nil), // 30: event_store.client.projections.CreateReq.Options.Transient + (*CreateReq_Options_Continuous)(nil), // 31: event_store.client.projections.CreateReq.Options.Continuous + (*UpdateReq_Options)(nil), // 32: event_store.client.projections.UpdateReq.Options + nil, // 33: event_store.client.projections.UpdateReq.Options.AnnotationsEntry + (*GetQueryReq_Options)(nil), // 34: event_store.client.projections.GetQueryReq.Options + (*GetQueryResp_Details)(nil), // 35: event_store.client.projections.GetQueryResp.Details + (*DeleteReq_Options)(nil), // 36: event_store.client.projections.DeleteReq.Options + (*StatisticsReq_Options)(nil), // 37: event_store.client.projections.StatisticsReq.Options + (*StatisticsResp_Details)(nil), // 38: event_store.client.projections.StatisticsResp.Details + (*StateReq_Options)(nil), // 39: event_store.client.projections.StateReq.Options + (*ResultReq_Options)(nil), // 40: event_store.client.projections.ResultReq.Options + (*GetConfigReq_Options)(nil), // 41: event_store.client.projections.GetConfigReq.Options + (*GetConfigResp_Details)(nil), // 42: event_store.client.projections.GetConfigResp.Details + (*UpdateConfigReq_Options)(nil), // 43: event_store.client.projections.UpdateConfigReq.Options + (*ResetReq_Options)(nil), // 44: event_store.client.projections.ResetReq.Options + (*AbortReq_Options)(nil), // 45: event_store.client.projections.AbortReq.Options + (*EnableReq_Options)(nil), // 46: event_store.client.projections.EnableReq.Options + (*DisableReq_Options)(nil), // 47: event_store.client.projections.DisableReq.Options + (*ReadEventsReq_Options)(nil), // 48: event_store.client.projections.ReadEventsReq.Options + (*ReadEventsResp_Details)(nil), // 49: event_store.client.projections.ReadEventsResp.Details + (*ReadEventsResp_Details_Event)(nil), // 50: event_store.client.projections.ReadEventsResp.Details.Event + (*structpb.Value)(nil), // 51: google.protobuf.Value + (*shared.Empty)(nil), // 52: event_store.client.Empty +} +var file_trogoneventstore_protocols_v1_projections_proto_depIdxs = []int32{ + 28, // 0: event_store.client.projections.CreateReq.options:type_name -> event_store.client.projections.CreateReq.Options + 32, // 1: event_store.client.projections.UpdateReq.options:type_name -> event_store.client.projections.UpdateReq.Options + 34, // 2: event_store.client.projections.GetQueryReq.options:type_name -> event_store.client.projections.GetQueryReq.Options + 35, // 3: event_store.client.projections.GetQueryResp.details:type_name -> event_store.client.projections.GetQueryResp.Details + 36, // 4: event_store.client.projections.DeleteReq.options:type_name -> event_store.client.projections.DeleteReq.Options + 37, // 5: event_store.client.projections.StatisticsReq.options:type_name -> event_store.client.projections.StatisticsReq.Options + 38, // 6: event_store.client.projections.StatisticsResp.details:type_name -> event_store.client.projections.StatisticsResp.Details + 39, // 7: event_store.client.projections.StateReq.options:type_name -> event_store.client.projections.StateReq.Options + 51, // 8: event_store.client.projections.StateResp.state:type_name -> google.protobuf.Value + 40, // 9: event_store.client.projections.ResultReq.options:type_name -> event_store.client.projections.ResultReq.Options + 51, // 10: event_store.client.projections.ResultResp.result:type_name -> google.protobuf.Value + 41, // 11: event_store.client.projections.GetConfigReq.options:type_name -> event_store.client.projections.GetConfigReq.Options + 42, // 12: event_store.client.projections.GetConfigResp.details:type_name -> event_store.client.projections.GetConfigResp.Details + 43, // 13: event_store.client.projections.UpdateConfigReq.options:type_name -> event_store.client.projections.UpdateConfigReq.Options + 44, // 14: event_store.client.projections.ResetReq.options:type_name -> event_store.client.projections.ResetReq.Options + 45, // 15: event_store.client.projections.AbortReq.options:type_name -> event_store.client.projections.AbortReq.Options + 46, // 16: event_store.client.projections.EnableReq.options:type_name -> event_store.client.projections.EnableReq.Options + 47, // 17: event_store.client.projections.DisableReq.options:type_name -> event_store.client.projections.DisableReq.Options + 48, // 18: event_store.client.projections.ReadEventsReq.options:type_name -> event_store.client.projections.ReadEventsReq.Options + 49, // 19: event_store.client.projections.ReadEventsResp.details:type_name -> event_store.client.projections.ReadEventsResp.Details + 52, // 20: event_store.client.projections.CreateReq.Options.one_time:type_name -> event_store.client.Empty + 30, // 21: event_store.client.projections.CreateReq.Options.transient:type_name -> event_store.client.projections.CreateReq.Options.Transient + 31, // 22: event_store.client.projections.CreateReq.Options.continuous:type_name -> event_store.client.projections.CreateReq.Options.Continuous + 52, // 23: event_store.client.projections.CreateReq.Options.no_enabled_option:type_name -> event_store.client.Empty + 29, // 24: event_store.client.projections.CreateReq.Options.annotations:type_name -> event_store.client.projections.CreateReq.Options.AnnotationsEntry + 52, // 25: event_store.client.projections.UpdateReq.Options.no_emit_options:type_name -> event_store.client.Empty + 33, // 26: event_store.client.projections.UpdateReq.Options.annotations:type_name -> event_store.client.projections.UpdateReq.Options.AnnotationsEntry + 52, // 27: event_store.client.projections.StatisticsReq.Options.all:type_name -> event_store.client.Empty + 52, // 28: event_store.client.projections.StatisticsReq.Options.transient:type_name -> event_store.client.Empty + 52, // 29: event_store.client.projections.StatisticsReq.Options.continuous:type_name -> event_store.client.Empty + 52, // 30: event_store.client.projections.StatisticsReq.Options.one_time:type_name -> event_store.client.Empty + 52, // 31: event_store.client.projections.StatisticsReq.Options.all_non_transient:type_name -> event_store.client.Empty + 50, // 32: event_store.client.projections.ReadEventsResp.Details.events:type_name -> event_store.client.projections.ReadEventsResp.Details.Event + 51, // 33: event_store.client.projections.ReadEventsResp.Details.Event.data:type_name -> google.protobuf.Value + 51, // 34: event_store.client.projections.ReadEventsResp.Details.Event.metadata:type_name -> google.protobuf.Value + 51, // 35: event_store.client.projections.ReadEventsResp.Details.Event.link_metadata:type_name -> google.protobuf.Value + 0, // 36: event_store.client.projections.Projections.Create:input_type -> event_store.client.projections.CreateReq + 2, // 37: event_store.client.projections.Projections.Update:input_type -> event_store.client.projections.UpdateReq + 4, // 38: event_store.client.projections.Projections.GetQuery:input_type -> event_store.client.projections.GetQueryReq + 6, // 39: event_store.client.projections.Projections.Delete:input_type -> event_store.client.projections.DeleteReq + 8, // 40: event_store.client.projections.Projections.Statistics:input_type -> event_store.client.projections.StatisticsReq + 24, // 41: event_store.client.projections.Projections.Disable:input_type -> event_store.client.projections.DisableReq + 22, // 42: event_store.client.projections.Projections.Enable:input_type -> event_store.client.projections.EnableReq + 18, // 43: event_store.client.projections.Projections.Reset:input_type -> event_store.client.projections.ResetReq + 20, // 44: event_store.client.projections.Projections.Abort:input_type -> event_store.client.projections.AbortReq + 10, // 45: event_store.client.projections.Projections.State:input_type -> event_store.client.projections.StateReq + 12, // 46: event_store.client.projections.Projections.Result:input_type -> event_store.client.projections.ResultReq + 14, // 47: event_store.client.projections.Projections.GetConfig:input_type -> event_store.client.projections.GetConfigReq + 16, // 48: event_store.client.projections.Projections.UpdateConfig:input_type -> event_store.client.projections.UpdateConfigReq + 26, // 49: event_store.client.projections.Projections.ReadEvents:input_type -> event_store.client.projections.ReadEventsReq + 52, // 50: event_store.client.projections.Projections.RestartSubsystem:input_type -> event_store.client.Empty + 1, // 51: event_store.client.projections.Projections.Create:output_type -> event_store.client.projections.CreateResp + 3, // 52: event_store.client.projections.Projections.Update:output_type -> event_store.client.projections.UpdateResp + 5, // 53: event_store.client.projections.Projections.GetQuery:output_type -> event_store.client.projections.GetQueryResp + 7, // 54: event_store.client.projections.Projections.Delete:output_type -> event_store.client.projections.DeleteResp + 9, // 55: event_store.client.projections.Projections.Statistics:output_type -> event_store.client.projections.StatisticsResp + 25, // 56: event_store.client.projections.Projections.Disable:output_type -> event_store.client.projections.DisableResp + 23, // 57: event_store.client.projections.Projections.Enable:output_type -> event_store.client.projections.EnableResp + 19, // 58: event_store.client.projections.Projections.Reset:output_type -> event_store.client.projections.ResetResp + 21, // 59: event_store.client.projections.Projections.Abort:output_type -> event_store.client.projections.AbortResp + 11, // 60: event_store.client.projections.Projections.State:output_type -> event_store.client.projections.StateResp + 13, // 61: event_store.client.projections.Projections.Result:output_type -> event_store.client.projections.ResultResp + 15, // 62: event_store.client.projections.Projections.GetConfig:output_type -> event_store.client.projections.GetConfigResp + 17, // 63: event_store.client.projections.Projections.UpdateConfig:output_type -> event_store.client.projections.UpdateConfigResp + 27, // 64: event_store.client.projections.Projections.ReadEvents:output_type -> event_store.client.projections.ReadEventsResp + 52, // 65: event_store.client.projections.Projections.RestartSubsystem:output_type -> event_store.client.Empty + 51, // [51:66] is the sub-list for method output_type + 36, // [36:51] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name +} + +func init() { file_trogoneventstore_protocols_v1_projections_proto_init() } +func file_trogoneventstore_protocols_v1_projections_proto_init() { + if File_trogoneventstore_protocols_v1_projections_proto != nil { + return + } + file_trogoneventstore_protocols_v1_projections_proto_msgTypes[28].OneofWrappers = []any{ + (*CreateReq_Options_OneTime)(nil), + (*CreateReq_Options_Transient_)(nil), + (*CreateReq_Options_Continuous_)(nil), + (*CreateReq_Options_Enabled)(nil), + (*CreateReq_Options_NoEnabledOption)(nil), + } + file_trogoneventstore_protocols_v1_projections_proto_msgTypes[32].OneofWrappers = []any{ + (*UpdateReq_Options_EmitEnabled)(nil), + (*UpdateReq_Options_NoEmitOptions)(nil), + } + file_trogoneventstore_protocols_v1_projections_proto_msgTypes[35].OneofWrappers = []any{} + file_trogoneventstore_protocols_v1_projections_proto_msgTypes[37].OneofWrappers = []any{ + (*StatisticsReq_Options_Name)(nil), + (*StatisticsReq_Options_All)(nil), + (*StatisticsReq_Options_Transient)(nil), + (*StatisticsReq_Options_Continuous)(nil), + (*StatisticsReq_Options_OneTime)(nil), + (*StatisticsReq_Options_AllNonTransient)(nil), + } + file_trogoneventstore_protocols_v1_projections_proto_msgTypes[42].OneofWrappers = []any{} + file_trogoneventstore_protocols_v1_projections_proto_msgTypes[43].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_projections_proto_rawDesc), len(file_trogoneventstore_protocols_v1_projections_proto_rawDesc)), + NumEnums: 0, + NumMessages: 51, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_trogoneventstore_protocols_v1_projections_proto_goTypes, + DependencyIndexes: file_trogoneventstore_protocols_v1_projections_proto_depIdxs, + MessageInfos: file_trogoneventstore_protocols_v1_projections_proto_msgTypes, + }.Build() + File_trogoneventstore_protocols_v1_projections_proto = out.File + file_trogoneventstore_protocols_v1_projections_proto_goTypes = nil + file_trogoneventstore_protocols_v1_projections_proto_depIdxs = nil +} diff --git a/protos/kurrentdb/protocols/v1/projections/projections_grpc.pb.go b/protos/trogoneventstore/protocols/v1/projections/projections_grpc.pb.go similarity index 69% rename from protos/kurrentdb/protocols/v1/projections/projections_grpc.pb.go rename to protos/trogoneventstore/protocols/v1/projections/projections_grpc.pb.go index c425a4b..e6dbfac 100644 --- a/protos/kurrentdb/protocols/v1/projections/projections_grpc.pb.go +++ b/protos/trogoneventstore/protocols/v1/projections/projections_grpc.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.26.0 -// source: kurrentdb/protocols/v1/projections.proto +// - protoc v7.36.0 +// source: trogoneventstore/protocols/v1/projections.proto package projections import ( context "context" - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -22,13 +22,18 @@ const _ = grpc.SupportPackageIsVersion9 const ( Projections_Create_FullMethodName = "/event_store.client.projections.Projections/Create" Projections_Update_FullMethodName = "/event_store.client.projections.Projections/Update" + Projections_GetQuery_FullMethodName = "/event_store.client.projections.Projections/GetQuery" Projections_Delete_FullMethodName = "/event_store.client.projections.Projections/Delete" Projections_Statistics_FullMethodName = "/event_store.client.projections.Projections/Statistics" Projections_Disable_FullMethodName = "/event_store.client.projections.Projections/Disable" Projections_Enable_FullMethodName = "/event_store.client.projections.Projections/Enable" Projections_Reset_FullMethodName = "/event_store.client.projections.Projections/Reset" + Projections_Abort_FullMethodName = "/event_store.client.projections.Projections/Abort" Projections_State_FullMethodName = "/event_store.client.projections.Projections/State" Projections_Result_FullMethodName = "/event_store.client.projections.Projections/Result" + Projections_GetConfig_FullMethodName = "/event_store.client.projections.Projections/GetConfig" + Projections_UpdateConfig_FullMethodName = "/event_store.client.projections.Projections/UpdateConfig" + Projections_ReadEvents_FullMethodName = "/event_store.client.projections.Projections/ReadEvents" Projections_RestartSubsystem_FullMethodName = "/event_store.client.projections.Projections/RestartSubsystem" ) @@ -38,13 +43,18 @@ const ( type ProjectionsClient interface { Create(ctx context.Context, in *CreateReq, opts ...grpc.CallOption) (*CreateResp, error) Update(ctx context.Context, in *UpdateReq, opts ...grpc.CallOption) (*UpdateResp, error) + GetQuery(ctx context.Context, in *GetQueryReq, opts ...grpc.CallOption) (*GetQueryResp, error) Delete(ctx context.Context, in *DeleteReq, opts ...grpc.CallOption) (*DeleteResp, error) Statistics(ctx context.Context, in *StatisticsReq, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StatisticsResp], error) Disable(ctx context.Context, in *DisableReq, opts ...grpc.CallOption) (*DisableResp, error) Enable(ctx context.Context, in *EnableReq, opts ...grpc.CallOption) (*EnableResp, error) Reset(ctx context.Context, in *ResetReq, opts ...grpc.CallOption) (*ResetResp, error) + Abort(ctx context.Context, in *AbortReq, opts ...grpc.CallOption) (*AbortResp, error) State(ctx context.Context, in *StateReq, opts ...grpc.CallOption) (*StateResp, error) Result(ctx context.Context, in *ResultReq, opts ...grpc.CallOption) (*ResultResp, error) + GetConfig(ctx context.Context, in *GetConfigReq, opts ...grpc.CallOption) (*GetConfigResp, error) + UpdateConfig(ctx context.Context, in *UpdateConfigReq, opts ...grpc.CallOption) (*UpdateConfigResp, error) + ReadEvents(ctx context.Context, in *ReadEventsReq, opts ...grpc.CallOption) (*ReadEventsResp, error) RestartSubsystem(ctx context.Context, in *shared.Empty, opts ...grpc.CallOption) (*shared.Empty, error) } @@ -76,6 +86,16 @@ func (c *projectionsClient) Update(ctx context.Context, in *UpdateReq, opts ...g return out, nil } +func (c *projectionsClient) GetQuery(ctx context.Context, in *GetQueryReq, opts ...grpc.CallOption) (*GetQueryResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetQueryResp) + err := c.cc.Invoke(ctx, Projections_GetQuery_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *projectionsClient) Delete(ctx context.Context, in *DeleteReq, opts ...grpc.CallOption) (*DeleteResp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DeleteResp) @@ -135,6 +155,16 @@ func (c *projectionsClient) Reset(ctx context.Context, in *ResetReq, opts ...grp return out, nil } +func (c *projectionsClient) Abort(ctx context.Context, in *AbortReq, opts ...grpc.CallOption) (*AbortResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(AbortResp) + err := c.cc.Invoke(ctx, Projections_Abort_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *projectionsClient) State(ctx context.Context, in *StateReq, opts ...grpc.CallOption) (*StateResp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StateResp) @@ -155,6 +185,36 @@ func (c *projectionsClient) Result(ctx context.Context, in *ResultReq, opts ...g return out, nil } +func (c *projectionsClient) GetConfig(ctx context.Context, in *GetConfigReq, opts ...grpc.CallOption) (*GetConfigResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetConfigResp) + err := c.cc.Invoke(ctx, Projections_GetConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectionsClient) UpdateConfig(ctx context.Context, in *UpdateConfigReq, opts ...grpc.CallOption) (*UpdateConfigResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateConfigResp) + err := c.cc.Invoke(ctx, Projections_UpdateConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *projectionsClient) ReadEvents(ctx context.Context, in *ReadEventsReq, opts ...grpc.CallOption) (*ReadEventsResp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReadEventsResp) + err := c.cc.Invoke(ctx, Projections_ReadEvents_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *projectionsClient) RestartSubsystem(ctx context.Context, in *shared.Empty, opts ...grpc.CallOption) (*shared.Empty, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(shared.Empty) @@ -171,13 +231,18 @@ func (c *projectionsClient) RestartSubsystem(ctx context.Context, in *shared.Emp type ProjectionsServer interface { Create(context.Context, *CreateReq) (*CreateResp, error) Update(context.Context, *UpdateReq) (*UpdateResp, error) + GetQuery(context.Context, *GetQueryReq) (*GetQueryResp, error) Delete(context.Context, *DeleteReq) (*DeleteResp, error) Statistics(*StatisticsReq, grpc.ServerStreamingServer[StatisticsResp]) error Disable(context.Context, *DisableReq) (*DisableResp, error) Enable(context.Context, *EnableReq) (*EnableResp, error) Reset(context.Context, *ResetReq) (*ResetResp, error) + Abort(context.Context, *AbortReq) (*AbortResp, error) State(context.Context, *StateReq) (*StateResp, error) Result(context.Context, *ResultReq) (*ResultResp, error) + GetConfig(context.Context, *GetConfigReq) (*GetConfigResp, error) + UpdateConfig(context.Context, *UpdateConfigReq) (*UpdateConfigResp, error) + ReadEvents(context.Context, *ReadEventsReq) (*ReadEventsResp, error) RestartSubsystem(context.Context, *shared.Empty) (*shared.Empty, error) mustEmbedUnimplementedProjectionsServer() } @@ -195,6 +260,9 @@ func (UnimplementedProjectionsServer) Create(context.Context, *CreateReq) (*Crea func (UnimplementedProjectionsServer) Update(context.Context, *UpdateReq) (*UpdateResp, error) { return nil, status.Errorf(codes.Unimplemented, "method Update not implemented") } +func (UnimplementedProjectionsServer) GetQuery(context.Context, *GetQueryReq) (*GetQueryResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetQuery not implemented") +} func (UnimplementedProjectionsServer) Delete(context.Context, *DeleteReq) (*DeleteResp, error) { return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented") } @@ -210,12 +278,24 @@ func (UnimplementedProjectionsServer) Enable(context.Context, *EnableReq) (*Enab func (UnimplementedProjectionsServer) Reset(context.Context, *ResetReq) (*ResetResp, error) { return nil, status.Errorf(codes.Unimplemented, "method Reset not implemented") } +func (UnimplementedProjectionsServer) Abort(context.Context, *AbortReq) (*AbortResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Abort not implemented") +} func (UnimplementedProjectionsServer) State(context.Context, *StateReq) (*StateResp, error) { return nil, status.Errorf(codes.Unimplemented, "method State not implemented") } func (UnimplementedProjectionsServer) Result(context.Context, *ResultReq) (*ResultResp, error) { return nil, status.Errorf(codes.Unimplemented, "method Result not implemented") } +func (UnimplementedProjectionsServer) GetConfig(context.Context, *GetConfigReq) (*GetConfigResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") +} +func (UnimplementedProjectionsServer) UpdateConfig(context.Context, *UpdateConfigReq) (*UpdateConfigResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateConfig not implemented") +} +func (UnimplementedProjectionsServer) ReadEvents(context.Context, *ReadEventsReq) (*ReadEventsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReadEvents not implemented") +} func (UnimplementedProjectionsServer) RestartSubsystem(context.Context, *shared.Empty) (*shared.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method RestartSubsystem not implemented") } @@ -276,6 +356,24 @@ func _Projections_Update_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Projections_GetQuery_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQueryReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectionsServer).GetQuery(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Projections_GetQuery_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectionsServer).GetQuery(ctx, req.(*GetQueryReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Projections_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteReq) if err := dec(in); err != nil { @@ -359,6 +457,24 @@ func _Projections_Reset_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _Projections_Abort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AbortReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectionsServer).Abort(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Projections_Abort_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectionsServer).Abort(ctx, req.(*AbortReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Projections_State_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(StateReq) if err := dec(in); err != nil { @@ -395,6 +511,60 @@ func _Projections_Result_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } +func _Projections_GetConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetConfigReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectionsServer).GetConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Projections_GetConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectionsServer).GetConfig(ctx, req.(*GetConfigReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Projections_UpdateConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateConfigReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectionsServer).UpdateConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Projections_UpdateConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectionsServer).UpdateConfig(ctx, req.(*UpdateConfigReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Projections_ReadEvents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReadEventsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProjectionsServer).ReadEvents(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Projections_ReadEvents_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProjectionsServer).ReadEvents(ctx, req.(*ReadEventsReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Projections_RestartSubsystem_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(shared.Empty) if err := dec(in); err != nil { @@ -428,6 +598,10 @@ var Projections_ServiceDesc = grpc.ServiceDesc{ MethodName: "Update", Handler: _Projections_Update_Handler, }, + { + MethodName: "GetQuery", + Handler: _Projections_GetQuery_Handler, + }, { MethodName: "Delete", Handler: _Projections_Delete_Handler, @@ -444,6 +618,10 @@ var Projections_ServiceDesc = grpc.ServiceDesc{ MethodName: "Reset", Handler: _Projections_Reset_Handler, }, + { + MethodName: "Abort", + Handler: _Projections_Abort_Handler, + }, { MethodName: "State", Handler: _Projections_State_Handler, @@ -452,6 +630,18 @@ var Projections_ServiceDesc = grpc.ServiceDesc{ MethodName: "Result", Handler: _Projections_Result_Handler, }, + { + MethodName: "GetConfig", + Handler: _Projections_GetConfig_Handler, + }, + { + MethodName: "UpdateConfig", + Handler: _Projections_UpdateConfig_Handler, + }, + { + MethodName: "ReadEvents", + Handler: _Projections_ReadEvents_Handler, + }, { MethodName: "RestartSubsystem", Handler: _Projections_RestartSubsystem_Handler, @@ -464,5 +654,5 @@ var Projections_ServiceDesc = grpc.ServiceDesc{ ServerStreams: true, }, }, - Metadata: "kurrentdb/protocols/v1/projections.proto", + Metadata: "trogoneventstore/protocols/v1/projections.proto", } diff --git a/protos/trogoneventstore/protocols/v1/serverfeatures.proto b/protos/trogoneventstore/protocols/v1/serverfeatures.proto new file mode 100644 index 0000000..f2d498a --- /dev/null +++ b/protos/trogoneventstore/protocols/v1/serverfeatures.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; +package event_store.client.server_features; + +option go_package = "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/serverfeatures"; +option java_package = "com.eventstore.dbclient.proto.serverfeatures"; +import "trogoneventstore/protocols/v1/shared.proto"; + +service ServerFeatures { + rpc GetSupportedMethods (event_store.client.Empty) returns (SupportedMethods); +} + +message SupportedMethods { + repeated SupportedMethod methods = 1; + string event_store_server_version = 2; +} + +message SupportedMethod { + string method_name = 1; + string service_name = 2; + repeated string features = 3; +} diff --git a/protos/kurrentdb/protocols/v1/serverfeatures/serverfeatures.pb.go b/protos/trogoneventstore/protocols/v1/serverfeatures/serverfeatures.pb.go similarity index 62% rename from protos/kurrentdb/protocols/v1/serverfeatures/serverfeatures.pb.go rename to protos/trogoneventstore/protocols/v1/serverfeatures/serverfeatures.pb.go index c617ef3..5eb6b9b 100644 --- a/protos/kurrentdb/protocols/v1/serverfeatures/serverfeatures.pb.go +++ b/protos/trogoneventstore/protocols/v1/serverfeatures/serverfeatures.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/serverfeatures.proto +// protoc-gen-go v1.36.9 +// protoc v7.36.0 +// source: trogoneventstore/protocols/v1/serverfeatures.proto package serverfeatures import ( - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -32,7 +32,7 @@ type SupportedMethods struct { func (x *SupportedMethods) Reset() { *x = SupportedMethods{} - mi := &file_kurrentdb_protocols_v1_serverfeatures_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_serverfeatures_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -44,7 +44,7 @@ func (x *SupportedMethods) String() string { func (*SupportedMethods) ProtoMessage() {} func (x *SupportedMethods) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_serverfeatures_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_serverfeatures_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57,7 +57,7 @@ func (x *SupportedMethods) ProtoReflect() protoreflect.Message { // Deprecated: Use SupportedMethods.ProtoReflect.Descriptor instead. func (*SupportedMethods) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescGZIP(), []int{0} + return file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescGZIP(), []int{0} } func (x *SupportedMethods) GetMethods() []*SupportedMethod { @@ -85,7 +85,7 @@ type SupportedMethod struct { func (x *SupportedMethod) Reset() { *x = SupportedMethod{} - mi := &file_kurrentdb_protocols_v1_serverfeatures_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_serverfeatures_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -97,7 +97,7 @@ func (x *SupportedMethod) String() string { func (*SupportedMethod) ProtoMessage() {} func (x *SupportedMethod) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_serverfeatures_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_serverfeatures_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -110,7 +110,7 @@ func (x *SupportedMethod) ProtoReflect() protoreflect.Message { // Deprecated: Use SupportedMethod.ProtoReflect.Descriptor instead. func (*SupportedMethod) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescGZIP(), []int{1} + return file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescGZIP(), []int{1} } func (x *SupportedMethod) GetMethodName() string { @@ -134,11 +134,11 @@ func (x *SupportedMethod) GetFeatures() []string { return nil } -var File_kurrentdb_protocols_v1_serverfeatures_proto protoreflect.FileDescriptor +var File_trogoneventstore_protocols_v1_serverfeatures_proto protoreflect.FileDescriptor -const file_kurrentdb_protocols_v1_serverfeatures_proto_rawDesc = "" + +const file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDesc = "" + "\n" + - "+kurrentdb/protocols/v1/serverfeatures.proto\x12\"event_store.client.server_features\x1a#kurrentdb/protocols/v1/shared.proto\"\x9e\x01\n" + + "2trogoneventstore/protocols/v1/serverfeatures.proto\x12\"event_store.client.server_features\x1a*trogoneventstore/protocols/v1/shared.proto\"\x9e\x01\n" + "\x10SupportedMethods\x12M\n" + "\amethods\x18\x01 \x03(\v23.event_store.client.server_features.SupportedMethodR\amethods\x12;\n" + "\x1aevent_store_server_version\x18\x02 \x01(\tR\x17eventStoreServerVersion\"q\n" + @@ -148,28 +148,28 @@ const file_kurrentdb_protocols_v1_serverfeatures_proto_rawDesc = "" + "\fservice_name\x18\x02 \x01(\tR\vserviceName\x12\x1a\n" + "\bfeatures\x18\x03 \x03(\tR\bfeatures2x\n" + "\x0eServerFeatures\x12f\n" + - "\x13GetSupportedMethods\x12\x19.event_store.client.Empty\x1a4.event_store.client.server_features.SupportedMethodsB\x86\x01\n" + - ",com.eventstore.dbclient.proto.serverfeaturesZVgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/serverfeaturesb\x06proto3" + "\x13GetSupportedMethods\x12\x19.event_store.client.Empty\x1a4.event_store.client.server_features.SupportedMethodsB\x95\x01\n" + + ",com.eventstore.dbclient.proto.serverfeaturesZegithub.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/serverfeaturesb\x06proto3" var ( - file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescData []byte + file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescOnce sync.Once + file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescData []byte ) -func file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_serverfeatures_proto_rawDesc), len(file_kurrentdb_protocols_v1_serverfeatures_proto_rawDesc))) +func file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescGZIP() []byte { + file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescOnce.Do(func() { + file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDesc), len(file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDesc))) }) - return file_kurrentdb_protocols_v1_serverfeatures_proto_rawDescData + return file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDescData } -var file_kurrentdb_protocols_v1_serverfeatures_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_kurrentdb_protocols_v1_serverfeatures_proto_goTypes = []any{ +var file_trogoneventstore_protocols_v1_serverfeatures_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_trogoneventstore_protocols_v1_serverfeatures_proto_goTypes = []any{ (*SupportedMethods)(nil), // 0: event_store.client.server_features.SupportedMethods (*SupportedMethod)(nil), // 1: event_store.client.server_features.SupportedMethod (*shared.Empty)(nil), // 2: event_store.client.Empty } -var file_kurrentdb_protocols_v1_serverfeatures_proto_depIdxs = []int32{ +var file_trogoneventstore_protocols_v1_serverfeatures_proto_depIdxs = []int32{ 1, // 0: event_store.client.server_features.SupportedMethods.methods:type_name -> event_store.client.server_features.SupportedMethod 2, // 1: event_store.client.server_features.ServerFeatures.GetSupportedMethods:input_type -> event_store.client.Empty 0, // 2: event_store.client.server_features.ServerFeatures.GetSupportedMethods:output_type -> event_store.client.server_features.SupportedMethods @@ -180,26 +180,26 @@ var file_kurrentdb_protocols_v1_serverfeatures_proto_depIdxs = []int32{ 0, // [0:1] is the sub-list for field type_name } -func init() { file_kurrentdb_protocols_v1_serverfeatures_proto_init() } -func file_kurrentdb_protocols_v1_serverfeatures_proto_init() { - if File_kurrentdb_protocols_v1_serverfeatures_proto != nil { +func init() { file_trogoneventstore_protocols_v1_serverfeatures_proto_init() } +func file_trogoneventstore_protocols_v1_serverfeatures_proto_init() { + if File_trogoneventstore_protocols_v1_serverfeatures_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_serverfeatures_proto_rawDesc), len(file_kurrentdb_protocols_v1_serverfeatures_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDesc), len(file_trogoneventstore_protocols_v1_serverfeatures_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_kurrentdb_protocols_v1_serverfeatures_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_serverfeatures_proto_depIdxs, - MessageInfos: file_kurrentdb_protocols_v1_serverfeatures_proto_msgTypes, + GoTypes: file_trogoneventstore_protocols_v1_serverfeatures_proto_goTypes, + DependencyIndexes: file_trogoneventstore_protocols_v1_serverfeatures_proto_depIdxs, + MessageInfos: file_trogoneventstore_protocols_v1_serverfeatures_proto_msgTypes, }.Build() - File_kurrentdb_protocols_v1_serverfeatures_proto = out.File - file_kurrentdb_protocols_v1_serverfeatures_proto_goTypes = nil - file_kurrentdb_protocols_v1_serverfeatures_proto_depIdxs = nil + File_trogoneventstore_protocols_v1_serverfeatures_proto = out.File + file_trogoneventstore_protocols_v1_serverfeatures_proto_goTypes = nil + file_trogoneventstore_protocols_v1_serverfeatures_proto_depIdxs = nil } diff --git a/protos/kurrentdb/protocols/v1/serverfeatures/serverfeatures_grpc.pb.go b/protos/trogoneventstore/protocols/v1/serverfeatures/serverfeatures_grpc.pb.go similarity index 94% rename from protos/kurrentdb/protocols/v1/serverfeatures/serverfeatures_grpc.pb.go rename to protos/trogoneventstore/protocols/v1/serverfeatures/serverfeatures_grpc.pb.go index be61d0d..c08a640 100644 --- a/protos/kurrentdb/protocols/v1/serverfeatures/serverfeatures_grpc.pb.go +++ b/protos/trogoneventstore/protocols/v1/serverfeatures/serverfeatures_grpc.pb.go @@ -1,14 +1,14 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.26.0 -// source: kurrentdb/protocols/v1/serverfeatures.proto +// - protoc v7.36.0 +// source: trogoneventstore/protocols/v1/serverfeatures.proto package serverfeatures import ( context "context" - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -118,5 +118,5 @@ var ServerFeatures_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "kurrentdb/protocols/v1/serverfeatures.proto", + Metadata: "trogoneventstore/protocols/v1/serverfeatures.proto", } diff --git a/protos/kurrentdb/protocols/v1/shared.proto b/protos/trogoneventstore/protocols/v1/shared.proto similarity index 90% rename from protos/kurrentdb/protocols/v1/shared.proto rename to protos/trogoneventstore/protocols/v1/shared.proto index 007b6a5..49ff57d 100644 --- a/protos/kurrentdb/protocols/v1/shared.proto +++ b/protos/trogoneventstore/protocols/v1/shared.proto @@ -1,7 +1,8 @@ syntax = "proto3"; package event_store.client; + +option go_package = "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared"; option java_package = "com.eventstore.dbclient.proto.shared"; -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared"; import "google/protobuf/empty.proto"; message UUID { @@ -59,4 +60,4 @@ message MaximumAppendSizeExceeded { message BadRequest { string message = 1; -} \ No newline at end of file +} diff --git a/protos/kurrentdb/protocols/v1/shared/shared.pb.go b/protos/trogoneventstore/protocols/v1/shared/shared.pb.go similarity index 81% rename from protos/kurrentdb/protocols/v1/shared/shared.pb.go rename to protos/trogoneventstore/protocols/v1/shared/shared.pb.go index 02855cf..283d6bc 100644 --- a/protos/kurrentdb/protocols/v1/shared/shared.pb.go +++ b/protos/trogoneventstore/protocols/v1/shared/shared.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/shared.proto +// protoc-gen-go v1.36.9 +// protoc v7.36.0 +// source: trogoneventstore/protocols/v1/shared.proto package shared @@ -35,7 +35,7 @@ type UUID struct { func (x *UUID) Reset() { *x = UUID{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -47,7 +47,7 @@ func (x *UUID) String() string { func (*UUID) ProtoMessage() {} func (x *UUID) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60,7 +60,7 @@ func (x *UUID) ProtoReflect() protoreflect.Message { // Deprecated: Use UUID.ProtoReflect.Descriptor instead. func (*UUID) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{0} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{0} } func (x *UUID) GetValue() isUUID_Value { @@ -112,7 +112,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -124,7 +124,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -137,7 +137,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{1} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{1} } type StreamIdentifier struct { @@ -149,7 +149,7 @@ type StreamIdentifier struct { func (x *StreamIdentifier) Reset() { *x = StreamIdentifier{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -161,7 +161,7 @@ func (x *StreamIdentifier) String() string { func (*StreamIdentifier) ProtoMessage() {} func (x *StreamIdentifier) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -174,7 +174,7 @@ func (x *StreamIdentifier) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamIdentifier.ProtoReflect.Descriptor instead. func (*StreamIdentifier) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{2} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{2} } func (x *StreamIdentifier) GetStreamName() []byte { @@ -194,7 +194,7 @@ type AllStreamPosition struct { func (x *AllStreamPosition) Reset() { *x = AllStreamPosition{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[3] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -206,7 +206,7 @@ func (x *AllStreamPosition) String() string { func (*AllStreamPosition) ProtoMessage() {} func (x *AllStreamPosition) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[3] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -219,7 +219,7 @@ func (x *AllStreamPosition) ProtoReflect() protoreflect.Message { // Deprecated: Use AllStreamPosition.ProtoReflect.Descriptor instead. func (*AllStreamPosition) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{3} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{3} } func (x *AllStreamPosition) GetCommitPosition() uint64 { @@ -256,7 +256,7 @@ type WrongExpectedVersion struct { func (x *WrongExpectedVersion) Reset() { *x = WrongExpectedVersion{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[4] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -268,7 +268,7 @@ func (x *WrongExpectedVersion) String() string { func (*WrongExpectedVersion) ProtoMessage() {} func (x *WrongExpectedVersion) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[4] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -281,7 +281,7 @@ func (x *WrongExpectedVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use WrongExpectedVersion.ProtoReflect.Descriptor instead. func (*WrongExpectedVersion) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{4} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{4} } func (x *WrongExpectedVersion) GetCurrentStreamRevisionOption() isWrongExpectedVersion_CurrentStreamRevisionOption { @@ -407,7 +407,7 @@ type AccessDenied struct { func (x *AccessDenied) Reset() { *x = AccessDenied{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[5] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -419,7 +419,7 @@ func (x *AccessDenied) String() string { func (*AccessDenied) ProtoMessage() {} func (x *AccessDenied) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[5] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -432,7 +432,7 @@ func (x *AccessDenied) ProtoReflect() protoreflect.Message { // Deprecated: Use AccessDenied.ProtoReflect.Descriptor instead. func (*AccessDenied) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{5} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{5} } type StreamDeleted struct { @@ -444,7 +444,7 @@ type StreamDeleted struct { func (x *StreamDeleted) Reset() { *x = StreamDeleted{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[6] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -456,7 +456,7 @@ func (x *StreamDeleted) String() string { func (*StreamDeleted) ProtoMessage() {} func (x *StreamDeleted) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[6] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -469,7 +469,7 @@ func (x *StreamDeleted) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamDeleted.ProtoReflect.Descriptor instead. func (*StreamDeleted) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{6} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{6} } func (x *StreamDeleted) GetStreamIdentifier() *StreamIdentifier { @@ -487,7 +487,7 @@ type Timeout struct { func (x *Timeout) Reset() { *x = Timeout{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[7] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -499,7 +499,7 @@ func (x *Timeout) String() string { func (*Timeout) ProtoMessage() {} func (x *Timeout) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[7] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -512,7 +512,7 @@ func (x *Timeout) ProtoReflect() protoreflect.Message { // Deprecated: Use Timeout.ProtoReflect.Descriptor instead. func (*Timeout) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{7} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{7} } type Unknown struct { @@ -523,7 +523,7 @@ type Unknown struct { func (x *Unknown) Reset() { *x = Unknown{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[8] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -535,7 +535,7 @@ func (x *Unknown) String() string { func (*Unknown) ProtoMessage() {} func (x *Unknown) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[8] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -548,7 +548,7 @@ func (x *Unknown) ProtoReflect() protoreflect.Message { // Deprecated: Use Unknown.ProtoReflect.Descriptor instead. func (*Unknown) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{8} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{8} } type InvalidTransaction struct { @@ -559,7 +559,7 @@ type InvalidTransaction struct { func (x *InvalidTransaction) Reset() { *x = InvalidTransaction{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[9] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -571,7 +571,7 @@ func (x *InvalidTransaction) String() string { func (*InvalidTransaction) ProtoMessage() {} func (x *InvalidTransaction) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[9] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -584,7 +584,7 @@ func (x *InvalidTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidTransaction.ProtoReflect.Descriptor instead. func (*InvalidTransaction) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{9} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{9} } type MaximumAppendSizeExceeded struct { @@ -596,7 +596,7 @@ type MaximumAppendSizeExceeded struct { func (x *MaximumAppendSizeExceeded) Reset() { *x = MaximumAppendSizeExceeded{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[10] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -608,7 +608,7 @@ func (x *MaximumAppendSizeExceeded) String() string { func (*MaximumAppendSizeExceeded) ProtoMessage() {} func (x *MaximumAppendSizeExceeded) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[10] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -621,7 +621,7 @@ func (x *MaximumAppendSizeExceeded) ProtoReflect() protoreflect.Message { // Deprecated: Use MaximumAppendSizeExceeded.ProtoReflect.Descriptor instead. func (*MaximumAppendSizeExceeded) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{10} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{10} } func (x *MaximumAppendSizeExceeded) GetMaxAppendSize() uint32 { @@ -640,7 +640,7 @@ type BadRequest struct { func (x *BadRequest) Reset() { *x = BadRequest{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[11] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -652,7 +652,7 @@ func (x *BadRequest) String() string { func (*BadRequest) ProtoMessage() {} func (x *BadRequest) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[11] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -665,7 +665,7 @@ func (x *BadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BadRequest.ProtoReflect.Descriptor instead. func (*BadRequest) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{11} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{11} } func (x *BadRequest) GetMessage() string { @@ -685,7 +685,7 @@ type UUID_Structured struct { func (x *UUID_Structured) Reset() { *x = UUID_Structured{} - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[12] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -697,7 +697,7 @@ func (x *UUID_Structured) String() string { func (*UUID_Structured) ProtoMessage() {} func (x *UUID_Structured) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_shared_proto_msgTypes[12] + mi := &file_trogoneventstore_protocols_v1_shared_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -710,7 +710,7 @@ func (x *UUID_Structured) ProtoReflect() protoreflect.Message { // Deprecated: Use UUID_Structured.ProtoReflect.Descriptor instead. func (*UUID_Structured) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP(), []int{0, 0} + return file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP(), []int{0, 0} } func (x *UUID_Structured) GetMostSignificantBits() int64 { @@ -727,11 +727,11 @@ func (x *UUID_Structured) GetLeastSignificantBits() int64 { return 0 } -var File_kurrentdb_protocols_v1_shared_proto protoreflect.FileDescriptor +var File_trogoneventstore_protocols_v1_shared_proto protoreflect.FileDescriptor -const file_kurrentdb_protocols_v1_shared_proto_rawDesc = "" + +const file_trogoneventstore_protocols_v1_shared_proto_rawDesc = "" + "\n" + - "#kurrentdb/protocols/v1/shared.proto\x12\x12event_store.client\x1a\x1bgoogle/protobuf/empty.proto\"\xe8\x01\n" + + "*trogoneventstore/protocols/v1/shared.proto\x12\x12event_store.client\x1a\x1bgoogle/protobuf/empty.proto\"\xe8\x01\n" + "\x04UUID\x12E\n" + "\n" + "structured\x18\x01 \x01(\v2#.event_store.client.UUID.StructuredH\x00R\n" + @@ -768,23 +768,23 @@ const file_kurrentdb_protocols_v1_shared_proto_rawDesc = "" + "\rmaxAppendSize\x18\x01 \x01(\rR\rmaxAppendSize\"&\n" + "\n" + "BadRequest\x12\x18\n" + - "\amessage\x18\x01 \x01(\tR\amessageBv\n" + - "$com.eventstore.dbclient.proto.sharedZNgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/sharedb\x06proto3" + "\amessage\x18\x01 \x01(\tR\amessageB\x85\x01\n" + + "$com.eventstore.dbclient.proto.sharedZ]github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/sharedb\x06proto3" var ( - file_kurrentdb_protocols_v1_shared_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_shared_proto_rawDescData []byte + file_trogoneventstore_protocols_v1_shared_proto_rawDescOnce sync.Once + file_trogoneventstore_protocols_v1_shared_proto_rawDescData []byte ) -func file_kurrentdb_protocols_v1_shared_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_shared_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_shared_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_shared_proto_rawDesc), len(file_kurrentdb_protocols_v1_shared_proto_rawDesc))) +func file_trogoneventstore_protocols_v1_shared_proto_rawDescGZIP() []byte { + file_trogoneventstore_protocols_v1_shared_proto_rawDescOnce.Do(func() { + file_trogoneventstore_protocols_v1_shared_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_shared_proto_rawDesc), len(file_trogoneventstore_protocols_v1_shared_proto_rawDesc))) }) - return file_kurrentdb_protocols_v1_shared_proto_rawDescData + return file_trogoneventstore_protocols_v1_shared_proto_rawDescData } -var file_kurrentdb_protocols_v1_shared_proto_msgTypes = make([]protoimpl.MessageInfo, 13) -var file_kurrentdb_protocols_v1_shared_proto_goTypes = []any{ +var file_trogoneventstore_protocols_v1_shared_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_trogoneventstore_protocols_v1_shared_proto_goTypes = []any{ (*UUID)(nil), // 0: event_store.client.UUID (*Empty)(nil), // 1: event_store.client.Empty (*StreamIdentifier)(nil), // 2: event_store.client.StreamIdentifier @@ -800,7 +800,7 @@ var file_kurrentdb_protocols_v1_shared_proto_goTypes = []any{ (*UUID_Structured)(nil), // 12: event_store.client.UUID.Structured (*emptypb.Empty)(nil), // 13: google.protobuf.Empty } -var file_kurrentdb_protocols_v1_shared_proto_depIdxs = []int32{ +var file_trogoneventstore_protocols_v1_shared_proto_depIdxs = []int32{ 12, // 0: event_store.client.UUID.structured:type_name -> event_store.client.UUID.Structured 13, // 1: event_store.client.WrongExpectedVersion.current_no_stream:type_name -> google.protobuf.Empty 13, // 2: event_store.client.WrongExpectedVersion.expected_any:type_name -> google.protobuf.Empty @@ -814,16 +814,16 @@ var file_kurrentdb_protocols_v1_shared_proto_depIdxs = []int32{ 0, // [0:6] is the sub-list for field type_name } -func init() { file_kurrentdb_protocols_v1_shared_proto_init() } -func file_kurrentdb_protocols_v1_shared_proto_init() { - if File_kurrentdb_protocols_v1_shared_proto != nil { +func init() { file_trogoneventstore_protocols_v1_shared_proto_init() } +func file_trogoneventstore_protocols_v1_shared_proto_init() { + if File_trogoneventstore_protocols_v1_shared_proto != nil { return } - file_kurrentdb_protocols_v1_shared_proto_msgTypes[0].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_shared_proto_msgTypes[0].OneofWrappers = []any{ (*UUID_Structured_)(nil), (*UUID_String_)(nil), } - file_kurrentdb_protocols_v1_shared_proto_msgTypes[4].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_shared_proto_msgTypes[4].OneofWrappers = []any{ (*WrongExpectedVersion_CurrentStreamRevision)(nil), (*WrongExpectedVersion_CurrentNoStream)(nil), (*WrongExpectedVersion_ExpectedStreamPosition)(nil), @@ -835,17 +835,17 @@ func file_kurrentdb_protocols_v1_shared_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_shared_proto_rawDesc), len(file_kurrentdb_protocols_v1_shared_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_shared_proto_rawDesc), len(file_trogoneventstore_protocols_v1_shared_proto_rawDesc)), NumEnums: 0, NumMessages: 13, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_kurrentdb_protocols_v1_shared_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_shared_proto_depIdxs, - MessageInfos: file_kurrentdb_protocols_v1_shared_proto_msgTypes, + GoTypes: file_trogoneventstore_protocols_v1_shared_proto_goTypes, + DependencyIndexes: file_trogoneventstore_protocols_v1_shared_proto_depIdxs, + MessageInfos: file_trogoneventstore_protocols_v1_shared_proto_msgTypes, }.Build() - File_kurrentdb_protocols_v1_shared_proto = out.File - file_kurrentdb_protocols_v1_shared_proto_goTypes = nil - file_kurrentdb_protocols_v1_shared_proto_depIdxs = nil + File_trogoneventstore_protocols_v1_shared_proto = out.File + file_trogoneventstore_protocols_v1_shared_proto_goTypes = nil + file_trogoneventstore_protocols_v1_shared_proto_depIdxs = nil } diff --git a/protos/kurrentdb/protocols/v1/status.proto b/protos/trogoneventstore/protocols/v1/status.proto similarity index 70% rename from protos/kurrentdb/protocols/v1/status.proto rename to protos/trogoneventstore/protocols/v1/status.proto index 1773cb3..4bbe09f 100644 --- a/protos/kurrentdb/protocols/v1/status.proto +++ b/protos/trogoneventstore/protocols/v1/status.proto @@ -17,10 +17,10 @@ syntax = "proto3"; package google.rpc; import "google/protobuf/any.proto"; -import "kurrentdb/protocols/v1/code.proto"; +import "trogoneventstore/protocols/v1/code.proto"; option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/rpc/status"; +option go_package = "google.golang.org/genproto/googleapis/rpc/status;status"; option java_multiple_files = true; option java_outer_classname = "StatusProto"; option java_package = "com.google.rpc"; @@ -34,15 +34,15 @@ option objc_class_prefix = "RPC"; // You can find out more about this error model and how to work with it in the // [API Design Guide](https://cloud.google.com/apis/design/errors). message Status { - // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. - google.rpc.Code code = 1; + // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. + google.rpc.Code code = 1; - // A developer-facing error message, which should be in English. Any - // user-facing error message should be localized and sent in the - // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. - string message = 2; + // A developer-facing error message, which should be in English. Any + // user-facing error message should be localized and sent in the + // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. + string message = 2; - // A list of messages that carry the error details. There is a common set of - // message types for APIs to use. - google.protobuf.Any details = 3; -} \ No newline at end of file + // A list of messages that carry the error details. There is a common set of + // message types for APIs to use. + google.protobuf.Any details = 3; +} diff --git a/protos/kurrentdb/protocols/v1/streams.proto b/protos/trogoneventstore/protocols/v1/streams.proto similarity index 85% rename from protos/kurrentdb/protocols/v1/streams.proto rename to protos/trogoneventstore/protocols/v1/streams.proto index edcf680..05cf635 100644 --- a/protos/kurrentdb/protocols/v1/streams.proto +++ b/protos/trogoneventstore/protocols/v1/streams.proto @@ -1,10 +1,11 @@ syntax = "proto3"; package event_store.client.streams; + +option go_package = "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/streams"; option java_package = "com.eventstore.dbclient.proto.streams"; -option go_package = "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/streams"; -import "kurrentdb/protocols/v1/shared.proto"; -import "kurrentdb/protocols/v1/status.proto"; +import "trogoneventstore/protocols/v1/shared.proto"; +import "trogoneventstore/protocols/v1/status.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; @@ -104,35 +105,15 @@ message ReadResp { FellBehind fell_behind = 9; } - // The $all or stream subscription has caught up and become live. message CaughtUp { - // Current time in the server when the subscription caught up google.protobuf.Timestamp timestamp = 1; - - // Checkpoint for resuming a stream subscription. - // For stream subscriptions it is populated unless the stream is empty. - // For $all subscriptions it is not populated. optional int64 stream_revision = 2; - - // Checkpoint for resuming a $all subscription. - // For stream subscriptions it is not populated. - // For $all subscriptions it is populated unless the database is empty. optional Position position = 3; } - // The $all or stream subscription has fallen back into catchup mode and is no longer live. message FellBehind { - // Current time in the server when the subscription fell behind google.protobuf.Timestamp timestamp = 1; - - // Checkpoint for resuming a stream subscription. - // For stream subscriptions it is populated unless the stream is empty. - // For $all subscriptions it is not populated. optional int64 stream_revision = 2; - - // Checkpoint for resuming a $all subscription. - // For stream subscriptions it is not populated. - // For $all subscriptions it is populated unless the database is empty. optional Position position = 3; } @@ -161,16 +142,11 @@ message ReadResp { message Checkpoint { uint64 commit_position = 1; uint64 prepare_position = 2; - - // Current time in the server when the checkpoint was reached - google.protobuf.Timestamp timestamp = 3; } - message Position { uint64 commit_position = 1; uint64 prepare_position = 2; } - message StreamNotFound { event_store.client.StreamIdentifier stream_identifier = 1; } diff --git a/protos/kurrentdb/protocols/v1/streams/streams.pb.go b/protos/trogoneventstore/protocols/v1/streams/streams.pb.go similarity index 88% rename from protos/kurrentdb/protocols/v1/streams/streams.pb.go rename to protos/trogoneventstore/protocols/v1/streams/streams.pb.go index a41adba..55ea9a6 100644 --- a/protos/kurrentdb/protocols/v1/streams/streams.pb.go +++ b/protos/trogoneventstore/protocols/v1/streams/streams.pb.go @@ -1,13 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 -// protoc v5.26.0 -// source: kurrentdb/protocols/v1/streams.proto +// protoc-gen-go v1.36.9 +// protoc v7.36.0 +// source: trogoneventstore/protocols/v1/streams.proto package streams import ( - shared "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + shared "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" status "google.golang.org/genproto/googleapis/rpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -56,11 +56,11 @@ func (x ReadReq_Options_ReadDirection) String() string { } func (ReadReq_Options_ReadDirection) Descriptor() protoreflect.EnumDescriptor { - return file_kurrentdb_protocols_v1_streams_proto_enumTypes[0].Descriptor() + return file_trogoneventstore_protocols_v1_streams_proto_enumTypes[0].Descriptor() } func (ReadReq_Options_ReadDirection) Type() protoreflect.EnumType { - return &file_kurrentdb_protocols_v1_streams_proto_enumTypes[0] + return &file_trogoneventstore_protocols_v1_streams_proto_enumTypes[0] } func (x ReadReq_Options_ReadDirection) Number() protoreflect.EnumNumber { @@ -69,7 +69,7 @@ func (x ReadReq_Options_ReadDirection) Number() protoreflect.EnumNumber { // Deprecated: Use ReadReq_Options_ReadDirection.Descriptor instead. func (ReadReq_Options_ReadDirection) EnumDescriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 0} } type ReadReq struct { @@ -81,7 +81,7 @@ type ReadReq struct { func (x *ReadReq) Reset() { *x = ReadReq{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -93,7 +93,7 @@ func (x *ReadReq) String() string { func (*ReadReq) ProtoMessage() {} func (x *ReadReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[0] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -106,7 +106,7 @@ func (x *ReadReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq.ProtoReflect.Descriptor instead. func (*ReadReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0} } func (x *ReadReq) GetOptions() *ReadReq_Options { @@ -136,7 +136,7 @@ type ReadResp struct { func (x *ReadResp) Reset() { *x = ReadResp{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -148,7 +148,7 @@ func (x *ReadResp) String() string { func (*ReadResp) ProtoMessage() {} func (x *ReadResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[1] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -161,7 +161,7 @@ func (x *ReadResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp.ProtoReflect.Descriptor instead. func (*ReadResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1} } func (x *ReadResp) GetContent() isReadResp_Content { @@ -323,7 +323,7 @@ type AppendReq struct { func (x *AppendReq) Reset() { *x = AppendReq{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -335,7 +335,7 @@ func (x *AppendReq) String() string { func (*AppendReq) ProtoMessage() {} func (x *AppendReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[2] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -348,7 +348,7 @@ func (x *AppendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendReq.ProtoReflect.Descriptor instead. func (*AppendReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{2} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{2} } func (x *AppendReq) GetContent() isAppendReq_Content { @@ -405,7 +405,7 @@ type AppendResp struct { func (x *AppendResp) Reset() { *x = AppendResp{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[3] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -417,7 +417,7 @@ func (x *AppendResp) String() string { func (*AppendResp) ProtoMessage() {} func (x *AppendResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[3] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -430,7 +430,7 @@ func (x *AppendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendResp.ProtoReflect.Descriptor instead. func (*AppendResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{3} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{3} } func (x *AppendResp) GetResult() isAppendResp_Result { @@ -486,7 +486,7 @@ type BatchAppendReq struct { func (x *BatchAppendReq) Reset() { *x = BatchAppendReq{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[4] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -498,7 +498,7 @@ func (x *BatchAppendReq) String() string { func (*BatchAppendReq) ProtoMessage() {} func (x *BatchAppendReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[4] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -511,7 +511,7 @@ func (x *BatchAppendReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchAppendReq.ProtoReflect.Descriptor instead. func (*BatchAppendReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{4} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{4} } func (x *BatchAppendReq) GetCorrelationId() *shared.UUID { @@ -564,7 +564,7 @@ type BatchAppendResp struct { func (x *BatchAppendResp) Reset() { *x = BatchAppendResp{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[5] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -576,7 +576,7 @@ func (x *BatchAppendResp) String() string { func (*BatchAppendResp) ProtoMessage() {} func (x *BatchAppendResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[5] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -589,7 +589,7 @@ func (x *BatchAppendResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchAppendResp.ProtoReflect.Descriptor instead. func (*BatchAppendResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{5} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{5} } func (x *BatchAppendResp) GetCorrelationId() *shared.UUID { @@ -727,7 +727,7 @@ type DeleteReq struct { func (x *DeleteReq) Reset() { *x = DeleteReq{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[6] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -739,7 +739,7 @@ func (x *DeleteReq) String() string { func (*DeleteReq) ProtoMessage() {} func (x *DeleteReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[6] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -752,7 +752,7 @@ func (x *DeleteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReq.ProtoReflect.Descriptor instead. func (*DeleteReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{6} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{6} } func (x *DeleteReq) GetOptions() *DeleteReq_Options { @@ -775,7 +775,7 @@ type DeleteResp struct { func (x *DeleteResp) Reset() { *x = DeleteResp{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[7] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -787,7 +787,7 @@ func (x *DeleteResp) String() string { func (*DeleteResp) ProtoMessage() {} func (x *DeleteResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[7] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -800,7 +800,7 @@ func (x *DeleteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResp.ProtoReflect.Descriptor instead. func (*DeleteResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{7} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{7} } func (x *DeleteResp) GetPositionOption() isDeleteResp_PositionOption { @@ -853,7 +853,7 @@ type TombstoneReq struct { func (x *TombstoneReq) Reset() { *x = TombstoneReq{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[8] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -865,7 +865,7 @@ func (x *TombstoneReq) String() string { func (*TombstoneReq) ProtoMessage() {} func (x *TombstoneReq) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[8] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -878,7 +878,7 @@ func (x *TombstoneReq) ProtoReflect() protoreflect.Message { // Deprecated: Use TombstoneReq.ProtoReflect.Descriptor instead. func (*TombstoneReq) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{8} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{8} } func (x *TombstoneReq) GetOptions() *TombstoneReq_Options { @@ -901,7 +901,7 @@ type TombstoneResp struct { func (x *TombstoneResp) Reset() { *x = TombstoneResp{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[9] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -913,7 +913,7 @@ func (x *TombstoneResp) String() string { func (*TombstoneResp) ProtoMessage() {} func (x *TombstoneResp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[9] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -926,7 +926,7 @@ func (x *TombstoneResp) ProtoReflect() protoreflect.Message { // Deprecated: Use TombstoneResp.ProtoReflect.Descriptor instead. func (*TombstoneResp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{9} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{9} } func (x *TombstoneResp) GetPositionOption() isTombstoneResp_PositionOption { @@ -997,7 +997,7 @@ type ReadReq_Options struct { func (x *ReadReq_Options) Reset() { *x = ReadReq_Options{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[10] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1009,7 +1009,7 @@ func (x *ReadReq_Options) String() string { func (*ReadReq_Options) ProtoMessage() {} func (x *ReadReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[10] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1022,7 +1022,7 @@ func (x *ReadReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options.ProtoReflect.Descriptor instead. func (*ReadReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0} } func (x *ReadReq_Options) GetStreamOption() isReadReq_Options_StreamOption { @@ -1191,7 +1191,7 @@ type ReadReq_Options_StreamOptions struct { func (x *ReadReq_Options_StreamOptions) Reset() { *x = ReadReq_Options_StreamOptions{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[11] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1203,7 +1203,7 @@ func (x *ReadReq_Options_StreamOptions) String() string { func (*ReadReq_Options_StreamOptions) ProtoMessage() {} func (x *ReadReq_Options_StreamOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[11] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1216,7 +1216,7 @@ func (x *ReadReq_Options_StreamOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_StreamOptions.ProtoReflect.Descriptor instead. func (*ReadReq_Options_StreamOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 0} } func (x *ReadReq_Options_StreamOptions) GetStreamIdentifier() *shared.StreamIdentifier { @@ -1296,7 +1296,7 @@ type ReadReq_Options_AllOptions struct { func (x *ReadReq_Options_AllOptions) Reset() { *x = ReadReq_Options_AllOptions{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[12] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1308,7 +1308,7 @@ func (x *ReadReq_Options_AllOptions) String() string { func (*ReadReq_Options_AllOptions) ProtoMessage() {} func (x *ReadReq_Options_AllOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[12] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1321,7 +1321,7 @@ func (x *ReadReq_Options_AllOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_AllOptions.ProtoReflect.Descriptor instead. func (*ReadReq_Options_AllOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 1} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 1} } func (x *ReadReq_Options_AllOptions) GetAllOption() isReadReq_Options_AllOptions_AllOption { @@ -1388,7 +1388,7 @@ type ReadReq_Options_SubscriptionOptions struct { func (x *ReadReq_Options_SubscriptionOptions) Reset() { *x = ReadReq_Options_SubscriptionOptions{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[13] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1400,7 +1400,7 @@ func (x *ReadReq_Options_SubscriptionOptions) String() string { func (*ReadReq_Options_SubscriptionOptions) ProtoMessage() {} func (x *ReadReq_Options_SubscriptionOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[13] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1413,7 +1413,7 @@ func (x *ReadReq_Options_SubscriptionOptions) ProtoReflect() protoreflect.Messag // Deprecated: Use ReadReq_Options_SubscriptionOptions.ProtoReflect.Descriptor instead. func (*ReadReq_Options_SubscriptionOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 2} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 2} } type ReadReq_Options_Position struct { @@ -1426,7 +1426,7 @@ type ReadReq_Options_Position struct { func (x *ReadReq_Options_Position) Reset() { *x = ReadReq_Options_Position{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[14] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1438,7 +1438,7 @@ func (x *ReadReq_Options_Position) String() string { func (*ReadReq_Options_Position) ProtoMessage() {} func (x *ReadReq_Options_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[14] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1451,7 +1451,7 @@ func (x *ReadReq_Options_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_Position.ProtoReflect.Descriptor instead. func (*ReadReq_Options_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 3} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 3} } func (x *ReadReq_Options_Position) GetCommitPosition() uint64 { @@ -1487,7 +1487,7 @@ type ReadReq_Options_FilterOptions struct { func (x *ReadReq_Options_FilterOptions) Reset() { *x = ReadReq_Options_FilterOptions{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[15] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1499,7 +1499,7 @@ func (x *ReadReq_Options_FilterOptions) String() string { func (*ReadReq_Options_FilterOptions) ProtoMessage() {} func (x *ReadReq_Options_FilterOptions) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[15] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1512,7 +1512,7 @@ func (x *ReadReq_Options_FilterOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_FilterOptions.ProtoReflect.Descriptor instead. func (*ReadReq_Options_FilterOptions) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 4} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 4} } func (x *ReadReq_Options_FilterOptions) GetFilter() isReadReq_Options_FilterOptions_Filter { @@ -1617,7 +1617,7 @@ type ReadReq_Options_UUIDOption struct { func (x *ReadReq_Options_UUIDOption) Reset() { *x = ReadReq_Options_UUIDOption{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[16] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1629,7 +1629,7 @@ func (x *ReadReq_Options_UUIDOption) String() string { func (*ReadReq_Options_UUIDOption) ProtoMessage() {} func (x *ReadReq_Options_UUIDOption) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[16] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1642,7 +1642,7 @@ func (x *ReadReq_Options_UUIDOption) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_UUIDOption.ProtoReflect.Descriptor instead. func (*ReadReq_Options_UUIDOption) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 5} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 5} } func (x *ReadReq_Options_UUIDOption) GetContent() isReadReq_Options_UUIDOption_Content { @@ -1695,7 +1695,7 @@ type ReadReq_Options_ControlOption struct { func (x *ReadReq_Options_ControlOption) Reset() { *x = ReadReq_Options_ControlOption{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[17] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1707,7 +1707,7 @@ func (x *ReadReq_Options_ControlOption) String() string { func (*ReadReq_Options_ControlOption) ProtoMessage() {} func (x *ReadReq_Options_ControlOption) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[17] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1720,7 +1720,7 @@ func (x *ReadReq_Options_ControlOption) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadReq_Options_ControlOption.ProtoReflect.Descriptor instead. func (*ReadReq_Options_ControlOption) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 6} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 6} } func (x *ReadReq_Options_ControlOption) GetCompatibility() uint32 { @@ -1740,7 +1740,7 @@ type ReadReq_Options_FilterOptions_Expression struct { func (x *ReadReq_Options_FilterOptions_Expression) Reset() { *x = ReadReq_Options_FilterOptions_Expression{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[18] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1752,7 +1752,7 @@ func (x *ReadReq_Options_FilterOptions_Expression) String() string { func (*ReadReq_Options_FilterOptions_Expression) ProtoMessage() {} func (x *ReadReq_Options_FilterOptions_Expression) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[18] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1765,7 +1765,7 @@ func (x *ReadReq_Options_FilterOptions_Expression) ProtoReflect() protoreflect.M // Deprecated: Use ReadReq_Options_FilterOptions_Expression.ProtoReflect.Descriptor instead. func (*ReadReq_Options_FilterOptions_Expression) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 4, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{0, 0, 4, 0} } func (x *ReadReq_Options_FilterOptions_Expression) GetRegex() string { @@ -1782,26 +1782,18 @@ func (x *ReadReq_Options_FilterOptions_Expression) GetPrefix() []string { return nil } -// The $all or stream subscription has caught up and become live. type ReadResp_CaughtUp struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Current time in the server when the subscription caught up - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Checkpoint for resuming a stream subscription. - // For stream subscriptions it is populated unless the stream is empty. - // For $all subscriptions it is not populated. - StreamRevision *int64 `protobuf:"varint,2,opt,name=stream_revision,json=streamRevision,proto3,oneof" json:"stream_revision,omitempty"` - // Checkpoint for resuming a $all subscription. - // For stream subscriptions it is not populated. - // For $all subscriptions it is populated unless the database is empty. - Position *ReadResp_Position `protobuf:"bytes,3,opt,name=position,proto3,oneof" json:"position,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + StreamRevision *int64 `protobuf:"varint,2,opt,name=stream_revision,json=streamRevision,proto3,oneof" json:"stream_revision,omitempty"` + Position *ReadResp_Position `protobuf:"bytes,3,opt,name=position,proto3,oneof" json:"position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadResp_CaughtUp) Reset() { *x = ReadResp_CaughtUp{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[19] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1813,7 +1805,7 @@ func (x *ReadResp_CaughtUp) String() string { func (*ReadResp_CaughtUp) ProtoMessage() {} func (x *ReadResp_CaughtUp) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[19] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1826,7 +1818,7 @@ func (x *ReadResp_CaughtUp) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_CaughtUp.ProtoReflect.Descriptor instead. func (*ReadResp_CaughtUp) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 0} } func (x *ReadResp_CaughtUp) GetTimestamp() *timestamppb.Timestamp { @@ -1850,26 +1842,18 @@ func (x *ReadResp_CaughtUp) GetPosition() *ReadResp_Position { return nil } -// The $all or stream subscription has fallen back into catchup mode and is no longer live. type ReadResp_FellBehind struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Current time in the server when the subscription fell behind - Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Checkpoint for resuming a stream subscription. - // For stream subscriptions it is populated unless the stream is empty. - // For $all subscriptions it is not populated. - StreamRevision *int64 `protobuf:"varint,2,opt,name=stream_revision,json=streamRevision,proto3,oneof" json:"stream_revision,omitempty"` - // Checkpoint for resuming a $all subscription. - // For stream subscriptions it is not populated. - // For $all subscriptions it is populated unless the database is empty. - Position *ReadResp_Position `protobuf:"bytes,3,opt,name=position,proto3,oneof" json:"position,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Timestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + StreamRevision *int64 `protobuf:"varint,2,opt,name=stream_revision,json=streamRevision,proto3,oneof" json:"stream_revision,omitempty"` + Position *ReadResp_Position `protobuf:"bytes,3,opt,name=position,proto3,oneof" json:"position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadResp_FellBehind) Reset() { *x = ReadResp_FellBehind{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[20] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1881,7 +1865,7 @@ func (x *ReadResp_FellBehind) String() string { func (*ReadResp_FellBehind) ProtoMessage() {} func (x *ReadResp_FellBehind) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[20] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1894,7 +1878,7 @@ func (x *ReadResp_FellBehind) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_FellBehind.ProtoReflect.Descriptor instead. func (*ReadResp_FellBehind) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 1} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 1} } func (x *ReadResp_FellBehind) GetTimestamp() *timestamppb.Timestamp { @@ -1933,7 +1917,7 @@ type ReadResp_ReadEvent struct { func (x *ReadResp_ReadEvent) Reset() { *x = ReadResp_ReadEvent{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[21] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1945,7 +1929,7 @@ func (x *ReadResp_ReadEvent) String() string { func (*ReadResp_ReadEvent) ProtoMessage() {} func (x *ReadResp_ReadEvent) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[21] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1958,7 +1942,7 @@ func (x *ReadResp_ReadEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_ReadEvent.ProtoReflect.Descriptor instead. func (*ReadResp_ReadEvent) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 2} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 2} } func (x *ReadResp_ReadEvent) GetEvent() *ReadResp_ReadEvent_RecordedEvent { @@ -2025,7 +2009,7 @@ type ReadResp_SubscriptionConfirmation struct { func (x *ReadResp_SubscriptionConfirmation) Reset() { *x = ReadResp_SubscriptionConfirmation{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[22] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2037,7 +2021,7 @@ func (x *ReadResp_SubscriptionConfirmation) String() string { func (*ReadResp_SubscriptionConfirmation) ProtoMessage() {} func (x *ReadResp_SubscriptionConfirmation) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[22] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2050,7 +2034,7 @@ func (x *ReadResp_SubscriptionConfirmation) ProtoReflect() protoreflect.Message // Deprecated: Use ReadResp_SubscriptionConfirmation.ProtoReflect.Descriptor instead. func (*ReadResp_SubscriptionConfirmation) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 3} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 3} } func (x *ReadResp_SubscriptionConfirmation) GetSubscriptionId() string { @@ -2064,15 +2048,13 @@ type ReadResp_Checkpoint struct { state protoimpl.MessageState `protogen:"open.v1"` CommitPosition uint64 `protobuf:"varint,1,opt,name=commit_position,json=commitPosition,proto3" json:"commit_position,omitempty"` PreparePosition uint64 `protobuf:"varint,2,opt,name=prepare_position,json=preparePosition,proto3" json:"prepare_position,omitempty"` - // Current time in the server when the checkpoint was reached - Timestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadResp_Checkpoint) Reset() { *x = ReadResp_Checkpoint{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[23] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2084,7 +2066,7 @@ func (x *ReadResp_Checkpoint) String() string { func (*ReadResp_Checkpoint) ProtoMessage() {} func (x *ReadResp_Checkpoint) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[23] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2097,7 +2079,7 @@ func (x *ReadResp_Checkpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_Checkpoint.ProtoReflect.Descriptor instead. func (*ReadResp_Checkpoint) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 4} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 4} } func (x *ReadResp_Checkpoint) GetCommitPosition() uint64 { @@ -2114,13 +2096,6 @@ func (x *ReadResp_Checkpoint) GetPreparePosition() uint64 { return 0 } -func (x *ReadResp_Checkpoint) GetTimestamp() *timestamppb.Timestamp { - if x != nil { - return x.Timestamp - } - return nil -} - type ReadResp_Position struct { state protoimpl.MessageState `protogen:"open.v1"` CommitPosition uint64 `protobuf:"varint,1,opt,name=commit_position,json=commitPosition,proto3" json:"commit_position,omitempty"` @@ -2131,7 +2106,7 @@ type ReadResp_Position struct { func (x *ReadResp_Position) Reset() { *x = ReadResp_Position{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[24] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2143,7 +2118,7 @@ func (x *ReadResp_Position) String() string { func (*ReadResp_Position) ProtoMessage() {} func (x *ReadResp_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[24] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2156,7 +2131,7 @@ func (x *ReadResp_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_Position.ProtoReflect.Descriptor instead. func (*ReadResp_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 5} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 5} } func (x *ReadResp_Position) GetCommitPosition() uint64 { @@ -2182,7 +2157,7 @@ type ReadResp_StreamNotFound struct { func (x *ReadResp_StreamNotFound) Reset() { *x = ReadResp_StreamNotFound{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[25] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2194,7 +2169,7 @@ func (x *ReadResp_StreamNotFound) String() string { func (*ReadResp_StreamNotFound) ProtoMessage() {} func (x *ReadResp_StreamNotFound) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[25] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2207,7 +2182,7 @@ func (x *ReadResp_StreamNotFound) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_StreamNotFound.ProtoReflect.Descriptor instead. func (*ReadResp_StreamNotFound) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 6} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 6} } func (x *ReadResp_StreamNotFound) GetStreamIdentifier() *shared.StreamIdentifier { @@ -2233,7 +2208,7 @@ type ReadResp_ReadEvent_RecordedEvent struct { func (x *ReadResp_ReadEvent_RecordedEvent) Reset() { *x = ReadResp_ReadEvent_RecordedEvent{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[26] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2245,7 +2220,7 @@ func (x *ReadResp_ReadEvent_RecordedEvent) String() string { func (*ReadResp_ReadEvent_RecordedEvent) ProtoMessage() {} func (x *ReadResp_ReadEvent_RecordedEvent) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[26] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2258,7 +2233,7 @@ func (x *ReadResp_ReadEvent_RecordedEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResp_ReadEvent_RecordedEvent.ProtoReflect.Descriptor instead. func (*ReadResp_ReadEvent_RecordedEvent) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 2, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{1, 2, 0} } func (x *ReadResp_ReadEvent_RecordedEvent) GetId() *shared.UUID { @@ -2333,7 +2308,7 @@ type AppendReq_Options struct { func (x *AppendReq_Options) Reset() { *x = AppendReq_Options{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[28] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2345,7 +2320,7 @@ func (x *AppendReq_Options) String() string { func (*AppendReq_Options) ProtoMessage() {} func (x *AppendReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[28] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2358,7 +2333,7 @@ func (x *AppendReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendReq_Options.ProtoReflect.Descriptor instead. func (*AppendReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{2, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{2, 0} } func (x *AppendReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { @@ -2451,7 +2426,7 @@ type AppendReq_ProposedMessage struct { func (x *AppendReq_ProposedMessage) Reset() { *x = AppendReq_ProposedMessage{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[29] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2463,7 +2438,7 @@ func (x *AppendReq_ProposedMessage) String() string { func (*AppendReq_ProposedMessage) ProtoMessage() {} func (x *AppendReq_ProposedMessage) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[29] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2476,7 +2451,7 @@ func (x *AppendReq_ProposedMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendReq_ProposedMessage.ProtoReflect.Descriptor instead. func (*AppendReq_ProposedMessage) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{2, 1} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{2, 1} } func (x *AppendReq_ProposedMessage) GetId() *shared.UUID { @@ -2517,7 +2492,7 @@ type AppendResp_Position struct { func (x *AppendResp_Position) Reset() { *x = AppendResp_Position{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[31] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2529,7 +2504,7 @@ func (x *AppendResp_Position) String() string { func (*AppendResp_Position) ProtoMessage() {} func (x *AppendResp_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[31] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2542,7 +2517,7 @@ func (x *AppendResp_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendResp_Position.ProtoReflect.Descriptor instead. func (*AppendResp_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{3, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{3, 0} } func (x *AppendResp_Position) GetCommitPosition() uint64 { @@ -2577,7 +2552,7 @@ type AppendResp_Success struct { func (x *AppendResp_Success) Reset() { *x = AppendResp_Success{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[32] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2589,7 +2564,7 @@ func (x *AppendResp_Success) String() string { func (*AppendResp_Success) ProtoMessage() {} func (x *AppendResp_Success) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[32] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2602,7 +2577,7 @@ func (x *AppendResp_Success) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendResp_Success.ProtoReflect.Descriptor instead. func (*AppendResp_Success) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{3, 1} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{3, 1} } func (x *AppendResp_Success) GetCurrentRevisionOption() isAppendResp_Success_CurrentRevisionOption { @@ -2718,7 +2693,7 @@ type AppendResp_WrongExpectedVersion struct { func (x *AppendResp_WrongExpectedVersion) Reset() { *x = AppendResp_WrongExpectedVersion{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[33] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2730,7 +2705,7 @@ func (x *AppendResp_WrongExpectedVersion) String() string { func (*AppendResp_WrongExpectedVersion) ProtoMessage() {} func (x *AppendResp_WrongExpectedVersion) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[33] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2743,7 +2718,7 @@ func (x *AppendResp_WrongExpectedVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use AppendResp_WrongExpectedVersion.ProtoReflect.Descriptor instead. func (*AppendResp_WrongExpectedVersion) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{3, 2} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{3, 2} } func (x *AppendResp_WrongExpectedVersion) GetCurrentRevisionOption_20_6_0() isAppendResp_WrongExpectedVersion_CurrentRevisionOption_20_6_0 { @@ -2987,7 +2962,7 @@ type BatchAppendReq_Options struct { func (x *BatchAppendReq_Options) Reset() { *x = BatchAppendReq_Options{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[34] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2999,7 +2974,7 @@ func (x *BatchAppendReq_Options) String() string { func (*BatchAppendReq_Options) ProtoMessage() {} func (x *BatchAppendReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[34] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3012,7 +2987,7 @@ func (x *BatchAppendReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchAppendReq_Options.ProtoReflect.Descriptor instead. func (*BatchAppendReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{4, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{4, 0} } func (x *BatchAppendReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { @@ -3146,7 +3121,7 @@ type BatchAppendReq_ProposedMessage struct { func (x *BatchAppendReq_ProposedMessage) Reset() { *x = BatchAppendReq_ProposedMessage{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[35] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3158,7 +3133,7 @@ func (x *BatchAppendReq_ProposedMessage) String() string { func (*BatchAppendReq_ProposedMessage) ProtoMessage() {} func (x *BatchAppendReq_ProposedMessage) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[35] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3171,7 +3146,7 @@ func (x *BatchAppendReq_ProposedMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchAppendReq_ProposedMessage.ProtoReflect.Descriptor instead. func (*BatchAppendReq_ProposedMessage) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{4, 1} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{4, 1} } func (x *BatchAppendReq_ProposedMessage) GetId() *shared.UUID { @@ -3220,7 +3195,7 @@ type BatchAppendResp_Success struct { func (x *BatchAppendResp_Success) Reset() { *x = BatchAppendResp_Success{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[37] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3232,7 +3207,7 @@ func (x *BatchAppendResp_Success) String() string { func (*BatchAppendResp_Success) ProtoMessage() {} func (x *BatchAppendResp_Success) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[37] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3245,7 +3220,7 @@ func (x *BatchAppendResp_Success) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchAppendResp_Success.ProtoReflect.Descriptor instead. func (*BatchAppendResp_Success) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{5, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{5, 0} } func (x *BatchAppendResp_Success) GetCurrentRevisionOption() isBatchAppendResp_Success_CurrentRevisionOption { @@ -3346,7 +3321,7 @@ type DeleteReq_Options struct { func (x *DeleteReq_Options) Reset() { *x = DeleteReq_Options{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[38] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3358,7 +3333,7 @@ func (x *DeleteReq_Options) String() string { func (*DeleteReq_Options) ProtoMessage() {} func (x *DeleteReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[38] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3371,7 +3346,7 @@ func (x *DeleteReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReq_Options.ProtoReflect.Descriptor instead. func (*DeleteReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{6, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{6, 0} } func (x *DeleteReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { @@ -3462,7 +3437,7 @@ type DeleteResp_Position struct { func (x *DeleteResp_Position) Reset() { *x = DeleteResp_Position{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[39] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3474,7 +3449,7 @@ func (x *DeleteResp_Position) String() string { func (*DeleteResp_Position) ProtoMessage() {} func (x *DeleteResp_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[39] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3487,7 +3462,7 @@ func (x *DeleteResp_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResp_Position.ProtoReflect.Descriptor instead. func (*DeleteResp_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{7, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{7, 0} } func (x *DeleteResp_Position) GetCommitPosition() uint64 { @@ -3520,7 +3495,7 @@ type TombstoneReq_Options struct { func (x *TombstoneReq_Options) Reset() { *x = TombstoneReq_Options{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[40] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3532,7 +3507,7 @@ func (x *TombstoneReq_Options) String() string { func (*TombstoneReq_Options) ProtoMessage() {} func (x *TombstoneReq_Options) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[40] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3545,7 +3520,7 @@ func (x *TombstoneReq_Options) ProtoReflect() protoreflect.Message { // Deprecated: Use TombstoneReq_Options.ProtoReflect.Descriptor instead. func (*TombstoneReq_Options) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{8, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{8, 0} } func (x *TombstoneReq_Options) GetStreamIdentifier() *shared.StreamIdentifier { @@ -3636,7 +3611,7 @@ type TombstoneResp_Position struct { func (x *TombstoneResp_Position) Reset() { *x = TombstoneResp_Position{} - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[41] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3648,7 +3623,7 @@ func (x *TombstoneResp_Position) String() string { func (*TombstoneResp_Position) ProtoMessage() {} func (x *TombstoneResp_Position) ProtoReflect() protoreflect.Message { - mi := &file_kurrentdb_protocols_v1_streams_proto_msgTypes[41] + mi := &file_trogoneventstore_protocols_v1_streams_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3661,7 +3636,7 @@ func (x *TombstoneResp_Position) ProtoReflect() protoreflect.Message { // Deprecated: Use TombstoneResp_Position.ProtoReflect.Descriptor instead. func (*TombstoneResp_Position) Descriptor() ([]byte, []int) { - return file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP(), []int{9, 0} + return file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP(), []int{9, 0} } func (x *TombstoneResp_Position) GetCommitPosition() uint64 { @@ -3678,11 +3653,11 @@ func (x *TombstoneResp_Position) GetPreparePosition() uint64 { return 0 } -var File_kurrentdb_protocols_v1_streams_proto protoreflect.FileDescriptor +var File_trogoneventstore_protocols_v1_streams_proto protoreflect.FileDescriptor -const file_kurrentdb_protocols_v1_streams_proto_rawDesc = "" + +const file_trogoneventstore_protocols_v1_streams_proto_rawDesc = "" + "\n" + - "$kurrentdb/protocols/v1/streams.proto\x12\x1aevent_store.client.streams\x1a#kurrentdb/protocols/v1/shared.proto\x1a#kurrentdb/protocols/v1/status.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfb\x10\n" + + "+trogoneventstore/protocols/v1/streams.proto\x12\x1aevent_store.client.streams\x1a*trogoneventstore/protocols/v1/shared.proto\x1a*trogoneventstore/protocols/v1/status.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfb\x10\n" + "\aReadReq\x12E\n" + "\aoptions\x18\x01 \x01(\v2+.event_store.client.streams.ReadReq.OptionsR\aoptions\x1a\xa8\x10\n" + "\aOptions\x12S\n" + @@ -3742,7 +3717,7 @@ const file_kurrentdb_protocols_v1_streams_proto_rawDesc = "" + "\tBackwards\x10\x01B\x0f\n" + "\rstream_optionB\x0e\n" + "\fcount_optionB\x0f\n" + - "\rfilter_option\"\xf0\x12\n" + + "\rfilter_option\"\xb5\x12\n" + "\bReadResp\x12F\n" + "\x05event\x18\x01 \x01(\v2..event_store.client.streams.ReadResp.ReadEventH\x00R\x05event\x12c\n" + "\fconfirmation\x18\x02 \x01(\v2=.event_store.client.streams.ReadResp.SubscriptionConfirmationH\x00R\fconfirmation\x12Q\n" + @@ -3790,12 +3765,11 @@ const file_kurrentdb_protocols_v1_streams_proto_rawDesc = "" + "\n" + "\bposition\x1aC\n" + "\x18SubscriptionConfirmation\x12'\n" + - "\x0fsubscription_id\x18\x01 \x01(\tR\x0esubscriptionId\x1a\x9a\x01\n" + + "\x0fsubscription_id\x18\x01 \x01(\tR\x0esubscriptionId\x1a`\n" + "\n" + "Checkpoint\x12'\n" + "\x0fcommit_position\x18\x01 \x01(\x04R\x0ecommitPosition\x12)\n" + - "\x10prepare_position\x18\x02 \x01(\x04R\x0fpreparePosition\x128\n" + - "\ttimestamp\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\x1a^\n" + + "\x10prepare_position\x18\x02 \x01(\x04R\x0fpreparePosition\x1a^\n" + "\bPosition\x12'\n" + "\x0fcommit_position\x18\x01 \x01(\x04R\x0ecommitPosition\x12)\n" + "\x10prepare_position\x18\x02 \x01(\x04R\x0fpreparePosition\x1ac\n" + @@ -3937,24 +3911,24 @@ const file_kurrentdb_protocols_v1_streams_proto_rawDesc = "" + "\x06Append\x12%.event_store.client.streams.AppendReq\x1a&.event_store.client.streams.AppendResp(\x01\x12W\n" + "\x06Delete\x12%.event_store.client.streams.DeleteReq\x1a&.event_store.client.streams.DeleteResp\x12`\n" + "\tTombstone\x12(.event_store.client.streams.TombstoneReq\x1a).event_store.client.streams.TombstoneResp\x12j\n" + - "\vBatchAppend\x12*.event_store.client.streams.BatchAppendReq\x1a+.event_store.client.streams.BatchAppendResp(\x010\x01Bx\n" + - "%com.eventstore.dbclient.proto.streamsZOgithub.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/streamsb\x06proto3" + "\vBatchAppend\x12*.event_store.client.streams.BatchAppendReq\x1a+.event_store.client.streams.BatchAppendResp(\x010\x01B\x87\x01\n" + + "%com.eventstore.dbclient.proto.streamsZ^github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/streamsb\x06proto3" var ( - file_kurrentdb_protocols_v1_streams_proto_rawDescOnce sync.Once - file_kurrentdb_protocols_v1_streams_proto_rawDescData []byte + file_trogoneventstore_protocols_v1_streams_proto_rawDescOnce sync.Once + file_trogoneventstore_protocols_v1_streams_proto_rawDescData []byte ) -func file_kurrentdb_protocols_v1_streams_proto_rawDescGZIP() []byte { - file_kurrentdb_protocols_v1_streams_proto_rawDescOnce.Do(func() { - file_kurrentdb_protocols_v1_streams_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_streams_proto_rawDesc), len(file_kurrentdb_protocols_v1_streams_proto_rawDesc))) +func file_trogoneventstore_protocols_v1_streams_proto_rawDescGZIP() []byte { + file_trogoneventstore_protocols_v1_streams_proto_rawDescOnce.Do(func() { + file_trogoneventstore_protocols_v1_streams_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_streams_proto_rawDesc), len(file_trogoneventstore_protocols_v1_streams_proto_rawDesc))) }) - return file_kurrentdb_protocols_v1_streams_proto_rawDescData + return file_trogoneventstore_protocols_v1_streams_proto_rawDescData } -var file_kurrentdb_protocols_v1_streams_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kurrentdb_protocols_v1_streams_proto_msgTypes = make([]protoimpl.MessageInfo, 42) -var file_kurrentdb_protocols_v1_streams_proto_goTypes = []any{ +var file_trogoneventstore_protocols_v1_streams_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_trogoneventstore_protocols_v1_streams_proto_msgTypes = make([]protoimpl.MessageInfo, 42) +var file_trogoneventstore_protocols_v1_streams_proto_goTypes = []any{ (ReadReq_Options_ReadDirection)(0), // 0: event_store.client.streams.ReadReq.Options.ReadDirection (*ReadReq)(nil), // 1: event_store.client.streams.ReadReq (*ReadResp)(nil), // 2: event_store.client.streams.ReadResp @@ -4007,7 +3981,7 @@ var file_kurrentdb_protocols_v1_streams_proto_goTypes = []any{ (*timestamppb.Timestamp)(nil), // 49: google.protobuf.Timestamp (*durationpb.Duration)(nil), // 50: google.protobuf.Duration } -var file_kurrentdb_protocols_v1_streams_proto_depIdxs = []int32{ +var file_trogoneventstore_protocols_v1_streams_proto_depIdxs = []int32{ 11, // 0: event_store.client.streams.ReadReq.options:type_name -> event_store.client.streams.ReadReq.Options 22, // 1: event_store.client.streams.ReadResp.event:type_name -> event_store.client.streams.ReadResp.ReadEvent 23, // 2: event_store.client.streams.ReadResp.confirmation:type_name -> event_store.client.streams.ReadResp.SubscriptionConfirmation @@ -4062,69 +4036,68 @@ var file_kurrentdb_protocols_v1_streams_proto_depIdxs = []int32{ 27, // 51: event_store.client.streams.ReadResp.ReadEvent.event:type_name -> event_store.client.streams.ReadResp.ReadEvent.RecordedEvent 27, // 52: event_store.client.streams.ReadResp.ReadEvent.link:type_name -> event_store.client.streams.ReadResp.ReadEvent.RecordedEvent 48, // 53: event_store.client.streams.ReadResp.ReadEvent.no_position:type_name -> event_store.client.Empty - 49, // 54: event_store.client.streams.ReadResp.Checkpoint.timestamp:type_name -> google.protobuf.Timestamp - 46, // 55: event_store.client.streams.ReadResp.StreamNotFound.stream_identifier:type_name -> event_store.client.StreamIdentifier - 44, // 56: event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.id:type_name -> event_store.client.UUID - 46, // 57: event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.stream_identifier:type_name -> event_store.client.StreamIdentifier - 28, // 58: event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.metadata:type_name -> event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.MetadataEntry - 46, // 59: event_store.client.streams.AppendReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 48, // 60: event_store.client.streams.AppendReq.Options.no_stream:type_name -> event_store.client.Empty - 48, // 61: event_store.client.streams.AppendReq.Options.any:type_name -> event_store.client.Empty - 48, // 62: event_store.client.streams.AppendReq.Options.stream_exists:type_name -> event_store.client.Empty - 44, // 63: event_store.client.streams.AppendReq.ProposedMessage.id:type_name -> event_store.client.UUID - 31, // 64: event_store.client.streams.AppendReq.ProposedMessage.metadata:type_name -> event_store.client.streams.AppendReq.ProposedMessage.MetadataEntry - 48, // 65: event_store.client.streams.AppendResp.Success.no_stream:type_name -> event_store.client.Empty - 32, // 66: event_store.client.streams.AppendResp.Success.position:type_name -> event_store.client.streams.AppendResp.Position - 48, // 67: event_store.client.streams.AppendResp.Success.no_position:type_name -> event_store.client.Empty - 48, // 68: event_store.client.streams.AppendResp.WrongExpectedVersion.no_stream_20_6_0:type_name -> event_store.client.Empty - 48, // 69: event_store.client.streams.AppendResp.WrongExpectedVersion.any_20_6_0:type_name -> event_store.client.Empty - 48, // 70: event_store.client.streams.AppendResp.WrongExpectedVersion.stream_exists_20_6_0:type_name -> event_store.client.Empty - 48, // 71: event_store.client.streams.AppendResp.WrongExpectedVersion.current_no_stream:type_name -> event_store.client.Empty - 48, // 72: event_store.client.streams.AppendResp.WrongExpectedVersion.expected_any:type_name -> event_store.client.Empty - 48, // 73: event_store.client.streams.AppendResp.WrongExpectedVersion.expected_stream_exists:type_name -> event_store.client.Empty - 48, // 74: event_store.client.streams.AppendResp.WrongExpectedVersion.expected_no_stream:type_name -> event_store.client.Empty - 46, // 75: event_store.client.streams.BatchAppendReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 47, // 76: event_store.client.streams.BatchAppendReq.Options.no_stream:type_name -> google.protobuf.Empty - 47, // 77: event_store.client.streams.BatchAppendReq.Options.any:type_name -> google.protobuf.Empty - 47, // 78: event_store.client.streams.BatchAppendReq.Options.stream_exists:type_name -> google.protobuf.Empty - 49, // 79: event_store.client.streams.BatchAppendReq.Options.deadline_21_10_0:type_name -> google.protobuf.Timestamp - 50, // 80: event_store.client.streams.BatchAppendReq.Options.deadline:type_name -> google.protobuf.Duration - 44, // 81: event_store.client.streams.BatchAppendReq.ProposedMessage.id:type_name -> event_store.client.UUID - 37, // 82: event_store.client.streams.BatchAppendReq.ProposedMessage.metadata:type_name -> event_store.client.streams.BatchAppendReq.ProposedMessage.MetadataEntry - 47, // 83: event_store.client.streams.BatchAppendResp.Success.no_stream:type_name -> google.protobuf.Empty - 43, // 84: event_store.client.streams.BatchAppendResp.Success.position:type_name -> event_store.client.AllStreamPosition - 47, // 85: event_store.client.streams.BatchAppendResp.Success.no_position:type_name -> google.protobuf.Empty - 46, // 86: event_store.client.streams.DeleteReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 48, // 87: event_store.client.streams.DeleteReq.Options.no_stream:type_name -> event_store.client.Empty - 48, // 88: event_store.client.streams.DeleteReq.Options.any:type_name -> event_store.client.Empty - 48, // 89: event_store.client.streams.DeleteReq.Options.stream_exists:type_name -> event_store.client.Empty - 46, // 90: event_store.client.streams.TombstoneReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier - 48, // 91: event_store.client.streams.TombstoneReq.Options.no_stream:type_name -> event_store.client.Empty - 48, // 92: event_store.client.streams.TombstoneReq.Options.any:type_name -> event_store.client.Empty - 48, // 93: event_store.client.streams.TombstoneReq.Options.stream_exists:type_name -> event_store.client.Empty - 1, // 94: event_store.client.streams.Streams.Read:input_type -> event_store.client.streams.ReadReq - 3, // 95: event_store.client.streams.Streams.Append:input_type -> event_store.client.streams.AppendReq - 7, // 96: event_store.client.streams.Streams.Delete:input_type -> event_store.client.streams.DeleteReq - 9, // 97: event_store.client.streams.Streams.Tombstone:input_type -> event_store.client.streams.TombstoneReq - 5, // 98: event_store.client.streams.Streams.BatchAppend:input_type -> event_store.client.streams.BatchAppendReq - 2, // 99: event_store.client.streams.Streams.Read:output_type -> event_store.client.streams.ReadResp - 4, // 100: event_store.client.streams.Streams.Append:output_type -> event_store.client.streams.AppendResp - 8, // 101: event_store.client.streams.Streams.Delete:output_type -> event_store.client.streams.DeleteResp - 10, // 102: event_store.client.streams.Streams.Tombstone:output_type -> event_store.client.streams.TombstoneResp - 6, // 103: event_store.client.streams.Streams.BatchAppend:output_type -> event_store.client.streams.BatchAppendResp - 99, // [99:104] is the sub-list for method output_type - 94, // [94:99] is the sub-list for method input_type - 94, // [94:94] is the sub-list for extension type_name - 94, // [94:94] is the sub-list for extension extendee - 0, // [0:94] is the sub-list for field type_name -} - -func init() { file_kurrentdb_protocols_v1_streams_proto_init() } -func file_kurrentdb_protocols_v1_streams_proto_init() { - if File_kurrentdb_protocols_v1_streams_proto != nil { + 46, // 54: event_store.client.streams.ReadResp.StreamNotFound.stream_identifier:type_name -> event_store.client.StreamIdentifier + 44, // 55: event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.id:type_name -> event_store.client.UUID + 46, // 56: event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.stream_identifier:type_name -> event_store.client.StreamIdentifier + 28, // 57: event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.metadata:type_name -> event_store.client.streams.ReadResp.ReadEvent.RecordedEvent.MetadataEntry + 46, // 58: event_store.client.streams.AppendReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 48, // 59: event_store.client.streams.AppendReq.Options.no_stream:type_name -> event_store.client.Empty + 48, // 60: event_store.client.streams.AppendReq.Options.any:type_name -> event_store.client.Empty + 48, // 61: event_store.client.streams.AppendReq.Options.stream_exists:type_name -> event_store.client.Empty + 44, // 62: event_store.client.streams.AppendReq.ProposedMessage.id:type_name -> event_store.client.UUID + 31, // 63: event_store.client.streams.AppendReq.ProposedMessage.metadata:type_name -> event_store.client.streams.AppendReq.ProposedMessage.MetadataEntry + 48, // 64: event_store.client.streams.AppendResp.Success.no_stream:type_name -> event_store.client.Empty + 32, // 65: event_store.client.streams.AppendResp.Success.position:type_name -> event_store.client.streams.AppendResp.Position + 48, // 66: event_store.client.streams.AppendResp.Success.no_position:type_name -> event_store.client.Empty + 48, // 67: event_store.client.streams.AppendResp.WrongExpectedVersion.no_stream_20_6_0:type_name -> event_store.client.Empty + 48, // 68: event_store.client.streams.AppendResp.WrongExpectedVersion.any_20_6_0:type_name -> event_store.client.Empty + 48, // 69: event_store.client.streams.AppendResp.WrongExpectedVersion.stream_exists_20_6_0:type_name -> event_store.client.Empty + 48, // 70: event_store.client.streams.AppendResp.WrongExpectedVersion.current_no_stream:type_name -> event_store.client.Empty + 48, // 71: event_store.client.streams.AppendResp.WrongExpectedVersion.expected_any:type_name -> event_store.client.Empty + 48, // 72: event_store.client.streams.AppendResp.WrongExpectedVersion.expected_stream_exists:type_name -> event_store.client.Empty + 48, // 73: event_store.client.streams.AppendResp.WrongExpectedVersion.expected_no_stream:type_name -> event_store.client.Empty + 46, // 74: event_store.client.streams.BatchAppendReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 47, // 75: event_store.client.streams.BatchAppendReq.Options.no_stream:type_name -> google.protobuf.Empty + 47, // 76: event_store.client.streams.BatchAppendReq.Options.any:type_name -> google.protobuf.Empty + 47, // 77: event_store.client.streams.BatchAppendReq.Options.stream_exists:type_name -> google.protobuf.Empty + 49, // 78: event_store.client.streams.BatchAppendReq.Options.deadline_21_10_0:type_name -> google.protobuf.Timestamp + 50, // 79: event_store.client.streams.BatchAppendReq.Options.deadline:type_name -> google.protobuf.Duration + 44, // 80: event_store.client.streams.BatchAppendReq.ProposedMessage.id:type_name -> event_store.client.UUID + 37, // 81: event_store.client.streams.BatchAppendReq.ProposedMessage.metadata:type_name -> event_store.client.streams.BatchAppendReq.ProposedMessage.MetadataEntry + 47, // 82: event_store.client.streams.BatchAppendResp.Success.no_stream:type_name -> google.protobuf.Empty + 43, // 83: event_store.client.streams.BatchAppendResp.Success.position:type_name -> event_store.client.AllStreamPosition + 47, // 84: event_store.client.streams.BatchAppendResp.Success.no_position:type_name -> google.protobuf.Empty + 46, // 85: event_store.client.streams.DeleteReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 48, // 86: event_store.client.streams.DeleteReq.Options.no_stream:type_name -> event_store.client.Empty + 48, // 87: event_store.client.streams.DeleteReq.Options.any:type_name -> event_store.client.Empty + 48, // 88: event_store.client.streams.DeleteReq.Options.stream_exists:type_name -> event_store.client.Empty + 46, // 89: event_store.client.streams.TombstoneReq.Options.stream_identifier:type_name -> event_store.client.StreamIdentifier + 48, // 90: event_store.client.streams.TombstoneReq.Options.no_stream:type_name -> event_store.client.Empty + 48, // 91: event_store.client.streams.TombstoneReq.Options.any:type_name -> event_store.client.Empty + 48, // 92: event_store.client.streams.TombstoneReq.Options.stream_exists:type_name -> event_store.client.Empty + 1, // 93: event_store.client.streams.Streams.Read:input_type -> event_store.client.streams.ReadReq + 3, // 94: event_store.client.streams.Streams.Append:input_type -> event_store.client.streams.AppendReq + 7, // 95: event_store.client.streams.Streams.Delete:input_type -> event_store.client.streams.DeleteReq + 9, // 96: event_store.client.streams.Streams.Tombstone:input_type -> event_store.client.streams.TombstoneReq + 5, // 97: event_store.client.streams.Streams.BatchAppend:input_type -> event_store.client.streams.BatchAppendReq + 2, // 98: event_store.client.streams.Streams.Read:output_type -> event_store.client.streams.ReadResp + 4, // 99: event_store.client.streams.Streams.Append:output_type -> event_store.client.streams.AppendResp + 8, // 100: event_store.client.streams.Streams.Delete:output_type -> event_store.client.streams.DeleteResp + 10, // 101: event_store.client.streams.Streams.Tombstone:output_type -> event_store.client.streams.TombstoneResp + 6, // 102: event_store.client.streams.Streams.BatchAppend:output_type -> event_store.client.streams.BatchAppendResp + 98, // [98:103] is the sub-list for method output_type + 93, // [93:98] is the sub-list for method input_type + 93, // [93:93] is the sub-list for extension type_name + 93, // [93:93] is the sub-list for extension extendee + 0, // [0:93] is the sub-list for field type_name +} + +func init() { file_trogoneventstore_protocols_v1_streams_proto_init() } +func file_trogoneventstore_protocols_v1_streams_proto_init() { + if File_trogoneventstore_protocols_v1_streams_proto != nil { return } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[1].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[1].OneofWrappers = []any{ (*ReadResp_Event)(nil), (*ReadResp_Confirmation)(nil), (*ReadResp_Checkpoint_)(nil), @@ -4135,15 +4108,15 @@ func file_kurrentdb_protocols_v1_streams_proto_init() { (*ReadResp_CaughtUp_)(nil), (*ReadResp_FellBehind_)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[2].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[2].OneofWrappers = []any{ (*AppendReq_Options_)(nil), (*AppendReq_ProposedMessage_)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[3].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[3].OneofWrappers = []any{ (*AppendResp_Success_)(nil), (*AppendResp_WrongExpectedVersion_)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[5].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[5].OneofWrappers = []any{ (*BatchAppendResp_Error)(nil), (*BatchAppendResp_Success_)(nil), (*BatchAppendResp_StreamPosition)(nil), @@ -4151,15 +4124,15 @@ func file_kurrentdb_protocols_v1_streams_proto_init() { (*BatchAppendResp_Any)(nil), (*BatchAppendResp_StreamExists)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[7].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[7].OneofWrappers = []any{ (*DeleteResp_Position_)(nil), (*DeleteResp_NoPosition)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[9].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[9].OneofWrappers = []any{ (*TombstoneResp_Position_)(nil), (*TombstoneResp_NoPosition)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[10].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[10].OneofWrappers = []any{ (*ReadReq_Options_Stream)(nil), (*ReadReq_Options_All)(nil), (*ReadReq_Options_Count)(nil), @@ -4167,45 +4140,45 @@ func file_kurrentdb_protocols_v1_streams_proto_init() { (*ReadReq_Options_Filter)(nil), (*ReadReq_Options_NoFilter)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[11].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[11].OneofWrappers = []any{ (*ReadReq_Options_StreamOptions_Revision)(nil), (*ReadReq_Options_StreamOptions_Start)(nil), (*ReadReq_Options_StreamOptions_End)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[12].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[12].OneofWrappers = []any{ (*ReadReq_Options_AllOptions_Position)(nil), (*ReadReq_Options_AllOptions_Start)(nil), (*ReadReq_Options_AllOptions_End)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[15].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[15].OneofWrappers = []any{ (*ReadReq_Options_FilterOptions_StreamIdentifier)(nil), (*ReadReq_Options_FilterOptions_EventType)(nil), (*ReadReq_Options_FilterOptions_Max)(nil), (*ReadReq_Options_FilterOptions_Count)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[16].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[16].OneofWrappers = []any{ (*ReadReq_Options_UUIDOption_Structured)(nil), (*ReadReq_Options_UUIDOption_String_)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[19].OneofWrappers = []any{} - file_kurrentdb_protocols_v1_streams_proto_msgTypes[20].OneofWrappers = []any{} - file_kurrentdb_protocols_v1_streams_proto_msgTypes[21].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[19].OneofWrappers = []any{} + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[20].OneofWrappers = []any{} + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[21].OneofWrappers = []any{ (*ReadResp_ReadEvent_CommitPosition)(nil), (*ReadResp_ReadEvent_NoPosition)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[28].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[28].OneofWrappers = []any{ (*AppendReq_Options_Revision)(nil), (*AppendReq_Options_NoStream)(nil), (*AppendReq_Options_Any)(nil), (*AppendReq_Options_StreamExists)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[32].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[32].OneofWrappers = []any{ (*AppendResp_Success_CurrentRevision)(nil), (*AppendResp_Success_NoStream)(nil), (*AppendResp_Success_Position)(nil), (*AppendResp_Success_NoPosition)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[33].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[33].OneofWrappers = []any{ (*AppendResp_WrongExpectedVersion_CurrentRevision_20_6_0)(nil), (*AppendResp_WrongExpectedVersion_NoStream_20_6_0)(nil), (*AppendResp_WrongExpectedVersion_ExpectedRevision_20_6_0)(nil), @@ -4218,7 +4191,7 @@ func file_kurrentdb_protocols_v1_streams_proto_init() { (*AppendResp_WrongExpectedVersion_ExpectedStreamExists)(nil), (*AppendResp_WrongExpectedVersion_ExpectedNoStream)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[34].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[34].OneofWrappers = []any{ (*BatchAppendReq_Options_StreamPosition)(nil), (*BatchAppendReq_Options_NoStream)(nil), (*BatchAppendReq_Options_Any)(nil), @@ -4226,19 +4199,19 @@ func file_kurrentdb_protocols_v1_streams_proto_init() { (*BatchAppendReq_Options_Deadline_21_10_0)(nil), (*BatchAppendReq_Options_Deadline)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[37].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[37].OneofWrappers = []any{ (*BatchAppendResp_Success_CurrentRevision)(nil), (*BatchAppendResp_Success_NoStream)(nil), (*BatchAppendResp_Success_Position)(nil), (*BatchAppendResp_Success_NoPosition)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[38].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[38].OneofWrappers = []any{ (*DeleteReq_Options_Revision)(nil), (*DeleteReq_Options_NoStream)(nil), (*DeleteReq_Options_Any)(nil), (*DeleteReq_Options_StreamExists)(nil), } - file_kurrentdb_protocols_v1_streams_proto_msgTypes[40].OneofWrappers = []any{ + file_trogoneventstore_protocols_v1_streams_proto_msgTypes[40].OneofWrappers = []any{ (*TombstoneReq_Options_Revision)(nil), (*TombstoneReq_Options_NoStream)(nil), (*TombstoneReq_Options_Any)(nil), @@ -4248,18 +4221,18 @@ func file_kurrentdb_protocols_v1_streams_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_kurrentdb_protocols_v1_streams_proto_rawDesc), len(file_kurrentdb_protocols_v1_streams_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_trogoneventstore_protocols_v1_streams_proto_rawDesc), len(file_trogoneventstore_protocols_v1_streams_proto_rawDesc)), NumEnums: 1, NumMessages: 42, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_kurrentdb_protocols_v1_streams_proto_goTypes, - DependencyIndexes: file_kurrentdb_protocols_v1_streams_proto_depIdxs, - EnumInfos: file_kurrentdb_protocols_v1_streams_proto_enumTypes, - MessageInfos: file_kurrentdb_protocols_v1_streams_proto_msgTypes, + GoTypes: file_trogoneventstore_protocols_v1_streams_proto_goTypes, + DependencyIndexes: file_trogoneventstore_protocols_v1_streams_proto_depIdxs, + EnumInfos: file_trogoneventstore_protocols_v1_streams_proto_enumTypes, + MessageInfos: file_trogoneventstore_protocols_v1_streams_proto_msgTypes, }.Build() - File_kurrentdb_protocols_v1_streams_proto = out.File - file_kurrentdb_protocols_v1_streams_proto_goTypes = nil - file_kurrentdb_protocols_v1_streams_proto_depIdxs = nil + File_trogoneventstore_protocols_v1_streams_proto = out.File + file_trogoneventstore_protocols_v1_streams_proto_goTypes = nil + file_trogoneventstore_protocols_v1_streams_proto_depIdxs = nil } diff --git a/protos/kurrentdb/protocols/v1/streams/streams_grpc.pb.go b/protos/trogoneventstore/protocols/v1/streams/streams_grpc.pb.go similarity index 98% rename from protos/kurrentdb/protocols/v1/streams/streams_grpc.pb.go rename to protos/trogoneventstore/protocols/v1/streams/streams_grpc.pb.go index 819303b..e13f718 100644 --- a/protos/kurrentdb/protocols/v1/streams/streams_grpc.pb.go +++ b/protos/trogoneventstore/protocols/v1/streams/streams_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 -// - protoc v5.26.0 -// source: kurrentdb/protocols/v1/streams.proto +// - protoc v7.36.0 +// source: trogoneventstore/protocols/v1/streams.proto package streams @@ -260,5 +260,5 @@ var Streams_ServiceDesc = grpc.ServiceDesc{ ClientStreams: true, }, }, - Metadata: "kurrentdb/protocols/v1/streams.proto", + Metadata: "trogoneventstore/protocols/v1/streams.proto", } diff --git a/samples/appendingEvents.go b/samples/appendingEvents.go index ef4f752..917c891 100644 --- a/samples/appendingEvents.go +++ b/samples/appendingEvents.go @@ -3,13 +3,11 @@ package samples import ( "context" "encoding/json" - "errors" "log" - "slices" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) type TestEvent struct { @@ -17,7 +15,7 @@ type TestEvent struct { ImportantData string } -func AppendToStream(db *kurrentdb.Client) { +func AppendToStream(db *trogoneventstore.Client) { // region append-to-stream data := TestEvent{ Id: "1", @@ -29,12 +27,12 @@ func AppendToStream(db *kurrentdb.Client) { panic(err) } - options := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + options := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, } - result, err := db.AppendToStream(context.Background(), "some-stream", options, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + result, err := db.AppendToStream(context.Background(), "some-stream", options, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", Data: bytes, }) @@ -43,7 +41,7 @@ func AppendToStream(db *kurrentdb.Client) { log.Printf("Result: %v", result) } -func AppendWithSameId(db *kurrentdb.Client) { +func AppendWithSameId(db *trogoneventstore.Client) { // region append-duplicate-event data := TestEvent{ Id: "1", @@ -56,21 +54,21 @@ func AppendWithSameId(db *kurrentdb.Client) { } id := uuid.New() - event := kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + event := trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", EventID: id, Data: bytes, } - _, err = db.AppendToStream(context.Background(), "some-stream", kurrentdb.AppendToStreamOptions{}, event) + _, err = db.AppendToStream(context.Background(), "some-stream", trogoneventstore.AppendToStreamOptions{}, event) if err != nil { panic(err) } // attempt to append the same event again - _, err = db.AppendToStream(context.Background(), "some-stream", kurrentdb.AppendToStreamOptions{}, event) + _, err = db.AppendToStream(context.Background(), "some-stream", trogoneventstore.AppendToStreamOptions{}, event) if err != nil { panic(err) @@ -79,7 +77,7 @@ func AppendWithSameId(db *kurrentdb.Client) { // endregion append-duplicate-event } -func AppendWithNoStream(db *kurrentdb.Client) { +func AppendWithNoStream(db *trogoneventstore.Client) { // region append-with-no-stream data := TestEvent{ Id: "1", @@ -91,12 +89,12 @@ func AppendWithNoStream(db *kurrentdb.Client) { panic(err) } - options := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + options := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, } - _, err = db.AppendToStream(context.Background(), "same-event-stream", options, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + _, err = db.AppendToStream(context.Background(), "same-event-stream", options, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", Data: bytes, }) @@ -114,19 +112,19 @@ func AppendWithNoStream(db *kurrentdb.Client) { } // attempt to append the same event again - _, err = db.AppendToStream(context.Background(), "same-event-stream", options, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + _, err = db.AppendToStream(context.Background(), "same-event-stream", options, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", Data: bytes, }) // endregion append-with-no-stream } -func AppendWithConcurrencyCheck(db *kurrentdb.Client) { +func AppendWithConcurrencyCheck(db *trogoneventstore.Client) { // region append-with-concurrency-check - ropts := kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, + ropts := trogoneventstore.ReadStreamOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, } stream, err := db.ReadStream(context.Background(), "concurrency-stream", ropts, 1) @@ -153,12 +151,12 @@ func AppendWithConcurrencyCheck(db *kurrentdb.Client) { panic(err) } - aopts := kurrentdb.AppendToStreamOptions{ + aopts := trogoneventstore.AppendToStreamOptions{ StreamState: lastEvent.OriginalStreamRevision(), } - _, err = db.AppendToStream(context.Background(), "concurrency-stream", aopts, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + _, err = db.AppendToStream(context.Background(), "concurrency-stream", aopts, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", Data: bytes, }) @@ -172,15 +170,15 @@ func AppendWithConcurrencyCheck(db *kurrentdb.Client) { panic(err) } - _, err = db.AppendToStream(context.Background(), "concurrency-stream", aopts, kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + _, err = db.AppendToStream(context.Background(), "concurrency-stream", aopts, trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", Data: bytes, }) // endregion append-with-concurrency-check } -func AppendToStreamOverridingUserCredentials(db *kurrentdb.Client) { +func AppendToStreamOverridingUserCredentials(db *trogoneventstore.Client) { data := TestEvent{ Id: "1", ImportantData: "some value", @@ -191,129 +189,17 @@ func AppendToStreamOverridingUserCredentials(db *kurrentdb.Client) { panic(err) } - event := kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + event := trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "some-event", Data: bytes, } // region overriding-user-credentials - credentials := &kurrentdb.Credentials{Login: "admin", Password: "changeit"} + credentials := &trogoneventstore.Credentials{Login: "admin", Password: "changeit"} - result, err := db.AppendToStream(context.Background(), "some-stream", kurrentdb.AppendToStreamOptions{Authenticated: credentials}, event) + result, err := db.AppendToStream(context.Background(), "some-stream", trogoneventstore.AppendToStreamOptions{Authenticated: credentials}, event) // endregion overriding-user-credentials log.Printf("Result: %v", result) } - -func AppendToMultipleStreams(db *kurrentdb.Client) { - type OrderCreated struct { - OrderId string `json:"orderId"` - Amount float64 `json:"amount"` - } - - type PaymentProcessed struct { - PaymentId string `json:"paymentId"` - Amount float64 `json:"amount"` - Method string `json:"method"` - } - - metadata := map[string]interface{}{ - "source": "web-store", - } - metadataBytes, _ := json.Marshal(metadata) - - orderData, _ := json.Marshal(OrderCreated{OrderId: "12345", Amount: 99.99}) - paymentData, _ := json.Marshal(PaymentProcessed{PaymentId: "PAY-789", Amount: 99.99, Method: "credit_card"}) - - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: "order-stream-1", - Events: slices.Values([]kurrentdb.EventData{{ - EventID: uuid.New(), - EventType: "OrderCreated", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - Metadata: metadataBytes, - }}), - ExpectedStreamState: kurrentdb.Any{}, - }, - { - StreamName: "payment-stream-1", - Events: slices.Values([]kurrentdb.EventData{{ - EventID: uuid.New(), - EventType: "PaymentProcessed", - ContentType: kurrentdb.ContentTypeJson, - Data: paymentData, - Metadata: metadataBytes, - }}), - ExpectedStreamState: kurrentdb.Any{}, - }, - } - - _, err := db.MultiStreamAppend(context.Background(), slices.Values(requests)) - if err != nil { - var streamRevisionConflictErr *kurrentdb.StreamRevisionConflictError - if errors.As(err, &streamRevisionConflictErr) { - log.Printf("Stream revision conflict on stream %s: expected %v but was %v", streamRevisionConflictErr.Stream, streamRevisionConflictErr.ExpectedRevision, streamRevisionConflictErr.ActualRevision) - } - } -} - -func AppendRecords(db *kurrentdb.Client) { - // region append-records - type OrderCreated struct { - OrderId string `json:"orderId"` - Amount float64 `json:"amount"` - } - - type InventoryReserved struct { - OrderId string `json:"orderId"` - Sku string `json:"sku"` - } - - orderData, _ := json.Marshal(OrderCreated{OrderId: "12345", Amount: 99.99}) - inventoryData, _ := json.Marshal(InventoryReserved{OrderId: "12345", Sku: "ITEM-001"}) - - // Records can be interleaved across streams - records := []kurrentdb.AppendRecord{ - { - Stream: "order-123", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "OrderCreated", - ContentType: kurrentdb.ContentTypeJson, - Data: orderData, - }, - }, - { - Stream: "inventory-ITEM-001", - Record: kurrentdb.EventData{ - EventID: uuid.New(), - EventType: "InventoryReserved", - ContentType: kurrentdb.ContentTypeJson, - Data: inventoryData, - }, - }, - } - - // Consistency checks are optional variadic arguments - result, err := db.AppendRecords(context.Background(), records, - kurrentdb.StreamStateCheck{ - Stream: "order-123", - ExpectedState: kurrentdb.NoStream{}, - }, - ) - if err != nil { - var violationErr *kurrentdb.AppendConsistencyViolationError - if errors.As(err, &violationErr) { - for _, v := range violationErr.Violations { - log.Printf("Check %d violated on stream %s: expected %v but was %v", - v.CheckIndex, v.Stream, v.ExpectedState, v.ActualState) - } - } - } - // endregion append-records - - log.Printf("Result: %v", result) -} diff --git a/samples/persistentSubscriptions.go b/samples/persistentSubscriptions.go index f80566e..d7f2005 100644 --- a/samples/persistentSubscriptions.go +++ b/samples/persistentSubscriptions.go @@ -6,12 +6,12 @@ import ( "log" "strings" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) -func createPersistentSubscription(client *kurrentdb.Client) { +func createPersistentSubscription(client *trogoneventstore.Client) { // #region create-persistent-subscription-to-stream - err := client.CreatePersistentSubscription(context.Background(), "test-stream", "subscription-group", kurrentdb.PersistentStreamSubscriptionOptions{}) + err := client.CreatePersistentSubscription(context.Background(), "test-stream", "subscription-group", trogoneventstore.PersistentStreamSubscriptionOptions{}) if err != nil { panic(err) @@ -19,9 +19,9 @@ func createPersistentSubscription(client *kurrentdb.Client) { // #endregion create-persistent-subscription-to-stream } -func connectToPersistentSubscriptionToStream(client *kurrentdb.Client) { +func connectToPersistentSubscriptionToStream(client *trogoneventstore.Client) { // #region subscribe-to-persistent-subscription-to-stream - sub, err := client.SubscribeToPersistentSubscription(context.Background(), "test-stream", "subscription-group", kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + sub, err := client.SubscribeToPersistentSubscription(context.Background(), "test-stream", "subscription-group", trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -41,9 +41,9 @@ func connectToPersistentSubscriptionToStream(client *kurrentdb.Client) { // #endregion subscribe-to-persistent-subscription-to-stream } -func connectToPersistentSubscriptionToAll(client *kurrentdb.Client) { +func connectToPersistentSubscriptionToAll(client *trogoneventstore.Client) { // #region subscribe-to-persistent-subscription-to-all - sub, err := client.SubscribeToPersistentSubscriptionToAll(context.Background(), "subscription-group", kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + sub, err := client.SubscribeToPersistentSubscriptionToAll(context.Background(), "subscription-group", trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -63,11 +63,11 @@ func connectToPersistentSubscriptionToAll(client *kurrentdb.Client) { // #endregion subscribe-to-persistent-subscription-to-all } -func createPersistentSubscriptionToAll(client *kurrentdb.Client) { +func createPersistentSubscriptionToAll(client *trogoneventstore.Client) { // #region create-persistent-subscription-to-all - options := kurrentdb.PersistentAllSubscriptionOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, + options := trogoneventstore.PersistentAllSubscriptionOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Prefixes: []string{"test"}, }, } @@ -80,9 +80,9 @@ func createPersistentSubscriptionToAll(client *kurrentdb.Client) { // #endregion create-persistent-subscription-to-all } -func connectToPersistentSubscriptionWithManualAcks(client *kurrentdb.Client) { +func connectToPersistentSubscriptionWithManualAcks(client *trogoneventstore.Client) { // #region subscribe-to-persistent-subscription-with-manual-acks - sub, err := client.SubscribeToPersistentSubscription(context.Background(), "test-stream", "subscription-group", kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + sub, err := client.SubscribeToPersistentSubscription(context.Background(), "test-stream", "subscription-group", trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -102,10 +102,10 @@ func connectToPersistentSubscriptionWithManualAcks(client *kurrentdb.Client) { // #endregion subscribe-to-persistent-subscription-with-manual-acks } -func updatePersistentSubscription(client *kurrentdb.Client) { +func updatePersistentSubscription(client *trogoneventstore.Client) { // #region update-persistent-subscription - options := kurrentdb.PersistentStreamSubscriptionOptions{ - Settings: &kurrentdb.PersistentSubscriptionSettings{ + options := trogoneventstore.PersistentStreamSubscriptionOptions{ + Settings: &trogoneventstore.PersistentSubscriptionSettings{ ResolveLinkTos: true, CheckpointLowerBound: 20, }, @@ -119,9 +119,9 @@ func updatePersistentSubscription(client *kurrentdb.Client) { // #endregion update-persistent-subscription } -func deletePersistentSubscription(client *kurrentdb.Client) { +func deletePersistentSubscription(client *trogoneventstore.Client) { // #region delete-persistent-subscription - err := client.DeletePersistentSubscription(context.Background(), "test-stream", "subscription-group", kurrentdb.DeletePersistentSubscriptionOptions{}) + err := client.DeletePersistentSubscription(context.Background(), "test-stream", "subscription-group", trogoneventstore.DeletePersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -129,9 +129,9 @@ func deletePersistentSubscription(client *kurrentdb.Client) { // #endregion delete-persistent-subscription } -func deletePersistentSubscriptionToAll(client *kurrentdb.Client) { +func deletePersistentSubscriptionToAll(client *trogoneventstore.Client) { // #region delete-persistent-subscription-all - err := client.DeletePersistentSubscriptionToAll(context.Background(), "test-stream", kurrentdb.DeletePersistentSubscriptionOptions{}) + err := client.DeletePersistentSubscriptionToAll(context.Background(), "test-stream", trogoneventstore.DeletePersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -139,9 +139,9 @@ func deletePersistentSubscriptionToAll(client *kurrentdb.Client) { // #endregion delete-persistent-subscription-all } -func getPersistentSubscriptionToStreamInfo(client *kurrentdb.Client) { +func getPersistentSubscriptionToStreamInfo(client *trogoneventstore.Client) { // #region get-persistent-subscription-to-stream-info - info, err := client.GetPersistentSubscriptionInfo(context.Background(), "test-stream", "subscription-group", kurrentdb.GetPersistentSubscriptionOptions{}) + info, err := client.GetPersistentSubscriptionInfo(context.Background(), "test-stream", "subscription-group", trogoneventstore.GetPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -151,9 +151,9 @@ func getPersistentSubscriptionToStreamInfo(client *kurrentdb.Client) { // #endregion get-persistent-subscription-to-stream-info } -func getPersistentSubscriptionToAllInfo(client *kurrentdb.Client) { +func getPersistentSubscriptionToAllInfo(client *trogoneventstore.Client) { // #region get-persistent-subscription-to-all-info - info, err := client.GetPersistentSubscriptionInfoToAll(context.Background(), "subscription-group", kurrentdb.GetPersistentSubscriptionOptions{}) + info, err := client.GetPersistentSubscriptionInfoToAll(context.Background(), "subscription-group", trogoneventstore.GetPersistentSubscriptionOptions{}) if err != nil { panic(err) @@ -163,9 +163,9 @@ func getPersistentSubscriptionToAllInfo(client *kurrentdb.Client) { // #endregion get-persistent-subscription-to-all-info } -func replayParkedToStream(client *kurrentdb.Client) { +func replayParkedToStream(client *trogoneventstore.Client) { // #region replay-parked-of-persistent-subscription-to-stream - err := client.ReplayParkedMessages(context.Background(), "test-stream", "subscription-group", kurrentdb.ReplayParkedMessagesOptions{ + err := client.ReplayParkedMessages(context.Background(), "test-stream", "subscription-group", trogoneventstore.ReplayParkedMessagesOptions{ StopAt: 10, }) @@ -175,9 +175,9 @@ func replayParkedToStream(client *kurrentdb.Client) { // #endregion replay-parked-of-persistent-subscription-to-stream } -func replayParkedToAll(client *kurrentdb.Client) { +func replayParkedToAll(client *trogoneventstore.Client) { // #region replay-parked-of-persistent-subscription-to-all - err := client.ReplayParkedMessagesToAll(context.Background(), "subscription-group", kurrentdb.ReplayParkedMessagesOptions{ + err := client.ReplayParkedMessagesToAll(context.Background(), "subscription-group", trogoneventstore.ReplayParkedMessagesOptions{ StopAt: 10, }) @@ -187,9 +187,9 @@ func replayParkedToAll(client *kurrentdb.Client) { // #endregion replay-parked-of-persistent-subscription-to-all } -func listPersistentSubscriptionsToStream(client *kurrentdb.Client) { +func listPersistentSubscriptionsToStream(client *trogoneventstore.Client) { // #region list-persistent-subscriptions-to-stream - subs, err := client.ListPersistentSubscriptionsForStream(context.Background(), "test-stream", kurrentdb.ListPersistentSubscriptionsOptions{}) + subs, err := client.ListPersistentSubscriptionsForStream(context.Background(), "test-stream", trogoneventstore.ListPersistentSubscriptionsOptions{}) if err != nil { panic(err) @@ -213,9 +213,9 @@ func listPersistentSubscriptionsToStream(client *kurrentdb.Client) { // #endregion list-persistent-subscriptions-to-stream } -func listPersistentSubscriptionsToAll(client *kurrentdb.Client) { +func listPersistentSubscriptionsToAll(client *trogoneventstore.Client) { // #region list-persistent-subscriptions-to-all - subs, err := client.ListPersistentSubscriptionsToAll(context.Background(), kurrentdb.ListPersistentSubscriptionsOptions{}) + subs, err := client.ListPersistentSubscriptionsToAll(context.Background(), trogoneventstore.ListPersistentSubscriptionsOptions{}) if err != nil { panic(err) @@ -239,9 +239,9 @@ func listPersistentSubscriptionsToAll(client *kurrentdb.Client) { // #endregion list-persistent-subscriptions-to-all } -func restartPersistentSubscriptionSubsystem(client *kurrentdb.Client) { +func restartPersistentSubscriptionSubsystem(client *trogoneventstore.Client) { // #region restart-persistent-subscription-subsystem - err := client.RestartPersistentSubscriptionSubsystem(context.Background(), kurrentdb.RestartPersistentSubscriptionSubsystemOptions{}) + err := client.RestartPersistentSubscriptionSubsystem(context.Background(), trogoneventstore.RestartPersistentSubscriptionSubsystemOptions{}) if err != nil { panic(err) diff --git a/samples/projectionManagement.go b/samples/projectionManagement.go index f1032f9..76b4fef 100644 --- a/samples/projectionManagement.go +++ b/samples/projectionManagement.go @@ -9,18 +9,18 @@ import ( "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) func CreateClient(connectionString string) { // region createClient - conf, err := kurrentdb.ParseConnectionString(connectionString) + conf, err := trogoneventstore.ParseConnectionString(connectionString) if err != nil { panic(err) } - client, err := kurrentdb.NewProjectionClient(conf) + client, err := trogoneventstore.NewProjectionClient(conf) if err != nil { panic(err) @@ -30,9 +30,9 @@ func CreateClient(connectionString string) { defer client.Close() } -func Disable(client *kurrentdb.ProjectionClient) { +func Disable(client *trogoneventstore.ProjectionClient) { // region Disable - err := client.Disable(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) + err := client.Disable(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -40,12 +40,12 @@ func Disable(client *kurrentdb.ProjectionClient) { // endregion Disable } -func DisableNotFound(client *kurrentdb.ProjectionClient) { +func DisableNotFound(client *trogoneventstore.ProjectionClient) { // region DisableNotFound - err := client.Disable(context.Background(), "projection that doesn't exist", kurrentdb.GenericProjectionOptions{}) + err := client.Disable(context.Background(), "projection that doesn't exist", trogoneventstore.GenericProjectionOptions{}) - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -53,9 +53,9 @@ func DisableNotFound(client *kurrentdb.ProjectionClient) { // endregion DisableNotFound } -func Enable(client *kurrentdb.ProjectionClient) { +func Enable(client *trogoneventstore.ProjectionClient) { // region Enable - err := client.Enable(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) + err := client.Enable(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -63,12 +63,12 @@ func Enable(client *kurrentdb.ProjectionClient) { // endregion Enable } -func EnableNotFound(client *kurrentdb.ProjectionClient) { +func EnableNotFound(client *trogoneventstore.ProjectionClient) { // region EnableNotFound - err := client.Enable(context.Background(), "projection that doesn't exist", kurrentdb.GenericProjectionOptions{}) + err := client.Enable(context.Background(), "projection that doesn't exist", trogoneventstore.GenericProjectionOptions{}) - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -76,9 +76,9 @@ func EnableNotFound(client *kurrentdb.ProjectionClient) { // endregion EnableNotFound } -func Delete(client *kurrentdb.ProjectionClient) { +func Delete(client *trogoneventstore.ProjectionClient) { // region Delete - err := client.Delete(context.Background(), "$by_category", kurrentdb.DeleteProjectionOptions{}) + err := client.Delete(context.Background(), "$by_category", trogoneventstore.DeleteProjectionOptions{}) if err != nil { panic(err) @@ -86,12 +86,12 @@ func Delete(client *kurrentdb.ProjectionClient) { // endregion Delete } -func DeleteNotFound(client *kurrentdb.ProjectionClient) { +func DeleteNotFound(client *trogoneventstore.ProjectionClient) { // region DeleteNotFound - err := client.Delete(context.Background(), "projection that doesn't exist", kurrentdb.DeleteProjectionOptions{}) + err := client.Delete(context.Background(), "projection that doesn't exist", trogoneventstore.DeleteProjectionOptions{}) - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -99,9 +99,9 @@ func DeleteNotFound(client *kurrentdb.ProjectionClient) { // endregion DeleteNotFound } -func Abort(client *kurrentdb.ProjectionClient) { +func Abort(client *trogoneventstore.ProjectionClient) { // region Abort - err := client.Abort(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) + err := client.Abort(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -109,12 +109,12 @@ func Abort(client *kurrentdb.ProjectionClient) { // endregion Abort } -func AbortNotFound(client *kurrentdb.ProjectionClient) { +func AbortNotFound(client *trogoneventstore.ProjectionClient) { // region Abort_NotFound - err := client.Abort(context.Background(), "projection that doesn't exist", kurrentdb.GenericProjectionOptions{}) + err := client.Abort(context.Background(), "projection that doesn't exist", trogoneventstore.GenericProjectionOptions{}) - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -122,9 +122,9 @@ func AbortNotFound(client *kurrentdb.ProjectionClient) { // endregion Abort_NotFound } -func Reset(client *kurrentdb.ProjectionClient) { +func Reset(client *trogoneventstore.ProjectionClient) { // region Reset - err := client.Reset(context.Background(), "$by_category", kurrentdb.ResetProjectionOptions{}) + err := client.Reset(context.Background(), "$by_category", trogoneventstore.ResetProjectionOptions{}) if err != nil { panic(err) @@ -132,12 +132,12 @@ func Reset(client *kurrentdb.ProjectionClient) { // endregion Reset } -func ResetNotFound(client *kurrentdb.ProjectionClient) { +func ResetNotFound(client *trogoneventstore.ProjectionClient) { // region Reset_NotFound - err := client.Reset(context.Background(), "projection that doesn't exist", kurrentdb.ResetProjectionOptions{}) + err := client.Reset(context.Background(), "projection that doesn't exist", trogoneventstore.ResetProjectionOptions{}) - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -145,7 +145,7 @@ func ResetNotFound(client *kurrentdb.ProjectionClient) { // endregion Reset_NotFound } -func Create(client *kurrentdb.ProjectionClient) { +func Create(client *trogoneventstore.ProjectionClient) { // region CreateContinuous script := ` fromAll() @@ -165,7 +165,7 @@ fromAll() .outputState() ` name := fmt.Sprintf("countEvent_Create_%s", uuid.New()) - err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{}) + err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{}) if err != nil { panic(err) @@ -174,26 +174,12 @@ fromAll() // endregion CreateContinuous } -func CreateV2Engine(client *kurrentdb.ProjectionClient) { - // region CreateContinuous_V2Engine - script := `fromAll().when({$init: function (state, ev) {return {};}});` - name := fmt.Sprintf("countEvent_CreateV2_%s", uuid.New()) - err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{ - EngineVersion: kurrentdb.ProjectionEngineVersionV2, - }) - - if err != nil { - panic(err) - } - // endregion CreateContinuous_V2Engine -} - -func CreateWithMetadata(client *kurrentdb.ProjectionClient) { - // region CreateContinuous_Metadata +func CreateWithAnnotations(client *trogoneventstore.ProjectionClient) { + // region CreateContinuous_Annotations script := `fromAll().when({$init: function (state, ev) {return {};}});` name := fmt.Sprintf("countEvent_CreateMeta_%s", uuid.New()) - err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{ - Metadata: map[string]interface{}{ + err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{ + Annotations: map[string]string{ "deploy": "abc123", "tool": "gaffer", }, @@ -202,18 +188,18 @@ func CreateWithMetadata(client *kurrentdb.ProjectionClient) { if err != nil { panic(err) } - // endregion CreateContinuous_Metadata + // endregion CreateContinuous_Annotations } -func CreateConflict(client *kurrentdb.ProjectionClient) { +func CreateConflict(client *trogoneventstore.ProjectionClient) { script := "" name := "" // region CreateContinuous_Conflict - err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{}) + err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{}) - if esdbErr, ok := kurrentdb.FromError(err); !ok { - if esdbErr.IsErrorCode(kurrentdb.ErrorCodeUnknown) && strings.Contains(esdbErr.Err().Error(), "Conflict") { + if esdbErr, ok := trogoneventstore.FromError(err); !ok { + if esdbErr.IsErrorCode(trogoneventstore.ErrorCodeUnknown) && strings.Contains(esdbErr.Err().Error(), "Conflict") { log.Printf("projection %s already exists", name) return } @@ -221,19 +207,19 @@ func CreateConflict(client *kurrentdb.ProjectionClient) { // endregion CreateContinuous_Conflict } -func Update(client *kurrentdb.ProjectionClient) { +func Update(client *trogoneventstore.ProjectionClient) { script := "" newScript := "" name := "" // region Update - err := client.Create(context.Background(), name, script, kurrentdb.CreateProjectionOptions{}) + err := client.Create(context.Background(), name, script, trogoneventstore.CreateProjectionOptions{}) if err != nil { panic(err) } - err = client.Update(context.Background(), name, newScript, kurrentdb.UpdateProjectionOptions{}) + err = client.Update(context.Background(), name, newScript, trogoneventstore.UpdateProjectionOptions{}) if err != nil { panic(err) @@ -242,14 +228,14 @@ func Update(client *kurrentdb.ProjectionClient) { } -func UpdateNotFound(client *kurrentdb.ProjectionClient) { +func UpdateNotFound(client *trogoneventstore.ProjectionClient) { script := "" // region Update_NotFound - err := client.Update(context.Background(), "projection that doesn't exist", script, kurrentdb.UpdateProjectionOptions{}) + err := client.Update(context.Background(), "projection that doesn't exist", script, trogoneventstore.UpdateProjectionOptions{}) - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.IsErrorCode(kurrentdb.ErrorCodeResourceNotFound) { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.IsErrorCode(trogoneventstore.ErrorCodeResourceNotFound) { log.Printf("projection not found") return } @@ -257,9 +243,9 @@ func UpdateNotFound(client *kurrentdb.ProjectionClient) { // endregion Update_NotFound } -func ListAll(client *kurrentdb.ProjectionClient) { +func ListAll(client *trogoneventstore.ProjectionClient) { // region ListAll - projections, err := client.ListAll(context.Background(), kurrentdb.GenericProjectionOptions{}) + projections, err := client.ListAll(context.Background(), trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -280,9 +266,9 @@ func ListAll(client *kurrentdb.ProjectionClient) { // endregion ListAll } -func List(client *kurrentdb.ProjectionClient) { +func List(client *trogoneventstore.ProjectionClient) { // region ListContinuous - projections, err := client.ListContinuous(context.Background(), kurrentdb.GenericProjectionOptions{}) + projections, err := client.ListContinuous(context.Background(), trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -303,9 +289,9 @@ func List(client *kurrentdb.ProjectionClient) { // endregion ListContinuous } -func GetStatus(client *kurrentdb.ProjectionClient) { +func GetStatus(client *trogoneventstore.ProjectionClient) { // region GetStatus - projection, err := client.GetStatus(context.Background(), "$by_category", kurrentdb.GenericProjectionOptions{}) + projection, err := client.GetStatus(context.Background(), "$by_category", trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) @@ -322,14 +308,14 @@ func GetStatus(client *kurrentdb.ProjectionClient) { // endregion GetStatus } -func GetState(client *kurrentdb.ProjectionClient) { +func GetState(client *trogoneventstore.ProjectionClient) { projectionName := "" // region GetState type Foobar struct { Count int64 } - value, err := client.GetState(context.Background(), projectionName, kurrentdb.GetStateProjectionOptions{}) + value, err := client.GetState(context.Background(), projectionName, trogoneventstore.GetStateProjectionOptions{}) if err != nil { panic(err) @@ -351,14 +337,14 @@ func GetState(client *kurrentdb.ProjectionClient) { // endregion GetState } -func GetResult(client *kurrentdb.ProjectionClient) { +func GetResult(client *trogoneventstore.ProjectionClient) { projectionName := "" // region GetResult type Baz struct { Result int64 } - value, err := client.GetResult(context.Background(), projectionName, kurrentdb.GetResultProjectionOptions{}) + value, err := client.GetResult(context.Background(), projectionName, trogoneventstore.GetResultProjectionOptions{}) if err != nil { panic(err) @@ -380,9 +366,9 @@ func GetResult(client *kurrentdb.ProjectionClient) { // endregion GetResult } -func RestartSubSystem(client *kurrentdb.ProjectionClient) { +func RestartSubSystem(client *trogoneventstore.ProjectionClient) { // region RestartSubSystem - err := client.RestartSubsystem(context.Background(), kurrentdb.GenericProjectionOptions{}) + err := client.RestartSubsystem(context.Background(), trogoneventstore.GenericProjectionOptions{}) if err != nil { panic(err) diff --git a/samples/quickstart.go b/samples/quickstart.go index 59ae205..a1accdb 100644 --- a/samples/quickstart.go +++ b/samples/quickstart.go @@ -9,18 +9,18 @@ import ( "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) func Run() { // region createClient - settings, err := kurrentdb.ParseConnectionString("{connectionString}") + settings, err := trogoneventstore.ParseConnectionString("{connectionString}") if err != nil { panic(err) } - db, err := kurrentdb.NewClient(settings) + db, err := trogoneventstore.NewClient(settings) // endregion createClient if err != nil { @@ -39,15 +39,15 @@ func Run() { panic(err) } - eventData := kurrentdb.EventData{ - ContentType: kurrentdb.ContentTypeJson, + eventData := trogoneventstore.EventData{ + ContentType: trogoneventstore.ContentTypeJson, EventType: "TestEvent", Data: data, } // endregion createEvent // region appendEvents - _, err = db.AppendToStream(context.Background(), "some-stream", kurrentdb.AppendToStreamOptions{}, eventData) + _, err = db.AppendToStream(context.Background(), "some-stream", trogoneventstore.AppendToStreamOptions{}, eventData) // endregion appendEvents if err != nil { @@ -55,7 +55,7 @@ func Run() { } // region readStream - stream, err := db.ReadStream(context.Background(), "some-stream", kurrentdb.ReadStreamOptions{}, 10) + stream, err := db.ReadStream(context.Background(), "some-stream", trogoneventstore.ReadStreamOptions{}, 10) if err != nil { panic(err) diff --git a/samples/readingEvents.go b/samples/readingEvents.go index ee42996..4a2b60d 100644 --- a/samples/readingEvents.go +++ b/samples/readingEvents.go @@ -7,14 +7,14 @@ import ( "io" "strings" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) -func ReadFromStream(db *kurrentdb.Client) { +func ReadFromStream(db *trogoneventstore.Client) { // region read-from-stream - options := kurrentdb.ReadStreamOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Forwards, + options := trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Forwards, } stream, err := db.ReadStream(context.Background(), "some-stream", options, 100) @@ -41,10 +41,10 @@ func ReadFromStream(db *kurrentdb.Client) { // endregion iterate-stream } -func ReadFromStreamPosition(db *kurrentdb.Client) { +func ReadFromStreamPosition(db *trogoneventstore.Client) { // region read-from-stream-position - ropts := kurrentdb.ReadStreamOptions{ - From: kurrentdb.Revision(10), + ropts := trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Revision(10), } stream, err := db.ReadStream(context.Background(), "some-stream", ropts, 20) @@ -72,11 +72,11 @@ func ReadFromStreamPosition(db *kurrentdb.Client) { // endregion iterate-stream } -func ReadStreamOverridingUserCredentials(db *kurrentdb.Client) { +func ReadStreamOverridingUserCredentials(db *trogoneventstore.Client) { // region overriding-user-credentials - options := kurrentdb.ReadStreamOptions{ - From: kurrentdb.Start{}, - Authenticated: &kurrentdb.Credentials{ + options := trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Start{}, + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, @@ -91,10 +91,10 @@ func ReadStreamOverridingUserCredentials(db *kurrentdb.Client) { stream.Close() } -func ReadFromStreamPositionCheck(db *kurrentdb.Client) { +func ReadFromStreamPositionCheck(db *trogoneventstore.Client) { // region checking-for-stream-presence - ropts := kurrentdb.ReadStreamOptions{ - From: kurrentdb.Revision(10), + ropts := trogoneventstore.ReadStreamOptions{ + From: trogoneventstore.Revision(10), } stream, err := db.ReadStream(context.Background(), "some-stream", ropts, 100) @@ -108,8 +108,8 @@ func ReadFromStreamPositionCheck(db *kurrentdb.Client) { for { event, err := stream.Recv() - if err, ok := kurrentdb.FromError(err); !ok { - if err.Code() == kurrentdb.ErrorCodeResourceNotFound { + if err, ok := trogoneventstore.FromError(err); !ok { + if err.Code() == trogoneventstore.ErrorCodeResourceNotFound { fmt.Print("Stream not found") } else if errors.Is(err, io.EOF) { break @@ -123,11 +123,11 @@ func ReadFromStreamPositionCheck(db *kurrentdb.Client) { // endregion checking-for-stream-presence } -func ReadStreamBackwards(db *kurrentdb.Client) { +func ReadStreamBackwards(db *trogoneventstore.Client) { // region reading-backwards - ropts := kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, + ropts := trogoneventstore.ReadStreamOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, } stream, err := db.ReadStream(context.Background(), "some-stream", ropts, 10) @@ -154,11 +154,11 @@ func ReadStreamBackwards(db *kurrentdb.Client) { // endregion reading-backwards } -func ReadFromAllStream(db *kurrentdb.Client) { +func ReadFromAllStream(db *trogoneventstore.Client) { // region read-from-all-stream - options := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Forwards, + options := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Forwards, } stream, err := db.ReadAll(context.Background(), options, 100) @@ -185,9 +185,9 @@ func ReadFromAllStream(db *kurrentdb.Client) { // endregion read-from-all-stream-iterate } -func IgnoreSystemEvents(db *kurrentdb.Client) { +func IgnoreSystemEvents(db *trogoneventstore.Client) { // region ignore-system-events - stream, err := db.ReadAll(context.Background(), kurrentdb.ReadAllOptions{}, 100) + stream, err := db.ReadAll(context.Background(), trogoneventstore.ReadAllOptions{}, 100) if err != nil { panic(err) @@ -217,11 +217,11 @@ func IgnoreSystemEvents(db *kurrentdb.Client) { // endregion ignore-system-events } -func ReadFromAllBackwards(db *kurrentdb.Client) { +func ReadFromAllBackwards(db *trogoneventstore.Client) { // region read-from-all-stream-backwards - ropts := kurrentdb.ReadAllOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, + ropts := trogoneventstore.ReadAllOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, } stream, err := db.ReadAll(context.Background(), ropts, 100) @@ -249,9 +249,9 @@ func ReadFromAllBackwards(db *kurrentdb.Client) { // endregion read-from-all-stream-backwards-iterate } -func ReadFromStreamResolvingLinkToS(db *kurrentdb.Client) { +func ReadFromStreamResolvingLinkToS(db *trogoneventstore.Client) { // region read-from-all-stream-resolving-link-Tos - ropts := kurrentdb.ReadAllOptions{ + ropts := trogoneventstore.ReadAllOptions{ ResolveLinkTos: true, } @@ -265,11 +265,11 @@ func ReadFromStreamResolvingLinkToS(db *kurrentdb.Client) { defer stream.Close() } -func ReadAllOverridingUserCredentials(db *kurrentdb.Client) { +func ReadAllOverridingUserCredentials(db *trogoneventstore.Client) { // region read-all-overriding-user-credentials - ropts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Authenticated: &kurrentdb.Credentials{ + ropts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, diff --git a/samples/serverSideFiltering.go b/samples/serverSideFiltering.go index 38d0127..88113b7 100644 --- a/samples/serverSideFiltering.go +++ b/samples/serverSideFiltering.go @@ -4,13 +4,13 @@ import ( "context" "fmt" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) -func ExcludeSystemEvents(db *kurrentdb.Client) { +func ExcludeSystemEvents(db *trogoneventstore.Client) { // region exclude-system - sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: kurrentdb.ExcludeSystemEventsFilter(), + sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: trogoneventstore.ExcludeSystemEventsFilter(), }) if err != nil { @@ -37,11 +37,11 @@ func ExcludeSystemEvents(db *kurrentdb.Client) { // endregion exclude-system } -func EventTypePrefix(db *kurrentdb.Client) { +func EventTypePrefix(db *trogoneventstore.Client) { // region event-type-prefix - sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, + sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Prefixes: []string{"customer-"}, }, }) @@ -70,11 +70,11 @@ func EventTypePrefix(db *kurrentdb.Client) { // endregion event-type-prefix } -func EventTypeRegex(db *kurrentdb.Client) { +func EventTypeRegex(db *trogoneventstore.Client) { // region event-type-regex - sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, + sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Regex: "^user|^company", }, }) @@ -103,11 +103,11 @@ func EventTypeRegex(db *kurrentdb.Client) { // endregion event-type-regex } -func StreamPrefix(db *kurrentdb.Client) { +func StreamPrefix(db *trogoneventstore.Client) { // region stream-prefix - sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, + sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Prefixes: []string{"user-"}, }, }) @@ -136,11 +136,11 @@ func StreamPrefix(db *kurrentdb.Client) { // endregion stream-prefix } -func StreamRegex(db *kurrentdb.Client) { +func StreamRegex(db *trogoneventstore.Client) { // region stream-regex - sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, + sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Regex: "^user|^company", }, }) @@ -169,11 +169,11 @@ func StreamRegex(db *kurrentdb.Client) { // endregion stream-regex } -func CheckpointCallbackWithInterval(db *kurrentdb.Client) { +func CheckpointCallbackWithInterval(db *trogoneventstore.Client) { // region checkpoint-with-interval - sub, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, + sub, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Regex: "/^[^\\$].*/", }, }) diff --git a/samples/subscribingToStream.go b/samples/subscribingToStream.go index 6590f23..53883d2 100644 --- a/samples/subscribingToStream.go +++ b/samples/subscribingToStream.go @@ -4,13 +4,13 @@ import ( "context" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) -func SubscribeToStream(db *kurrentdb.Client) { - options := kurrentdb.SubscribeToStreamOptions{} +func SubscribeToStream(db *trogoneventstore.Client) { + options := trogoneventstore.SubscribeToStreamOptions{} // region subscribe-to-stream - stream, err := db.SubscribeToStream(context.Background(), "some-stream", kurrentdb.SubscribeToStreamOptions{}) + stream, err := db.SubscribeToStream(context.Background(), "some-stream", trogoneventstore.SubscribeToStreamOptions{}) if err != nil { panic(err) @@ -32,22 +32,22 @@ func SubscribeToStream(db *kurrentdb.Client) { // endregion subscribe-to-stream // region subscribe-to-stream-from-position - db.SubscribeToStream(context.Background(), "some-stream", kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Revision(20), + db.SubscribeToStream(context.Background(), "some-stream", trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Revision(20), }) // endregion subscribe-to-stream-from-position // region subscribe-to-stream-live - options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.End{}, + options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.End{}, } db.SubscribeToStream(context.Background(), "some-stream", options) // endregion subscribe-to-stream-live // region subscribe-to-stream-resolving-linktos - options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, + options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, ResolveLinkTos: true, } @@ -55,8 +55,8 @@ func SubscribeToStream(db *kurrentdb.Client) { // endregion subscribe-to-stream-resolving-linktos // region subscribe-to-stream-subscription-dropped - options = kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, + options = trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, } for { @@ -78,17 +78,17 @@ func SubscribeToStream(db *kurrentdb.Client) { if event.EventAppeared != nil { // handles the event... - options.From = kurrentdb.Revision(event.EventAppeared.OriginalEvent().EventNumber) + options.From = trogoneventstore.Revision(event.EventAppeared.OriginalEvent().EventNumber) } } } // endregion subscribe-to-stream-subscription-dropped } -func SubscribeToAll(db *kurrentdb.Client) { - options := kurrentdb.SubscribeToAllOptions{} +func SubscribeToAll(db *trogoneventstore.Client) { + options := trogoneventstore.SubscribeToAllOptions{} // region subscribe-to-all - stream, err := db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{}) + stream, err := db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{}) if err != nil { panic(err) @@ -110,8 +110,8 @@ func SubscribeToAll(db *kurrentdb.Client) { // endregion subscribe-to-all // region subscribe-to-all-from-position - db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.Position{ + db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.Position{ Commit: 1_056, Prepare: 1_056, }, @@ -119,14 +119,14 @@ func SubscribeToAll(db *kurrentdb.Client) { // endregion subscribe-to-all-from-position // region subscribe-to-all-live - db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.End{}, + db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.End{}, }) // endregion subscribe-to-all-live // region subscribe-to-all-subscription-dropped - options = kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.Start{}, + options = trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.Start{}, } for { @@ -154,29 +154,29 @@ func SubscribeToAll(db *kurrentdb.Client) { // endregion subscribe-to-all-subscription-dropped } -func SubscribeToFiltered(db *kurrentdb.Client) { +func SubscribeToFiltered(db *trogoneventstore.Client) { // region stream-prefix-filtered-subscription - db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, + db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Prefixes: []string{"test-"}, }, }) // endregion stream-prefix-filtered-subscription // region stream-regex-filtered-subscription - db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.StreamFilterType, + db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.StreamFilterType, Regex: "/invoice-\\d\\d\\d/g", }, }) // endregion stream-regex-filtered-subscription } -func SubscribeToAllOverridingUserCredentials(db *kurrentdb.Client) { +func SubscribeToAllOverridingUserCredentials(db *trogoneventstore.Client) { // region overriding-user-credentials - db.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - Authenticated: &kurrentdb.Credentials{ + db.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, diff --git a/samples/userCertificates.go b/samples/userCertificates.go index c568b22..906f8e5 100644 --- a/samples/userCertificates.go +++ b/samples/userCertificates.go @@ -1,18 +1,18 @@ package samples import ( - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) func UserCertificates() { // region client-with-user-certificates - settings, err := kurrentdb.ParseConnectionString("kurrentdb://admin:changeit@{endpoint}?tls=true&userCertFile={pathToCaFile}&userKeyFile={pathToKeyFile}") + settings, err := trogoneventstore.ParseConnectionString("esdb://admin:changeit@{endpoint}?tls=true&userCertFile={pathToCaFile}&userKeyFile={pathToKeyFile}") if err != nil { panic(err) } - db, err := kurrentdb.NewClient(settings) + db, err := trogoneventstore.NewClient(settings) // endregion client-with-user-certificates if err != nil { diff --git a/shared.env b/shared.env index 3d74358..71a9e95 100644 --- a/shared.env +++ b/shared.env @@ -2,7 +2,7 @@ EVENTSTORE_CLUSTER_SIZE=3 EVENTSTORE_RUN_PROJECTIONS=All EVENTSTORE_REPLICATION_PORT=1112 EVENTSTORE_NODE_PORT=2113 -EVENTSTORE_TRUSTED_ROOT_CERTIFICATES_PATH=/etc/kurrentdb/certs/ca +EVENTSTORE_TRUSTED_ROOT_CERTIFICATES_PATH=/etc/eventstore/certs/ca EVENTSTORE_DISCOVER_VIA_DNS=false EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP=true EVENTSTORE_ADVERTISE_HOST_TO_CLIENT_AS=localhost diff --git a/test/append_records_test.go b/test/append_records_test.go deleted file mode 100644 index b271d58..0000000 --- a/test/append_records_test.go +++ /dev/null @@ -1,801 +0,0 @@ -package test - -import ( - "context" - "encoding/json" - "errors" - "testing" - - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/suite" -) - -type AppendRecordsTestSuite struct { - suite.Suite - fixture *ClientFixture - client *kurrentdb.Client -} - -func TestAppendRecordsSuite(t *testing.T) { - suite.Run(t, new(AppendRecordsTestSuite)) -} - -func (s *AppendRecordsTestSuite) SetupTest() { - s.fixture = NewInsecureClientFixture(s.T()) - s.fixture.RequireMinServerVersion(s.T(), 26, 1, 0, "AppendRecords requires KurrentDB 26.1+") - s.client = s.fixture.Client() -} - -func (s *AppendRecordsTestSuite) recordFor(stream string) kurrentdb.AppendRecord { - return kurrentdb.AppendRecord{ - Stream: stream, - Record: s.fixture.CreateTestEvent(), - } -} - -func (s *AppendRecordsTestSuite) assertConsistencyViolation(err error, expectedViolationCount int) *kurrentdb.AppendConsistencyViolationError { - s.T().Helper() - - kdbError, ok := kurrentdb.FromError(err) - assert.False(s.T(), ok) - assert.Equal(s.T(), kurrentdb.ErrorCodeAppendConsistencyViolation, kdbError.Code()) - - var violationErr *kurrentdb.AppendConsistencyViolationError - if !errors.As(err, &violationErr) { - s.T().Fatal("Expected AppendConsistencyViolationError") - } - - assert.Len(s.T(), violationErr.Violations, expectedViolationCount) - return violationErr -} - -// ==================== Base tests ==================== - -func (s *AppendRecordsTestSuite) TestAppendRecordsSingleStream() { - stream := s.fixture.NewStreamId() - events := []kurrentdb.AppendRecord{ - {Stream: stream, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event1"})}, - {Stream: stream, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event2"})}, - {Stream: stream, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event3"})}, - } - - result, err := s.client.AppendRecords(context.Background(), events) - - assert.NoError(s.T(), err) - assert.Greater(s.T(), result.Position, int64(0)) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestAppendRecordsMultipleStreams() { - stream1 := s.fixture.NewStreamId() - stream2 := s.fixture.NewStreamId() - - metadata, _ := json.Marshal(map[string]string{"Name": "Test User"}) - - records := []kurrentdb.AppendRecord{ - {Stream: stream1, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event1", Metadata: metadata})}, - {Stream: stream1, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event2", Metadata: metadata})}, - {Stream: stream1, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event3", Metadata: metadata})}, - {Stream: stream2, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event4", Metadata: metadata})}, - {Stream: stream2, Record: s.fixture.CreateTestEvent(TestEventOptions{EventType: "Event5", Metadata: metadata})}, - } - - result, err := s.client.AppendRecords(context.Background(), records) - - assert.NoError(s.T(), err) - assert.Greater(s.T(), result.Position, int64(0)) - assert.Len(s.T(), result.Responses, 2) -} - -func (s *AppendRecordsTestSuite) TestInterleavedTracksRevisions() { - stream1 := s.fixture.NewStreamId() - stream2 := s.fixture.NewStreamId() - - records := []kurrentdb.AppendRecord{ - {Stream: stream1, Record: s.fixture.CreateTestEvent()}, - {Stream: stream2, Record: s.fixture.CreateTestEvent()}, - {Stream: stream1, Record: s.fixture.CreateTestEvent()}, - {Stream: stream2, Record: s.fixture.CreateTestEvent()}, - {Stream: stream1, Record: s.fixture.CreateTestEvent()}, - } - - result, err := s.client.AppendRecords(context.Background(), records) - - assert.NoError(s.T(), err) - assert.Greater(s.T(), result.Position, int64(0)) - assert.Len(s.T(), result.Responses, 2) -} - -func (s *AppendRecordsTestSuite) TestAppendRecordsEmptyRecordsReturnsError() { - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{}) - - assert.Error(s.T(), err) - assert.Nil(s.T(), result) -} - -func (s *AppendRecordsTestSuite) TestAppendRecordsInvalidMetadataReturnsError() { - stream := s.fixture.NewStreamId() - records := []kurrentdb.AppendRecord{ - { - Stream: stream, - Record: kurrentdb.EventData{ - EventType: "TestEvent", - Data: []byte{0xb, 0xe, 0xe, 0xf}, - Metadata: []byte("invalid"), - }, - }, - } - - result, err := s.client.AppendRecords(context.Background(), records) - - assert.Error(s.T(), err) - assert.Nil(s.T(), result) -} - -// ==================== WriteOnly / WhenExpectingAny ==================== - -func (s *AppendRecordsTestSuite) TestWriteAny_SucceedsWhenStreamHasRevision() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 3) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteAny_SucceedsWhenStreamNotFound() { - stream := s.fixture.NewStreamId() - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteAny_SucceedsWhenStreamIsDeleted() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.DeleteStream(stream) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteAny_FailsWhenStreamIsTombstoned() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.TombstoneStream(stream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }) - - assert.Error(s.T(), err) -} - -// ==================== WriteOnly / WhenExpectingNoStream ==================== - -func (s *AppendRecordsTestSuite) TestWriteNoStream_SucceedsWhenStreamNotFound() { - stream := s.fixture.NewStreamId() - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteNoStream_SucceedsWhenStreamIsDeleted() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.DeleteStream(stream) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) -} - -func (s *AppendRecordsTestSuite) TestWriteNoStream_FailsWhenStreamHasRevision() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 3) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.NoStream{}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), stream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteNoStream_FailsWhenStreamIsTombstoned() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.TombstoneStream(stream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.Error(s.T(), err) -} - -// ==================== WriteOnly / WhenExpectingRevision ==================== - -func (s *AppendRecordsTestSuite) TestWriteRevision_SucceedsWhenStreamHasRevision() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 11) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteRevision_FailsWhenStreamNotFound() { - stream := s.fixture.NewStreamId() - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), stream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteRevision_FailsWhenStreamHasWrongRevision() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 5) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), stream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteRevision_FailsWhenStreamIsDeleted() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 3) - s.fixture.DeleteStream(stream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - assert.Error(s.T(), err) -} - -func (s *AppendRecordsTestSuite) TestWriteRevision_FailsWhenStreamIsTombstoned() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.TombstoneStream(stream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - assert.Error(s.T(), err) -} - -// ==================== WriteOnly / WhenExpectingExists ==================== - -func (s *AppendRecordsTestSuite) TestWriteExists_SucceedsWhenStreamHasRevision() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 3) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), stream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteExists_FailsWhenStreamNotFound() { - stream := s.fixture.NewStreamId() - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), stream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestWriteExists_FailsWhenStreamIsDeleted() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.DeleteStream(stream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - assert.Error(s.T(), err) -} - -func (s *AppendRecordsTestSuite) TestWriteExists_FailsWhenStreamIsTombstoned() { - stream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(stream, 1) - s.fixture.TombstoneStream(stream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(stream), - }, - kurrentdb.StreamStateCheck{Stream: stream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - assert.Error(s.T(), err) -} - -// ==================== CheckOnly / WhenExpectingNoStream ==================== - -func (s *AppendRecordsTestSuite) TestCheckNoStream_SucceedsWhenStreamNotFound() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckNoStream_SucceedsWhenStreamIsDeleted() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 1) - s.fixture.DeleteStream(checkStream) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckNoStream_SucceedsWhenStreamIsTombstoned() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 1) - s.fixture.TombstoneStream(checkStream) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckNoStream_FailsWhenStreamHasRevision() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 3) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.NoStream{}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -// ==================== CheckOnly / WhenExpectingRevision ==================== - -func (s *AppendRecordsTestSuite) TestCheckRevision_SucceedsWhenStreamHasRevision() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 11) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckRevision_FailsWhenStreamNotFound() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckRevision_FailsWhenStreamHasWrongRevision() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 5) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckRevision_FailsWhenStreamIsDeleted() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 3) - s.fixture.DeleteStream(checkStream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckRevision_FailsWhenStreamIsTombstoned() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 1) - s.fixture.TombstoneStream(checkStream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -// ==================== CheckOnly / WhenExpectingExists ==================== - -func (s *AppendRecordsTestSuite) TestCheckExists_SucceedsWhenStreamHasRevision() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 3) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckExists_FailsWhenStreamNotFound() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckExists_FailsWhenStreamIsDeleted() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 1) - s.fixture.DeleteStream(checkStream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestCheckExists_FailsWhenStreamIsTombstoned() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - s.fixture.CreateTestEvents(checkStream, 1) - s.fixture.TombstoneStream(checkStream) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamExists{}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} - -// ==================== CheckOnly / WhenMultipleChecks ==================== - -func (s *AppendRecordsTestSuite) TestMultipleChecks_SucceedsWhenAllChecksPass() { - writeStream := s.fixture.NewStreamId() - checkStreamA := s.fixture.NewStreamId() - checkStreamB := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(checkStreamA, 3) - s.fixture.CreateTestEvents(checkStreamB, 5) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStreamA, ExpectedState: kurrentdb.StreamRevision{Value: 2}}, - kurrentdb.StreamStateCheck{Stream: checkStreamB, ExpectedState: kurrentdb.StreamRevision{Value: 4}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_SucceedsWhenAllMixedCheckTypesPass() { - writeStream := s.fixture.NewStreamId() - revisionStream := s.fixture.NewStreamId() - existsStream := s.fixture.NewStreamId() - noStream := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(revisionStream, 3) - s.fixture.CreateTestEvents(existsStream, 1) - - result, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: revisionStream, ExpectedState: kurrentdb.StreamRevision{Value: 2}}, - kurrentdb.StreamStateCheck{Stream: existsStream, ExpectedState: kurrentdb.StreamExists{}}, - kurrentdb.StreamStateCheck{Stream: noStream, ExpectedState: kurrentdb.NoStream{}}, - ) - - assert.NoError(s.T(), err) - assert.Len(s.T(), result.Responses, 1) - assert.Equal(s.T(), writeStream, result.Responses[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_FailsWhenOneOfMultipleChecksFails() { - writeStream := s.fixture.NewStreamId() - checkStreamA := s.fixture.NewStreamId() - checkStreamB := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(checkStreamA, 3) - // checkStreamB not seeded — will fail the revision check - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStreamA, ExpectedState: kurrentdb.StreamRevision{Value: 2}}, - kurrentdb.StreamStateCheck{Stream: checkStreamB, ExpectedState: kurrentdb.StreamRevision{Value: 5}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), int32(1), v.Violations[0].CheckIndex) - assert.Equal(s.T(), checkStreamB, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_FailsWhenAllChecksFail() { - writeStream := s.fixture.NewStreamId() - checkStreamA := s.fixture.NewStreamId() - checkStreamB := s.fixture.NewStreamId() - - // Neither stream is seeded — both will fail - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStreamA, ExpectedState: kurrentdb.StreamRevision{Value: 3}}, - kurrentdb.StreamStateCheck{Stream: checkStreamB, ExpectedState: kurrentdb.StreamExists{}}, - ) - - v := s.assertConsistencyViolation(err, 2) - - var violationA, violationB *kurrentdb.ConsistencyViolation - for i := range v.Violations { - if v.Violations[i].Stream == checkStreamA { - violationA = &v.Violations[i] - } - if v.Violations[i].Stream == checkStreamB { - violationB = &v.Violations[i] - } - } - - assert.NotNil(s.T(), violationA) - assert.NotNil(s.T(), violationB) - assert.Equal(s.T(), int32(0), violationA.CheckIndex) - assert.Equal(s.T(), int32(1), violationB.CheckIndex) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_FailsWhenFirstCheckFailsAndSecondPasses() { - writeStream := s.fixture.NewStreamId() - checkStreamA := s.fixture.NewStreamId() - checkStreamB := s.fixture.NewStreamId() - - // checkStreamA not seeded — will fail the revision check - s.fixture.CreateTestEvents(checkStreamB, 6) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStreamA, ExpectedState: kurrentdb.StreamRevision{Value: 3}}, - kurrentdb.StreamStateCheck{Stream: checkStreamB, ExpectedState: kurrentdb.StreamRevision{Value: 5}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), int32(0), v.Violations[0].CheckIndex) - assert.Equal(s.T(), checkStreamA, v.Violations[0].Stream) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_FailsWhenTwoOfThreeChecksFail() { - writeStream := s.fixture.NewStreamId() - checkStreamA := s.fixture.NewStreamId() - checkStreamB := s.fixture.NewStreamId() - checkStreamC := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(checkStreamA, 3) - // checkStreamB not seeded — will fail - s.fixture.CreateTestEvents(checkStreamC, 2) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStreamA, ExpectedState: kurrentdb.StreamRevision{Value: 2}}, - kurrentdb.StreamStateCheck{Stream: checkStreamB, ExpectedState: kurrentdb.StreamExists{}}, - kurrentdb.StreamStateCheck{Stream: checkStreamC, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 2) - - var violationB, violationC *kurrentdb.ConsistencyViolation - for i := range v.Violations { - if v.Violations[i].Stream == checkStreamB { - violationB = &v.Violations[i] - } - if v.Violations[i].Stream == checkStreamC { - violationC = &v.Violations[i] - } - } - - assert.NotNil(s.T(), violationB) - assert.NotNil(s.T(), violationC) - assert.Equal(s.T(), int32(1), violationB.CheckIndex) - assert.Equal(s.T(), int32(2), violationC.CheckIndex) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_FailsWithMixedViolationStates() { - writeStream := s.fixture.NewStreamId() - deletedStream := s.fixture.NewStreamId() - tombstonedStream := s.fixture.NewStreamId() - missingStream := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(deletedStream, 3) - s.fixture.DeleteStream(deletedStream) - - s.fixture.CreateTestEvents(tombstonedStream, 1) - s.fixture.TombstoneStream(tombstonedStream) - - // missingStream not seeded - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: deletedStream, ExpectedState: kurrentdb.StreamExists{}}, - kurrentdb.StreamStateCheck{Stream: tombstonedStream, ExpectedState: kurrentdb.StreamExists{}}, - kurrentdb.StreamStateCheck{Stream: missingStream, ExpectedState: kurrentdb.StreamRevision{Value: 10}}, - ) - - v := s.assertConsistencyViolation(err, 3) - - var deletedV, tombstonedV, missingV *kurrentdb.ConsistencyViolation - for i := range v.Violations { - switch v.Violations[i].Stream { - case deletedStream: - deletedV = &v.Violations[i] - case tombstonedStream: - tombstonedV = &v.Violations[i] - case missingStream: - missingV = &v.Violations[i] - } - } - - assert.NotNil(s.T(), deletedV) - assert.NotNil(s.T(), tombstonedV) - assert.NotNil(s.T(), missingV) - assert.Equal(s.T(), int32(0), deletedV.CheckIndex) - assert.Equal(s.T(), int32(1), tombstonedV.CheckIndex) - assert.Equal(s.T(), int32(2), missingV.CheckIndex) -} - -func (s *AppendRecordsTestSuite) TestMultipleChecks_FailsWhenCheckOnWriteTargetAndSeparateCheckFails() { - checkStream := s.fixture.NewStreamId() - writeStream := s.fixture.NewStreamId() - - // checkStream not seeded — will fail - s.fixture.CreateTestEvents(writeStream, 4) - - _, err := s.client.AppendRecords(context.Background(), []kurrentdb.AppendRecord{ - s.recordFor(writeStream), - }, - kurrentdb.StreamStateCheck{Stream: checkStream, ExpectedState: kurrentdb.StreamRevision{Value: 5}}, - kurrentdb.StreamStateCheck{Stream: writeStream, ExpectedState: kurrentdb.StreamRevision{Value: 3}}, - ) - - v := s.assertConsistencyViolation(err, 1) - assert.Equal(s.T(), int32(0), v.Violations[0].CheckIndex) - assert.Equal(s.T(), checkStream, v.Violations[0].Stream) -} diff --git a/test/append_test.go b/test/append_test.go index 5b8ca35..71a016a 100644 --- a/test/append_test.go +++ b/test/append_test.go @@ -5,8 +5,8 @@ import ( "testing" "time" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -33,13 +33,13 @@ func (s *AppendTestSuite) TestAppendToStreamSingleEventNoStream() { streamId := s.fixture.NewStreamId() ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.AppendToStreamOptions{StreamState: kurrentdb.NoStream{}} + opts := trogoneventstore.AppendToStreamOptions{StreamState: trogoneventstore.NoStream{}} // Act _, err := client.AppendToStream(ctx, streamId, opts, testEvent) assert.NoError(s.T(), err, "Unexpected failure when appending to stream") - stream, err := client.ReadStream(ctx, streamId, kurrentdb.ReadStreamOptions{}, 1) + stream, err := client.ReadStream(ctx, streamId, trogoneventstore.ReadStreamOptions{}, 1) assert.NoError(s.T(), err, "Unexpected failure when reading stream") defer stream.Close() @@ -62,15 +62,15 @@ func (s *AppendTestSuite) TestAppendToStreamFailsOnNonExistentStream() { streamId := s.fixture.NewStreamId() ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.AppendToStreamOptions{StreamState: kurrentdb.StreamExists{}} + opts := trogoneventstore.AppendToStreamOptions{StreamState: trogoneventstore.StreamExists{}} // Act _, err := client.AppendToStream(ctx, streamId, opts, s.fixture.CreateTestEvent()) - kurrentDbError, ok := kurrentdb.FromError(err) + serverError, ok := trogoneventstore.FromError(err) // Assert assert.False(s.T(), ok) - assert.Equal(s.T(), kurrentdb.ErrorCodeWrongExpectedVersion, kurrentDbError.Code()) + assert.Equal(s.T(), trogoneventstore.ErrorCodeWrongExpectedVersion, serverError.Code()) } func (s *AppendTestSuite) TestMetadataOperation() { @@ -80,14 +80,14 @@ func (s *AppendTestSuite) TestMetadataOperation() { streamId := s.fixture.NewStreamId() ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.AppendToStreamOptions{StreamState: kurrentdb.Any{}} + opts := trogoneventstore.AppendToStreamOptions{StreamState: trogoneventstore.Any{}} _, err := client.AppendToStream(ctx, streamId, opts, s.fixture.CreateTestEvent()) assert.NoError(s.T(), err, "Error writing event") - acl := kurrentdb.Acl{} + acl := trogoneventstore.Acl{} acl.AddReadRoles("admin") - meta := kurrentdb.StreamMetadata{} + meta := trogoneventstore.StreamMetadata{} meta.SetMaxAge(2 * time.Second) meta.SetAcl(acl) @@ -95,7 +95,7 @@ func (s *AppendTestSuite) TestMetadataOperation() { assert.NoError(s.T(), err, "Error writing stream metadata") assert.NotNil(s.T(), result, "Metadata write result should not be nil") - metaActual, err := client.GetStreamMetadata(ctx, streamId, kurrentdb.ReadStreamOptions{}) + metaActual, err := client.GetStreamMetadata(ctx, streamId, trogoneventstore.ReadStreamOptions{}) assert.NoError(s.T(), err, "Error reading stream metadata") assert.Equal(s.T(), meta, *metaActual, "Metadata should match") } diff --git a/test/auth_insecure_test.go b/test/auth_insecure_test.go index b1177e6..b1a67a4 100644 --- a/test/auth_insecure_test.go +++ b/test/auth_insecure_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/suite" ) @@ -31,7 +31,7 @@ func (s *InsecureAuthSuite) TestCallInsecureWithoutCredentials() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - err := client.CreatePersistentSubscription(ctx, s.fixture.NewStreamId(), s.fixture.NewGroupId(), kurrentdb.PersistentStreamSubscriptionOptions{}) + err := client.CreatePersistentSubscription(ctx, s.fixture.NewStreamId(), s.fixture.NewGroupId(), trogoneventstore.PersistentStreamSubscriptionOptions{}) s.NoError(err) } @@ -40,8 +40,8 @@ func (s *InsecureAuthSuite) TestCallInsecureWithInvalidCredentials() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.PersistentStreamSubscriptionOptions{ - Authenticated: &kurrentdb.Credentials{ + opts := trogoneventstore.PersistentStreamSubscriptionOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "invalid", Password: "invalid", }, diff --git a/test/auth_oauth_test.go b/test/auth_oauth_test.go index 55d2c3b..819394f 100644 --- a/test/auth_oauth_test.go +++ b/test/auth_oauth_test.go @@ -2,42 +2,29 @@ package test import ( "context" - "crypto/tls" "encoding/json" "fmt" "io" "net/http" "net/url" + "os" "testing" "time" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" "github.com/stretchr/testify/suite" ) -// These tests run against the OAuth stack in docker-compose.oauth.yml -// (Keycloak + a KurrentDB node configured for OAuth). Bring it up with -// `make start-oauth` (requires KURRENTDB_LICENSE_KEY); the suite skips when it -// is not running. const ( - oauthTokenEndpoint = "https://localhost:8443/realms/kurrent/protocol/openid-connect/token" - oauthNodeConnString = "kurrentdb://localhost:2116?tls=true&tlscafile=../certs/ca/ca.crt" + oauthTokenEndpoint = "http://localhost:18080/realms/trogon-eventstore/protocol/openid-connect/token" + oauthNodeConnString = "esdb://localhost:2116?tls=true&tlscafile=../certs/ca/ca.crt" ) -// fetchOAuthToken obtains an access token from Keycloak using the resource -// owner password grant (the realm enables direct access grants for tests). func fetchOAuthToken(username, password string) (string, error) { - httpClient := &http.Client{ - Timeout: 5 * time.Second, - // Test-only: Keycloak serves the self-signed test CA. Do not copy this - // into non-test code - a real token source must validate the IdP cert. - Transport: &http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}, - } - - resp, err := httpClient.PostForm(oauthTokenEndpoint, url.Values{ + response, err := (&http.Client{Timeout: 5 * time.Second}).PostForm(oauthTokenEndpoint, url.Values{ "grant_type": {"password"}, - "client_id": {"kurrentdb-client"}, + "client_id": {"trogon-eventstore-client"}, "username": {username}, "password": {password}, "scope": {"openid"}, @@ -45,135 +32,116 @@ func fetchOAuthToken(username, password string) (string, error) { if err != nil { return "", err } - defer resp.Body.Close() + defer response.Body.Close() - body, err := io.ReadAll(resp.Body) + body, err := io.ReadAll(response.Body) if err != nil { return "", err } - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("token endpoint returned %d: %s", resp.StatusCode, body) + if response.StatusCode != http.StatusOK { + return "", fmt.Errorf("token endpoint returned %d: %s", response.StatusCode, body) } - var out struct { + var token struct { AccessToken string `json:"access_token"` } - if err := json.Unmarshal(body, &out); err != nil { + if err := json.Unmarshal(body, &token); err != nil { return "", err } - if out.AccessToken == "" { - return "", fmt.Errorf("no access_token in response") + if token.AccessToken == "" { + return "", fmt.Errorf("token endpoint returned no access token") } - return out.AccessToken, nil + return token.AccessToken, nil } -// bearerProvider returns a provider that supplies a freshly minted token for -// the given user on each call. -func bearerProvider(username, password string) kurrentdb.CredentialsProvider { - return func(context.Context) (*kurrentdb.Credentials, error) { +func bearerProvider(username, password string) trogoneventstore.CredentialsProvider { + return func(context.Context) (*trogoneventstore.Credentials, error) { token, err := fetchOAuthToken(username, password) if err != nil { return nil, err } - return &kurrentdb.Credentials{BearerToken: token}, nil + return &trogoneventstore.Credentials{BearerToken: token}, nil + } +} + +func staticBearer(token string) trogoneventstore.CredentialsProvider { + return func(context.Context) (*trogoneventstore.Credentials, error) { + return &trogoneventstore.Credentials{BearerToken: token}, nil } } func TestOAuthAuthenticationSuite(t *testing.T) { - suite.Run(t, new(OAuthAuthTestSuite)) + if os.Getenv("TROGON_EVENTSTORE_OAUTH_TESTS") != "1" { + t.Skip("set TROGON_EVENTSTORE_OAUTH_TESTS=1 to run the OAuth integration suite") + } + suite.Run(t, new(OAuthAuthenticationSuite)) } -type OAuthAuthTestSuite struct { +type OAuthAuthenticationSuite struct { suite.Suite } -// SetupSuite skips the suite unless the whole OAuth stack is up and working: -// Keycloak issues a token AND the OAuth node accepts it. This guarantees that -// a failure in the negative tests below is about the credentials under test, -// not an unavailable or unhealthy stack. -func (s *OAuthAuthTestSuite) SetupSuite() { +func (s *OAuthAuthenticationSuite) SetupSuite() { token, err := fetchOAuthToken("admin", "changeit") - if err != nil { - s.T().Skipf("OAuth stack not available (run `make start-oauth`): %v", err) - } + s.Require().NoError(err, "OAuth stack must be available") client := s.newClient(staticBearer(token)) defer client.Close() - if err := s.createSubscription(client, kurrentdb.PersistentStreamSubscriptionOptions{}); err != nil { - s.T().Skipf("OAuth node not ready (run `make start-oauth`): %v", err) - } -} - -func staticBearer(token string) kurrentdb.CredentialsProvider { - return func(context.Context) (*kurrentdb.Credentials, error) { - return &kurrentdb.Credentials{BearerToken: token}, nil + if err := s.createSubscription(client, trogoneventstore.PersistentStreamSubscriptionOptions{}); err != nil { + s.T().Fatalf("OAuth server rejected a valid administrator token: %v", err) } } -func (s *OAuthAuthTestSuite) newClient(provider kurrentdb.CredentialsProvider) *kurrentdb.Client { - config, err := kurrentdb.ParseConnectionString(oauthNodeConnString) - s.Require().NoError(err, "Failed to parse connection string") - config.CredentialsProvider = provider - - client, err := kurrentdb.NewClient(config) - s.Require().NoError(err, "Failed to create KurrentDB client") +func (s *OAuthAuthenticationSuite) newClient(provider trogoneventstore.CredentialsProvider) *trogoneventstore.Client { + configuration, err := trogoneventstore.ParseConnectionString(oauthNodeConnString) + s.Require().NoError(err) + configuration.CredentialsProvider = provider + client, err := trogoneventstore.NewClient(configuration) + s.Require().NoError(err) return client } -// createSubscription performs an admin-authorized operation, used as the probe -// for whether authentication and authorization succeeded. -func (s *OAuthAuthTestSuite) createSubscription(client *kurrentdb.Client, opts kurrentdb.PersistentStreamSubscriptionOptions) error { +func (s *OAuthAuthenticationSuite) createSubscription(client *trogoneventstore.Client, options trogoneventstore.PersistentStreamSubscriptionOptions) error { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - - return client.CreatePersistentSubscription(ctx, uuid.NewString(), uuid.NewString(), opts) + return client.CreatePersistentSubscription(ctx, uuid.NewString(), uuid.NewString(), options) } -func (s *OAuthAuthTestSuite) TestProviderWithValidTokenSucceeds() { +func (s *OAuthAuthenticationSuite) TestProviderTokenSucceeds() { client := s.newClient(bearerProvider("admin", "changeit")) defer client.Close() - - err := s.createSubscription(client, kurrentdb.PersistentStreamSubscriptionOptions{}) - s.NoError(err, "a valid bearer token from the provider should authenticate") + s.NoError(s.createSubscription(client, trogoneventstore.PersistentStreamSubscriptionOptions{})) } -func (s *OAuthAuthTestSuite) TestPerCallBearerTokenSucceeds() { +func (s *OAuthAuthenticationSuite) TestPerCallTokenSucceeds() { token, err := fetchOAuthToken("admin", "changeit") s.Require().NoError(err) - client := s.newClient(nil) defer client.Close() - err = s.createSubscription(client, kurrentdb.PersistentStreamSubscriptionOptions{ - Authenticated: &kurrentdb.Credentials{BearerToken: token}, - }) - s.NoError(err, "a valid per-call bearer token should authenticate") + s.NoError(s.createSubscription(client, trogoneventstore.PersistentStreamSubscriptionOptions{ + Authenticated: &trogoneventstore.Credentials{BearerToken: token}, + })) } -func (s *OAuthAuthTestSuite) TestValidTokenWithoutRequiredRoleIsDenied() { - // The "noroles" user authenticates but lacks the role to manage persistent - // subscriptions: the token is accepted (authentication) but the operation - // is rejected (authorization). +func (s *OAuthAuthenticationSuite) TestTokenWithoutRequiredRoleIsDenied() { client := s.newClient(bearerProvider("noroles", "changeit")) defer client.Close() - err := s.createSubscription(client, kurrentdb.PersistentStreamSubscriptionOptions{}) - kErr, _ := kurrentdb.FromError(err) - s.Require().NotNil(kErr) - s.True(kErr.IsErrorCode(kurrentdb.ErrorCodeAccessDenied), "expected access denied, got %v", err) + err := s.createSubscription(client, trogoneventstore.PersistentStreamSubscriptionOptions{}) + clientError, _ := trogoneventstore.FromError(err) + s.Require().NotNil(clientError) + s.True(clientError.IsErrorCode(trogoneventstore.ErrorCodeAccessDenied), "expected access denied, got %v", err) } -func (s *OAuthAuthTestSuite) TestProviderErrorFails() { - client := s.newClient(func(context.Context) (*kurrentdb.Credentials, error) { +func (s *OAuthAuthenticationSuite) TestProviderErrorIsReturned() { + client := s.newClient(func(context.Context) (*trogoneventstore.Credentials, error) { return nil, fmt.Errorf("token source unavailable") }) defer client.Close() - err := s.createSubscription(client, kurrentdb.PersistentStreamSubscriptionOptions{}) - s.Require().Error(err) - // The provider's error propagates through to the caller, proving the failure - // originated in credential resolution rather than the transport. + err := s.createSubscription(client, trogoneventstore.PersistentStreamSubscriptionOptions{}) s.ErrorContains(err, "token source unavailable") } diff --git a/test/auth_secure_test.go b/test/auth_secure_test.go index 3ae61aa..ec2737a 100644 --- a/test/auth_secure_test.go +++ b/test/auth_secure_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/suite" ) @@ -32,7 +32,7 @@ func (s *SecureAuthTestSuite) TestCallWithTLSAndDefaultCredentials() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - err := s.fixture.client.CreatePersistentSubscription(ctx, fixture.NewStreamId(), fixture.NewGroupId(), kurrentdb.PersistentStreamSubscriptionOptions{}) + err := s.fixture.client.CreatePersistentSubscription(ctx, fixture.NewStreamId(), fixture.NewGroupId(), trogoneventstore.PersistentStreamSubscriptionOptions{}) s.NoError(err, "Unexpected failure") } @@ -42,8 +42,8 @@ func (s *SecureAuthTestSuite) TestCallWithTLSAndOverrideCredentials() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.PersistentStreamSubscriptionOptions{ - Authenticated: &kurrentdb.Credentials{ + opts := trogoneventstore.PersistentStreamSubscriptionOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, @@ -59,8 +59,8 @@ func (s *SecureAuthTestSuite) TestCallWithTLSAndInvalidOverrideCredentials() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.PersistentStreamSubscriptionOptions{ - Authenticated: &kurrentdb.Credentials{ + opts := trogoneventstore.PersistentStreamSubscriptionOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "invalid", Password: "invalid", }, diff --git a/test/client_certificates_test.go b/test/client_certificates_test.go index 0e60c6b..475d79b 100644 --- a/test/client_certificates_test.go +++ b/test/client_certificates_test.go @@ -10,7 +10,7 @@ package test // "testing" // // "github.com/google/uuid" -// "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" +// "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" // "github.com/stretchr/testify/assert" // "github.com/stretchr/testify/require" //) @@ -23,12 +23,12 @@ package test // userCertFile := "../certs/user-admin/user-admin.crt" // userKeyFile := "../certs/user-admin/user-admin.key" // -// config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&userCertFile=%s&userKeyFile=%s", endpoint, tlsCaFile, userCertFile, userKeyFile)) +// config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&userCertFile=%s&userKeyFile=%s", endpoint, tlsCaFile, userCertFile, userKeyFile)) // if err != nil { // t.Fatalf("Unexpected configuration error: %s", err.Error()) // } // -// c, err := kurrentdb.NewClient(config) +// c, err := trogoneventstore.NewClient(config) // if err != nil { // t.Fatalf("Unexpected error: %s", err.Error()) // } @@ -36,9 +36,9 @@ package test // // numberOfEventsToRead := 1 // numberOfEvents := uint64(numberOfEventsToRead) -// opts := kurrentdb.ReadAllOptions{ -// From: kurrentdb.Start{}, -// Direction: kurrentdb.Backwards, +// opts := trogoneventstore.ReadAllOptions{ +// From: trogoneventstore.Start{}, +// Direction: trogoneventstore.Backwards, // ResolveLinkTos: true, // } // @@ -66,12 +66,12 @@ package test // t.Fatalf("Unexpected error: %s", err.Error()) // } // -// config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&usercertfile=%s&userkeyfile=%s", endpoint, tlsCaFile, userCertFile, userKeyFile)) +// config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&usercertfile=%s&userkeyfile=%s", endpoint, tlsCaFile, userCertFile, userKeyFile)) // if err != nil { // t.Fatalf("Unexpected configuration error: %s", err.Error()) // } // -// c, err := kurrentdb.NewClient(config) +// c, err := trogoneventstore.NewClient(config) // if err != nil { // t.Fatalf("Unexpected error: %s", err.Error()) // } @@ -79,9 +79,9 @@ package test // // numberOfEventsToRead := 1 // numberOfEvents := uint64(numberOfEventsToRead) -// opts := kurrentdb.ReadAllOptions{ -// From: kurrentdb.Start{}, -// Direction: kurrentdb.Backwards, +// opts := trogoneventstore.ReadAllOptions{ +// From: trogoneventstore.Start{}, +// Direction: trogoneventstore.Backwards, // ResolveLinkTos: true, // } // @@ -98,12 +98,12 @@ package test // userCertFile := "../certs/user-invalid/user-invalid.crt" // userKeyFile := "../certs/user-invalid/user-invalid.key" // -// config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&usercertfile=%s&userkeyfile=%s", endpoint, tlsCaFile, userCertFile, userKeyFile)) +// config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&usercertfile=%s&userkeyfile=%s", endpoint, tlsCaFile, userCertFile, userKeyFile)) // if err != nil { // t.Fatalf("Unexpected configuration error: %s", err.Error()) // } // -// c, err := kurrentdb.NewClient(config) +// c, err := trogoneventstore.NewClient(config) // if err != nil { // t.Fatalf("Unexpected error: %s", err.Error()) // } @@ -112,8 +112,8 @@ package test // testEvent := fixture.CreateTestEvent() // // streamID := uuid.NewString() -// opts := kurrentdb.AppendToStreamOptions{ -// StreamState: kurrentdb.Any{}, +// opts := trogoneventstore.AppendToStreamOptions{ +// StreamState: trogoneventstore.Any{}, // } // // result, err := c.AppendToStream(context.Background(), streamID, opts, testEvent) @@ -126,12 +126,12 @@ package test // tlsCaFile := "../certs/ca/ca.crt" // userCertFile := "../certs/user-admin/user-admin.crt" // -// config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&usercertfile=%s", endpoint, tlsCaFile, userCertFile)) +// config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlscafile=%s&usercertfile=%s", endpoint, tlsCaFile, userCertFile)) // -// _, err = kurrentdb.NewClient(config) -// kurrentDbError, ok := kurrentdb.FromError(err) +// _, err = trogoneventstore.NewClient(config) +// serverError, ok := trogoneventstore.FromError(err) // require.False(t, ok) -// require.NotNil(t, kurrentDbError) -// assert.Contains(t, kurrentDbError.Error(), "both userCertFile and userKeyFile must be provided") +// require.NotNil(t, serverError) +// assert.Contains(t, serverError.Error(), "both userCertFile and userKeyFile must be provided") // }) //} diff --git a/test/client_fixture_test.go b/test/client_fixture_test.go index df6bd12..d0aab7d 100644 --- a/test/client_fixture_test.go +++ b/test/client_fixture_test.go @@ -11,33 +11,33 @@ import ( "testing" "time" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" "github.com/stretchr/testify/require" ) -type KurrentDBVersion struct { +type TrogonEventStoreVersion struct { Maj int Min int Patch int } -type VersionPredicateFn = func(KurrentDBVersion) bool +type VersionPredicateFn = func(TrogonEventStoreVersion) bool type ClientFixture struct { mu sync.Mutex - client *kurrentdb.Client - config *kurrentdb.Configuration + client *trogoneventstore.Client + config *trogoneventstore.Configuration } func NewInsecureClientFixture(t *testing.T) *ClientFixture { t.Helper() - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("kurrentdb://admin:changeit@localhost:2114?tls=false")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2114?tls=false")) require.NoError(t, err, "Failed to parse connection string") - client, err := kurrentdb.NewClient(config) - require.NoError(t, err, "Failed to create KurrentDB client") + client, err := trogoneventstore.NewClient(config) + require.NoError(t, err, "Failed to create TrogonEventStore client") return &ClientFixture{ client: client, @@ -49,11 +49,11 @@ func NewSecureSingleNodeClientFixture(t *testing.T) *ClientFixture { t.Helper() tlsCaFile := "../certs/ca/ca.crt" - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("kurrentdb://admin:changeit@localhost:2115?tls=true&tlscafile=%s", tlsCaFile)) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2115?tls=true&tlscafile=%s", tlsCaFile)) require.NoError(t, err, "Failed to parse connection string") - client, err := kurrentdb.NewClient(config) - require.NoError(t, err, "Failed to create KurrentDB client") + client, err := trogoneventstore.NewClient(config) + require.NoError(t, err, "Failed to create TrogonEventStore client") return &ClientFixture{ client: client, @@ -65,11 +65,11 @@ func NewSecureClusterClientFixture(t *testing.T) *ClientFixture { t.Helper() tlsCaFile := "../certs/ca/ca.crt" - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("kurrentdb://admin:changeit@localhost:2111,localhost:2112,localhost:2113?tls=true&tlscafile=%s", tlsCaFile)) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2111,localhost:2112,localhost:2113?tls=true&tlscafile=%s", tlsCaFile)) require.NoError(t, err, "Failed to parse connection string") - client, err := kurrentdb.NewClient(config) - require.NoError(t, err, "Failed to create KurrentDB client") + client, err := trogoneventstore.NewClient(config) + require.NoError(t, err, "Failed to create TrogonEventStore client") return &ClientFixture{ client: client, @@ -77,24 +77,24 @@ func NewSecureClusterClientFixture(t *testing.T) *ClientFixture { } } -func (f *ClientFixture) Client() *kurrentdb.Client { +func (f *ClientFixture) Client() *trogoneventstore.Client { return f.client } -func (f *ClientFixture) ProjectionClient() *kurrentdb.ProjectionClient { - return kurrentdb.NewProjectionClientFromExistingClient(f.client) +func (f *ClientFixture) ProjectionClient() *trogoneventstore.ProjectionClient { + return trogoneventstore.NewProjectionClientFromExistingClient(f.client) } type TestEventOptions struct { EventType string - ContentType kurrentdb.ContentType + ContentType trogoneventstore.ContentType Data []byte Metadata []byte } -func (f *ClientFixture) CreateTestEvent(options ...TestEventOptions) kurrentdb.EventData { +func (f *ClientFixture) CreateTestEvent(options ...TestEventOptions) trogoneventstore.EventData { eventType := "TestEvent" - contentType := kurrentdb.ContentTypeBinary + contentType := trogoneventstore.ContentTypeBinary data := []byte{0xb, 0xe, 0xe, 0xf} var metadata []byte @@ -114,7 +114,7 @@ func (f *ClientFixture) CreateTestEvent(options ...TestEventOptions) kurrentdb.E } } - event := kurrentdb.EventData{ + event := trogoneventstore.EventData{ EventType: eventType, ContentType: contentType, EventID: uuid.New(), @@ -125,8 +125,8 @@ func (f *ClientFixture) CreateTestEvent(options ...TestEventOptions) kurrentdb.E return event } -func (f *ClientFixture) CreateTestEvents(streamId string, count uint32) []kurrentdb.EventData { - events := make([]kurrentdb.EventData, count) +func (f *ClientFixture) CreateTestEvents(streamId string, count uint32) []trogoneventstore.EventData { + events := make([]trogoneventstore.EventData, count) var i uint32 = 0 for ; i < count; i++ { events[i] = f.CreateTestEvent(TestEventOptions{ @@ -137,8 +137,8 @@ func (f *ClientFixture) CreateTestEvents(streamId string, count uint32) []kurren ctx, cancel := context.WithTimeout(context.Background(), time.Duration(5)*time.Second) defer cancel() - opts := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.Any{}, + opts := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.Any{}, } _, err := f.client.AppendToStream(ctx, streamId, opts, events...) @@ -150,8 +150,8 @@ func (f *ClientFixture) CreateTestEvents(streamId string, count uint32) []kurren } func (f *ClientFixture) DeleteStream(streamId string) { - _, err := f.client.DeleteStream(context.Background(), streamId, kurrentdb.DeleteStreamOptions{ - StreamState: kurrentdb.StreamExists{}, + _, err := f.client.DeleteStream(context.Background(), streamId, trogoneventstore.DeleteStreamOptions{ + StreamState: trogoneventstore.StreamExists{}, }) if err != nil { panic(err) @@ -159,8 +159,8 @@ func (f *ClientFixture) DeleteStream(streamId string) { } func (f *ClientFixture) TombstoneStream(streamId string) { - _, err := f.client.TombstoneStream(context.Background(), streamId, kurrentdb.TombstoneStreamOptions{ - StreamState: kurrentdb.StreamExists{}, + _, err := f.client.TombstoneStream(context.Background(), streamId, trogoneventstore.TombstoneStreamOptions{ + StreamState: trogoneventstore.StreamExists{}, }) if err != nil { panic(err) @@ -178,8 +178,8 @@ func (f *ClientFixture) RequireMinServerVersion(t *testing.T, major, minor, patc } } -func (f *ClientFixture) CollectEvents(stream *kurrentdb.ReadStream) ([]*kurrentdb.ResolvedEvent, error) { - var events []*kurrentdb.ResolvedEvent +func (f *ClientFixture) CollectEvents(stream *trogoneventstore.ReadStream) ([]*trogoneventstore.ResolvedEvent, error) { + var events []*trogoneventstore.ResolvedEvent for { event, err := stream.Recv() @@ -231,14 +231,14 @@ func (f *ClientFixture) Close(t *testing.T) { } } -func (f *ClientFixture) IsKurrentDbVersion20() bool { - return isKurrentDbVersion(func(version KurrentDBVersion) bool { +func (f *ClientFixture) IsServerVersion20() bool { + return isServerVersion(func(version TrogonEventStoreVersion) bool { return version.Maj < 21 }) } -func isKurrentDbVersion(predicate VersionPredicateFn) bool { - value, exists := os.LookupEnv("KURRENTDB_DOCKER_TAG") +func isServerVersion(predicate VersionPredicateFn) bool { + value, exists := os.LookupEnv("TROGON_EVENTSTORE_DOCKER_TAG") if !exists || value == "ci" { return false } @@ -246,7 +246,7 @@ func isKurrentDbVersion(predicate VersionPredicateFn) bool { parts := strings.Split(value, "-") versionNumbers := strings.Split(parts[0], ".") - version := KurrentDBVersion{ + version := TrogonEventStoreVersion{ Maj: mustConvertToInt(versionNumbers[0]), Min: mustConvertToInt(versionNumbers[1]), Patch: mustConvertToInt(versionNumbers[2]), diff --git a/test/client_test.go b/test/client_test.go index 3f142d9..716e560 100644 --- a/test/client_test.go +++ b/test/client_test.go @@ -4,7 +4,6 @@ import "testing" func TestStreams(t *testing.T) { t.Run("AppendEvents", TestAppendEventsSuite) - t.Run("MultiAppend", TestMultiAppendEventsSuite) t.Run("ReadStream", TestReadStreamSuite) t.Run("ReadAll", TestReadAllSuite) t.Run("Subscription", TestSubscriptionSuite) diff --git a/test/cluster_test.go b/test/cluster_test.go index fc1eaee..97421ad 100644 --- a/test/cluster_test.go +++ b/test/cluster_test.go @@ -4,8 +4,8 @@ import ( "context" "crypto/tls" "fmt" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/gossip" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/gossip" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "net/http" "testing" "time" @@ -34,18 +34,18 @@ func (s *ClusterTestSuite) TestNotLeaderExceptionButWorkAfterRetry() { ctx := context.Background() retryCount := 10 for count := 0; count < retryCount; count++ { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2111,localhost:2112,localhost:2113?nodepreference=follower&tlsverifycert=false")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2111,localhost:2112,localhost:2113?nodepreference=follower&tlsverifycert=false")) s.Require().NoError(err, "Failed to parse connection string") - db, err := kurrentdb.NewClient(config) - s.Require().NoError(err, "Failed to create KurrentDB client") + db, err := trogoneventstore.NewClient(config) + s.Require().NoError(err, "Failed to create TrogonEventStore client") streamID := s.fixture.NewStreamId() group := s.fixture.NewGroupId() - err = db.CreatePersistentSubscription(ctx, streamID, group, kurrentdb.PersistentStreamSubscriptionOptions{}) - if kurrentDbError, ok := kurrentdb.FromError(err); !ok { - if kurrentDbError.IsErrorCode(kurrentdb.ErrorCodeResourceAlreadyExists) { + err = db.CreatePersistentSubscription(ctx, streamID, group, trogoneventstore.PersistentStreamSubscriptionOptions{}) + if serverError, ok := trogoneventstore.FromError(err); !ok { + if serverError.IsErrorCode(trogoneventstore.ErrorCodeResourceAlreadyExists) { // Retry if the stream name is not random enough. time.Sleep(1 * time.Second) db.Close() @@ -54,14 +54,14 @@ func (s *ClusterTestSuite) TestNotLeaderExceptionButWorkAfterRetry() { } s.Assert().NotNil(err) // Try again. Should succeed as the db will reconnect to the leader. - err = db.CreatePersistentSubscription(ctx, streamID, group, kurrentdb.PersistentStreamSubscriptionOptions{}) - if kurrentDbError, ok := kurrentdb.FromError(err); !ok { - if kurrentDbError.IsErrorCode(kurrentdb.ErrorCodeResourceAlreadyExists) { + err = db.CreatePersistentSubscription(ctx, streamID, group, trogoneventstore.PersistentStreamSubscriptionOptions{}) + if serverError, ok := trogoneventstore.FromError(err); !ok { + if serverError.IsErrorCode(trogoneventstore.ErrorCodeResourceAlreadyExists) { db.Close() return } db.Close() - s.T().Fatalf("Failed to create persistent subscription: %v", kurrentDbError) + s.T().Fatalf("Failed to create persistent subscription: %v", serverError) } s.Assert().Nil(err) db.Close() @@ -72,15 +72,15 @@ func (s *ClusterTestSuite) TestNotLeaderExceptionButWorkAfterRetry() { func (s *ClusterTestSuite) TestReadStreamAfterClusterRebalanced() { ctx := context.Background() - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2111,localhost:2112,localhost:2113?nodepreference=leader&tlsverifycert=false")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@localhost:2111,localhost:2112,localhost:2113?nodepreference=leader&tlsverifycert=false")) s.Require().NoError(err, "Failed to parse connection string") - db, err := kurrentdb.NewClient(config) - s.Require().NoError(err, "Failed to create KurrentDB client") + db, err := trogoneventstore.NewClient(config) + s.Require().NoError(err, "Failed to create TrogonEventStore client") defer db.Close() streamID := s.fixture.NewStreamId() - options := kurrentdb.ReadStreamOptions{From: kurrentdb.Start{}} + options := trogoneventstore.ReadStreamOptions{From: trogoneventstore.Start{}} stream, err := db.ReadStream(ctx, streamID, options, 10) if err != nil { s.T().Errorf("failed to read stream: %v", err) diff --git a/test/configuration_test.go b/test/configuration_test.go index 8dc8789..e4ddf40 100644 --- a/test/configuration_test.go +++ b/test/configuration_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -12,7 +12,7 @@ import ( func TestConnectionStringSuite(t *testing.T) { t.Run("TestConnectionStringDefaults", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://localhost") + config, err := trogoneventstore.ParseConnectionString("esdb://localhost") assert.NoError(t, err) assert.Equal(t, "localhost:2113", config.Address) assert.Equal(t, 100, config.DiscoveryInterval) @@ -20,11 +20,11 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, 10, config.MaxDiscoverAttempts) assert.Equal(t, 10*time.Second, config.KeepAliveInterval) assert.Equal(t, 10*time.Second, config.KeepAliveTimeout) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceLeader, config.NodePreference) }) t.Run("TestConnectionStringDefaultsDiscover", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb+discover://localhost") + config, err := trogoneventstore.ParseConnectionString("esdb+discover://localhost") assert.NoError(t, err) assert.Equal(t, "localhost:2113", config.Address) assert.Equal(t, 100, config.DiscoveryInterval) @@ -32,181 +32,131 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, 10, config.MaxDiscoverAttempts) assert.Equal(t, 10*time.Second, config.KeepAliveInterval) assert.Equal(t, 10*time.Second, config.KeepAliveTimeout) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) - assert.True(t, config.DnsDiscover) - }) - - t.Run("TestConnectionStringDefaultsKurrent", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("kurrent://localhost") - assert.NoError(t, err) - assert.Equal(t, "localhost:2113", config.Address) - assert.Equal(t, 100, config.DiscoveryInterval) - assert.Equal(t, 5, config.GossipTimeout) - assert.Equal(t, 10, config.MaxDiscoverAttempts) - assert.Equal(t, 10*time.Second, config.KeepAliveInterval) - assert.Equal(t, 10*time.Second, config.KeepAliveTimeout) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) - }) - - t.Run("TestConnectionStringDefaultsKurrentDiscover", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("kurrent+discover://localhost") - assert.NoError(t, err) - assert.Equal(t, "localhost:2113", config.Address) - assert.Equal(t, 100, config.DiscoveryInterval) - assert.Equal(t, 5, config.GossipTimeout) - assert.Equal(t, 10, config.MaxDiscoverAttempts) - assert.Equal(t, 10*time.Second, config.KeepAliveInterval) - assert.Equal(t, 10*time.Second, config.KeepAliveTimeout) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) - assert.True(t, config.DnsDiscover) - }) - - t.Run("TestConnectionStringDefaultsKdb", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("kdb://localhost") - assert.NoError(t, err) - assert.Equal(t, "localhost:2113", config.Address) - assert.Equal(t, 100, config.DiscoveryInterval) - assert.Equal(t, 5, config.GossipTimeout) - assert.Equal(t, 10, config.MaxDiscoverAttempts) - assert.Equal(t, 10*time.Second, config.KeepAliveInterval) - assert.Equal(t, 10*time.Second, config.KeepAliveTimeout) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) - }) - - t.Run("TestConnectionStringDefaultsKdbDiscover", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("kdb+discover://localhost") - assert.NoError(t, err) - assert.Equal(t, "localhost:2113", config.Address) - assert.Equal(t, 100, config.DiscoveryInterval) - assert.Equal(t, 5, config.GossipTimeout) - assert.Equal(t, 10, config.MaxDiscoverAttempts) - assert.Equal(t, 10*time.Second, config.KeepAliveInterval) - assert.Equal(t, 10*time.Second, config.KeepAliveTimeout) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceLeader, config.NodePreference) assert.True(t, config.DnsDiscover) }) t.Run("TestConnectionStringWithNoSchema", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(":so/mething/random") + config, err := trogoneventstore.ParseConnectionString(":so/mething/random") require.Error(t, err) assert.Nil(t, config) }) t.Run("TestConnectionStringWithInvalidScheme", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdbwrong://") + config, err := trogoneventstore.ParseConnectionString("esdbwrong://") require.Error(t, err) assert.Nil(t, config) }) t.Run("TestConnectionStringWithInvalidUserCredentials", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://@127.0.0.1/") + config, err := trogoneventstore.ParseConnectionString("esdb://@127.0.0.1/") require.Error(t, err) - config, err = kurrentdb.ParseConnectionString("esdb://:pass@127.0.0.1/") + config, err = trogoneventstore.ParseConnectionString("esdb://:pass@127.0.0.1/") require.Error(t, err) assert.Nil(t, config) }) t.Run("TestConnectionStringWithInvalidHost", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://") + config, err := trogoneventstore.ParseConnectionString("esdb://") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1:abc") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1:abc") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1:1234,127.0.0.2:abc,127.0.0.3:4321") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1:1234,127.0.0.2:abc,127.0.0.3:4321") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1:abc:def") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1:abc:def") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@localhost:1234,127.0.0.2:abc:def,127.0.0.3:4321") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:1234,127.0.0.2:abc:def,127.0.0.3:4321") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@localhost:1234,,127.0.0.3:4321") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:1234,,127.0.0.3:4321") require.Error(t, err) assert.Nil(t, config) }) t.Run("TestConnectionStringWithEmptyPath", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1") assert.Nil(t, err) assert.NotNil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1:1234") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1:1234") assert.Nil(t, err) assert.NotNil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/") assert.Nil(t, err) assert.NotNil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1?maxDiscoverAttempts=10") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1?maxDiscoverAttempts=10") assert.Nil(t, err) assert.NotNil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=10") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=10") assert.Nil(t, err) assert.NotNil(t, config) }) t.Run("TestConnectionStringWithNonEmptyPath", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/test") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/test") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/maxDiscoverAttempts=10") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/maxDiscoverAttempts=10") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/hello?maxDiscoverAttempts=10") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/hello?maxDiscoverAttempts=10") require.Error(t, err) assert.Nil(t, config) }) t.Run("TestConnectionStringWithoutSettings", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://localhost") + config, err := trogoneventstore.ParseConnectionString("esdb://localhost") assert.NoError(t, err) assert.Equal(t, "localhost:2113", config.Address) - config, err = kurrentdb.ParseConnectionString("esdb://localhost:2114") + config, err = trogoneventstore.ParseConnectionString("esdb://localhost:2114") assert.NoError(t, err) assert.Equal(t, "localhost:2114", config.Address) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@localhost:2114") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:2114") assert.NoError(t, err) assert.Equal(t, "localhost:2114", config.Address) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@localhost:2114/") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:2114/") assert.NoError(t, err) assert.Equal(t, "localhost:2114", config.Address) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1") assert.Nil(t, err) assert.NotNil(t, config) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/") assert.Nil(t, err) assert.NotNil(t, config) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?") assert.Nil(t, err) assert.NotNil(t, config) assert.Equal(t, "user", config.Username) @@ -214,70 +164,70 @@ func TestConnectionStringSuite(t *testing.T) { }) t.Run("TestConnectionStringWithInvalidKeyValuePair", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=12=34") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=12=34") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts1234") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts1234") assert.Nil(t, err) assert.NotNil(t, config) }) t.Run("TestConnectionStringWithInvalidSettings", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=abcd") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=abcd") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?discoveryInterval=abcd") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?discoveryInterval=abcd") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?gossipTimeout=defg") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?gossipTimeout=defg") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?tlsVerifyCert=truee") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?tlsVerifyCert=truee") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=blabla") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=blabla") require.Error(t, err) assert.Nil(t, config) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1?/") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1?/") assert.Nil(t, err) assert.NotNil(t, config) }) t.Run("TestConnectionStringWithDifferentNodePreferences", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=leader") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=leader") assert.NoError(t, err) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceLeader, config.NodePreference) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=Follower") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=Follower") assert.NoError(t, err) - assert.Equal(t, kurrentdb.NodePreferenceFollower, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceFollower, config.NodePreference) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=rAndom") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=rAndom") assert.NoError(t, err) - assert.Equal(t, kurrentdb.NodePreferenceRandom, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceRandom, config.NodePreference) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=ReadOnlyReplica") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=ReadOnlyReplica") assert.NoError(t, err) - assert.Equal(t, kurrentdb.NodePreferenceReadOnlyReplica, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceReadOnlyReplica, config.NodePreference) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=invalid") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?nodePreference=invalid") require.Error(t, err) assert.Nil(t, config) assert.Contains(t, err.Error(), "Invalid NodePreference") }) t.Run("TestConnectionStringWithValidSingleNodeConnectionString", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@localhost:2114?tlsVerifyCert=false") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:2114?tlsVerifyCert=false") require.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) @@ -285,13 +235,13 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, true, config.SkipCertificateVerification) assert.Equal(t, false, config.DnsDiscover) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@localhost:2114?tls=false") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:2114?tls=false") assert.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) assert.Equal(t, "localhost:2114", config.Address) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=13&DiscoveryInterval=37&gossipTimeout=33&nOdEPrEfErence=FoLLoWer&tlsVerifyCert=faLse") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?maxDiscoverAttempts=13&DiscoveryInterval=37&gossipTimeout=33&nOdEPrEfErence=FoLLoWer&tlsVerifyCert=faLse") require.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) @@ -300,31 +250,31 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, 13, config.MaxDiscoverAttempts) assert.Equal(t, 37, config.DiscoveryInterval) assert.Equal(t, 33, config.GossipTimeout) - assert.Equal(t, kurrentdb.NodePreferenceFollower, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceFollower, config.NodePreference) assert.Equal(t, true, config.SkipCertificateVerification) - config, err = kurrentdb.ParseConnectionString("esdb://hostname:4321/?tls=fAlse") + config, err = trogoneventstore.ParseConnectionString("esdb://hostname:4321/?tls=fAlse") require.NoError(t, err) assert.Empty(t, config.Username) assert.Empty(t, config.Password) assert.Equal(t, "hostname:4321", config.Address) assert.Empty(t, config.GossipSeeds) - assert.Equal(t, kurrentdb.NodePreferenceLeader, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceLeader, config.NodePreference) assert.Equal(t, true, config.DisableTLS) assert.Equal(t, false, config.SkipCertificateVerification) - config, err = kurrentdb.ParseConnectionString("esdb+discover://user:pass@host?nodePreference=follower&tlsVerifyCert=false") + config, err = trogoneventstore.ParseConnectionString("esdb+discover://user:pass@host?nodePreference=follower&tlsVerifyCert=false") require.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) assert.Equal(t, "host:2113", config.Address) assert.Empty(t, config.GossipSeeds) - assert.Equal(t, kurrentdb.NodePreferenceFollower, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceFollower, config.NodePreference) assert.Equal(t, false, config.DisableTLS) assert.Equal(t, true, config.SkipCertificateVerification) assert.Equal(t, true, config.DnsDiscover) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@localhost:2113?tls=true") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@localhost:2113?tls=true") require.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) @@ -335,7 +285,7 @@ func TestConnectionStringSuite(t *testing.T) { }) t.Run("TestConnectionStringWithValidClusterConnectionString", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://host1,host2,host3") + config, err := trogoneventstore.ParseConnectionString("esdb://host1,host2,host3") assert.NoError(t, err) assert.Empty(t, config.Address) require.NotEmpty(t, config.GossipSeeds) @@ -344,7 +294,7 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, parseEndpoint("host2:2113"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("host3:2113"), config.GossipSeeds[2]) - config, err = kurrentdb.ParseConnectionString("esdb://host1:1234,host2:4321,host3:3231") + config, err = trogoneventstore.ParseConnectionString("esdb://host1:1234,host2:4321,host3:3231") assert.NoError(t, err) assert.Empty(t, config.Address) require.NotEmpty(t, config.GossipSeeds) @@ -353,7 +303,7 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, parseEndpoint("host2:4321"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("host3:3231"), config.GossipSeeds[2]) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@host1:1234,host2:4321,host3:3231?nodePreference=follower") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@host1:1234,host2:4321,host3:3231?nodePreference=follower") assert.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) @@ -363,9 +313,9 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, parseEndpoint("host1:1234"), config.GossipSeeds[0]) assert.Equal(t, parseEndpoint("host2:4321"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("host3:3231"), config.GossipSeeds[2]) - assert.Equal(t, kurrentdb.NodePreferenceFollower, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceFollower, config.NodePreference) - config, err = kurrentdb.ParseConnectionString("esdb://host1,host2,host3?tls=false") + config, err = trogoneventstore.ParseConnectionString("esdb://host1,host2,host3?tls=false") assert.NoError(t, err) assert.Empty(t, config.Address) require.NotEmpty(t, config.GossipSeeds) @@ -374,7 +324,7 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, parseEndpoint("host2:2113"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("host3:2113"), config.GossipSeeds[2]) - config, err = kurrentdb.ParseConnectionString("esdb://host1,host2,host3?tlsVerifyCert=false") + config, err = trogoneventstore.ParseConnectionString("esdb://host1,host2,host3?tlsVerifyCert=false") assert.NoError(t, err) assert.Empty(t, config.Address) require.NotEmpty(t, config.GossipSeeds) @@ -384,28 +334,28 @@ func TestConnectionStringSuite(t *testing.T) { assert.Equal(t, parseEndpoint("host3:2113"), config.GossipSeeds[2]) assert.Equal(t, true, config.SkipCertificateVerification) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1,127.0.0.2:3321,127.0.0.3/?maxDiscoverAttempts=13&DiscoveryInterval=37&nOdEPrEfErence=FoLLoWer&tlsVerifyCert=false") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1,127.0.0.2:3321,127.0.0.3/?maxDiscoverAttempts=13&DiscoveryInterval=37&nOdEPrEfErence=FoLLoWer&tlsVerifyCert=false") assert.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) assert.Empty(t, config.Address) assert.Equal(t, 13, config.MaxDiscoverAttempts) assert.Equal(t, 37, config.DiscoveryInterval) - assert.Equal(t, kurrentdb.NodePreferenceFollower, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceFollower, config.NodePreference) require.NotEmpty(t, config.GossipSeeds) assert.Len(t, config.GossipSeeds, 3) assert.Equal(t, parseEndpoint("127.0.0.1:2113"), config.GossipSeeds[0]) assert.Equal(t, parseEndpoint("127.0.0.2:3321"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("127.0.0.3:2113"), config.GossipSeeds[2]) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@host1,host2:3321,127.0.0.3/?tls=false&maxDiscoverAttempts=13&DiscoveryInterval=37&nOdEPrEfErence=FoLLoWer&tlsVerifyCert=false") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@host1,host2:3321,127.0.0.3/?tls=false&maxDiscoverAttempts=13&DiscoveryInterval=37&nOdEPrEfErence=FoLLoWer&tlsVerifyCert=false") assert.NoError(t, err) assert.Equal(t, "user", config.Username) assert.Equal(t, "pass", config.Password) assert.Empty(t, config.Address) assert.Equal(t, 13, config.MaxDiscoverAttempts) assert.Equal(t, 37, config.DiscoveryInterval) - assert.Equal(t, kurrentdb.NodePreferenceFollower, config.NodePreference) + assert.Equal(t, trogoneventstore.NodePreferenceFollower, config.NodePreference) require.NotEmpty(t, config.GossipSeeds) assert.Len(t, config.GossipSeeds, 3) assert.Equal(t, parseEndpoint("host1:2113"), config.GossipSeeds[0]) @@ -414,133 +364,133 @@ func TestConnectionStringSuite(t *testing.T) { }) t.Run("TestConnectionStringWithDifferentTLSSettings", func(t *testing.T) { - config, _ := kurrentdb.ParseConnectionString("esdb://127.0.0.1/") + config, _ := trogoneventstore.ParseConnectionString("esdb://127.0.0.1/") assert.Equal(t, "127.0.0.1:2113", config.Address) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1?tls=true") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1?tls=true") assert.Equal(t, "127.0.0.1:2113", config.Address) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1/?tls=FaLsE") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1/?tls=FaLsE") assert.Equal(t, "127.0.0.1:2113", config.Address) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/") assert.Equal(t, parseEndpoint("127.0.0.1:2113"), config.GossipSeeds[0]) assert.Equal(t, parseEndpoint("127.0.0.2:3321"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("127.0.0.3:2113"), config.GossipSeeds[2]) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3?tls=true") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3?tls=true") assert.Equal(t, parseEndpoint("127.0.0.1:2113"), config.GossipSeeds[0]) assert.Equal(t, parseEndpoint("127.0.0.2:3321"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("127.0.0.3:2113"), config.GossipSeeds[2]) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/?tls=fAlSe") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/?tls=fAlSe") assert.Equal(t, parseEndpoint("127.0.0.1:2113"), config.GossipSeeds[0]) assert.Equal(t, parseEndpoint("127.0.0.2:3321"), config.GossipSeeds[1]) assert.Equal(t, parseEndpoint("127.0.0.3:2113"), config.GossipSeeds[2]) }) t.Run("TestConnectionStringWithDifferentTLSVerifySettings", func(t *testing.T) { - config, _ := kurrentdb.ParseConnectionString("esdb://127.0.0.1/") + config, _ := trogoneventstore.ParseConnectionString("esdb://127.0.0.1/") assert.Equal(t, false, config.SkipCertificateVerification) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1/?tlsVerifyCert=TrUe") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1/?tlsVerifyCert=TrUe") assert.Equal(t, false, config.SkipCertificateVerification) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1/?tlsVerifyCert=FaLsE") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1/?tlsVerifyCert=FaLsE") assert.Equal(t, true, config.SkipCertificateVerification) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/") assert.Equal(t, false, config.SkipCertificateVerification) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/?tlsVerifyCert=true") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/?tlsVerifyCert=true") assert.Equal(t, false, config.SkipCertificateVerification) - config, _ = kurrentdb.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/?tlsVerifyCert=false") + config, _ = trogoneventstore.ParseConnectionString("esdb://127.0.0.1,127.0.0.2:3321,127.0.0.3/?tlsVerifyCert=false") assert.Equal(t, true, config.SkipCertificateVerification) }) t.Run("TestConnectionStringWithoutCertificateFile", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1") assert.Nil(t, err) assert.NotNil(t, config) }) t.Run("TestConnectionStringWithCertificateFile", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?tlsCAFile=invalidPath") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?tlsCAFile=invalidPath") require.Error(t, err) assert.Nil(t, config) }) t.Run("TestConnectionStringWithKeepAlive", func(t *testing.T) { // KeepAliveInterval - config, err := kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=zero") + config, err := trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=zero") require.Error(t, err) assert.Nil(t, config) assert.Contains(t, err.Error(), "Invalid keepAliveInterval \"zero\". Please provide a positive integer, or -1 to disable") - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-2") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-2") require.Error(t, err) assert.Nil(t, config) assert.Contains(t, err.Error(), "Invalid keepAliveInterval \"-2\". Please provide a positive integer, or -1 to disable") - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-1") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-1") require.NoError(t, err) assert.Equal(t, -1, int(config.KeepAliveInterval)) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?KeepAliveInterval=100") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?KeepAliveInterval=100") require.NoError(t, err) assert.Equal(t, 100*time.Millisecond, config.KeepAliveInterval) // KeepAliveTimeout - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveTimeout=one") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveTimeout=one") require.Error(t, err) assert.Nil(t, config) assert.Contains(t, err.Error(), "Invalid keepAliveTimeout \"one\". Please provide a positive integer, or -1 to disable") - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveTimeout=-3") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveTimeout=-3") require.Error(t, err) assert.Nil(t, config) assert.Contains(t, err.Error(), "Invalid keepAliveTimeout \"-3\". Please provide a positive integer, or -1 to disable") - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveTimeout=-1") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveTimeout=-1") require.NoError(t, err) assert.Equal(t, -1, int(config.KeepAliveTimeout)) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?KeepAliveTimeout=50000") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?KeepAliveTimeout=50000") require.NoError(t, err) assert.Equal(t, 50*time.Second, config.KeepAliveTimeout) // KeepAliveInterval & KeepAliveTimeout - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=12000&KeepAliveTimeout=15000") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=12000&KeepAliveTimeout=15000") require.NoError(t, err) assert.Equal(t, 12*time.Second, config.KeepAliveInterval) assert.Equal(t, 15*time.Second, config.KeepAliveTimeout) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-1&KeepAliveTimeout=-1") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-1&KeepAliveTimeout=-1") require.NoError(t, err) assert.Equal(t, -1, int(config.KeepAliveInterval)) assert.Equal(t, -1, int(config.KeepAliveTimeout)) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-1&KeepAliveTimeout=15000") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=-1&KeepAliveTimeout=15000") require.NoError(t, err) assert.Equal(t, -1, int(config.KeepAliveInterval)) assert.Equal(t, 15*time.Second, config.KeepAliveTimeout) - config, err = kurrentdb.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=11000&KeepAliveTimeout=-1") + config, err = trogoneventstore.ParseConnectionString("esdb://user:pass@127.0.0.1/?keepAliveInterval=11000&KeepAliveTimeout=-1") require.NoError(t, err) assert.Equal(t, 11*time.Second, config.KeepAliveInterval) assert.Equal(t, -1, int(config.KeepAliveTimeout)) }) t.Run("TestConnectionStringWithDefaultDeadline", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString("esdb://localhost?defaultDeadline=60000") + config, err := trogoneventstore.ParseConnectionString("esdb://localhost?defaultDeadline=60000") require.NoError(t, err) assert.NotNil(t, config.DefaultDeadline) assert.Equal(t, *config.DefaultDeadline, 60*time.Second) }) } -func parseEndpoint(addr string) *kurrentdb.EndPoint { - value, _ := kurrentdb.ParseEndPoint(addr) +func parseEndpoint(addr string) *trogoneventstore.EndPoint { + value, _ := trogoneventstore.ParseEndPoint(addr) return value } diff --git a/test/connection_test.go b/test/connection_test.go index 56520cb..9c764cd 100644 --- a/test/connection_test.go +++ b/test/connection_test.go @@ -5,8 +5,8 @@ import ( "testing" "time" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -36,8 +36,8 @@ func (s *ConnectionTestSuite) TestCloseConnection() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - opts := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + opts := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, } _, err := client.AppendToStream(ctx, streamID.String(), opts, testEvent) @@ -45,10 +45,10 @@ func (s *ConnectionTestSuite) TestCloseConnection() { // Close the client and attempt another append to verify connection is closed. client.Close() - opts.StreamState = kurrentdb.Any{} + opts.StreamState = trogoneventstore.Any{} _, err = client.AppendToStream(ctx, streamID.String(), opts, testEvent) - kurrentDbError, ok := kurrentdb.FromError(err) + serverError, ok := trogoneventstore.FromError(err) assert.False(s.T(), ok) - assert.Equal(s.T(), kurrentdb.ErrorCodeConnectionClosed, kurrentDbError.Code()) + assert.Equal(s.T(), trogoneventstore.ErrorCodeConnectionClosed, serverError.Code()) } diff --git a/test/delete_test.go b/test/delete_test.go index 7e330e9..18356c2 100644 --- a/test/delete_test.go +++ b/test/delete_test.go @@ -2,7 +2,7 @@ package test import ( "context" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -29,12 +29,12 @@ func (suite *DeleteTestSuite) TearDownTest() { func (suite *DeleteTestSuite) TestCanDeleteStream() { client := suite.fixture.Client() - opts := kurrentdb.DeleteStreamOptions{ - StreamState: kurrentdb.Revision(0), + opts := trogoneventstore.DeleteStreamOptions{ + StreamState: trogoneventstore.Revision(0), } streamId := suite.fixture.NewStreamId() - _, err := client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, suite.fixture.CreateTestEvent()) + _, err := client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, suite.fixture.CreateTestEvent()) assert.NoError(suite.T(), err) deleteResult, err := client.DeleteStream(context.Background(), streamId, opts) @@ -50,9 +50,9 @@ func (suite *DeleteTestSuite) TestCanTombstoneStream() { client := suite.fixture.Client() streamId := suite.fixture.NewStreamId() - _, err := client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, suite.fixture.CreateTestEvent()) - deleteResult, err := client.TombstoneStream(context.Background(), streamId, kurrentdb.TombstoneStreamOptions{ - StreamState: kurrentdb.Revision(0), + _, err := client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, suite.fixture.CreateTestEvent()) + deleteResult, err := client.TombstoneStream(context.Background(), streamId, trogoneventstore.TombstoneStreamOptions{ + StreamState: trogoneventstore.Revision(0), }) if err != nil { suite.T().Fatalf("Unexpected failure %+v", err) @@ -61,7 +61,7 @@ func (suite *DeleteTestSuite) TestCanTombstoneStream() { assert.True(suite.T(), deleteResult.Position.Commit > 0) assert.True(suite.T(), deleteResult.Position.Prepare > 0) - _, err = client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, suite.fixture.CreateTestEvent()) + _, err = client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, suite.fixture.CreateTestEvent()) require.Error(suite.T(), err) } @@ -71,20 +71,20 @@ func (suite *DeleteTestSuite) TestDetectStreamDeleted() { streamId := suite.fixture.NewStreamId() event := suite.fixture.CreateTestEvent() - _, err := client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, event) + _, err := client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, event) require.NoError(suite.T(), err) - _, err = client.TombstoneStream(context.Background(), streamId, kurrentdb.TombstoneStreamOptions{}) + _, err = client.TombstoneStream(context.Background(), streamId, trogoneventstore.TombstoneStreamOptions{}) require.NoError(suite.T(), err) - stream, err := client.ReadStream(context.Background(), streamId, kurrentdb.ReadStreamOptions{}, 1) + stream, err := client.ReadStream(context.Background(), streamId, trogoneventstore.ReadStreamOptions{}, 1) require.NoError(suite.T(), err) defer stream.Close() evt, err := stream.Recv() require.Nil(suite.T(), evt) - kurrentDbError, ok := kurrentdb.FromError(err) + serverError, ok := trogoneventstore.FromError(err) require.False(suite.T(), ok) - require.Equal(suite.T(), kurrentdb.ErrorCodeStreamDeleted, kurrentDbError.Code()) + require.Equal(suite.T(), trogoneventstore.ErrorCodeStreamDeleted, serverError.Code()) } diff --git a/test/multi_append_test.go b/test/multi_append_test.go deleted file mode 100644 index 573dc1c..0000000 --- a/test/multi_append_test.go +++ /dev/null @@ -1,297 +0,0 @@ -package test - -import ( - "context" - "encoding/json" - "errors" - "slices" - "testing" - - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/suite" -) - -type MultiAppendTestSuite struct { - suite.Suite - fixture *ClientFixture -} - -type ExpectedMetadata struct { - StringValue string `json:"stringValue"` - SchemaFormat string `json:"$schema.format"` - SchemaName string `json:"$schema.name"` -} - -func TestMultiAppendEventsSuite(t *testing.T) { - suite.Run(t, new(MultiAppendTestSuite)) -} - -func (s *MultiAppendTestSuite) SetupTest() { - s.fixture = NewInsecureClientFixture(s.T()) -} - -func (s *MultiAppendTestSuite) TestMultiStreamAppend() { - client := s.fixture.Client() - - version, err := client.GetServerVersion() - assert.NoError(s.T(), err) - - if version.Major < 25 { - s.T().Skip("Multi-stream append is not supported in versions prior to 25.0") - } - - // Arrange - expectedMetadata, _ := json.Marshal(map[string]string{ - "stringValue": "string", - }) - - stream1 := s.fixture.NewStreamId() - stream2 := s.fixture.NewStreamId() - - event1 := s.fixture.CreateTestEvent(TestEventOptions{EventType: "OrderCreated", Metadata: expectedMetadata}) - event2 := s.fixture.CreateTestEvent(TestEventOptions{EventType: "OrderShipped", Metadata: expectedMetadata}) - - // Act - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: stream1, - Events: slices.Values([]kurrentdb.EventData{event1}), - ExpectedStreamState: kurrentdb.NoStream{}, - }, - { - StreamName: stream2, - Events: slices.Values([]kurrentdb.EventData{event2}), - ExpectedStreamState: kurrentdb.NoStream{}, - }, - } - - result, err := client.MultiStreamAppend(context.Background(), slices.Values(requests)) - - // Assert - assert.NoError(s.T(), err) - assert.Greater(s.T(), result.Position, int64(0)) - - s.assertMetadata(stream1, event1.EventType) - s.assertMetadata(stream2, event2.EventType) -} - -func (s *MultiAppendTestSuite) TestMultiStreamAppendUnsupported() { - client := s.fixture.Client() - - version, err := client.GetServerVersion() - assert.NoError(s.T(), err) - - if version.Major >= 25 { - s.T().Skip("Multi-stream append is supported in from 25.0 and upwards") - } - - stream := s.fixture.NewStreamId() - events := s.fixture.CreateTestEvents(stream, 1) - - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: stream, - Events: slices.Values(events), - ExpectedStreamState: kurrentdb.Any{}, - }, - } - - result, err := client.MultiStreamAppend(context.Background(), slices.Values(requests)) - - assert.Nil(s.T(), result) - - kdbError, _ := kurrentdb.FromError(err) - assert.Equal(s.T(), kurrentdb.ErrorCodeUnsupportedFeature, kdbError.Code(), "Expected unsupported feature error code") -} - -func (s *MultiAppendTestSuite) TestMultiStreamAppendNonPlainJsonMetadataThrows() { - client := s.fixture.Client() - - version, err := client.GetServerVersion() - assert.NoError(s.T(), err) - - if version.Major < 25 { - s.T().Skip("Multi-stream append is not supported in versions prior to 25.0") - } - - // Arrange - stream := s.fixture.NewStreamId() - - expectedMetadata, _ := json.Marshal(map[string]interface{}{ - "stringValue": "string", - "boolValue": true, - }) - - event := s.fixture.CreateTestEvent(TestEventOptions{ - EventType: "OrderCreated", - ContentType: kurrentdb.ContentTypeBinary, - Metadata: expectedMetadata, - }) - - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: stream, - Events: slices.Values([]kurrentdb.EventData{event}), - ExpectedStreamState: kurrentdb.NoStream{}, - }, - } - - // Act - result, err := client.MultiStreamAppend(context.Background(), slices.Values(requests)) - - // Assert - assert.Error(s.T(), err) - assert.Nil(s.T(), result) - - dbError, ok := kurrentdb.FromError(err) - assert.False(s.T(), ok) - assert.Error(s.T(), dbError) -} - -func (s *MultiAppendTestSuite) TestMultiStreamAppendWithBinaryMetadataThrowsError() { - client := s.fixture.Client() - - version, err := client.GetServerVersion() - assert.NoError(s.T(), err) - - if version.Major < 25 { - s.T().Skip("Multi-stream append is not supported in versions prior to 25.0") - } - - // Arrange - stream := s.fixture.NewStreamId() - binaryMetadata := []byte{0x01, 0x02, 0x03, 0x04} - - event := s.fixture.CreateTestEvent(TestEventOptions{ - EventType: "OrderCreated", - ContentType: kurrentdb.ContentTypeBinary, - Metadata: binaryMetadata, - }) - - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: stream, - Events: slices.Values([]kurrentdb.EventData{event}), - ExpectedStreamState: kurrentdb.NoStream{}, - }, - } - - // Act - result, err := client.MultiStreamAppend(context.Background(), slices.Values(requests)) - - // Assert - assert.Error(s.T(), err) - assert.Nil(s.T(), result) - - dbError, ok := kurrentdb.FromError(err) - assert.False(s.T(), ok) - assert.Error(s.T(), dbError) -} - -func (s *MultiAppendTestSuite) TestMultiStreamAppendStreamRevisionConflict() { - client := s.fixture.Client() - - version, err := client.GetServerVersion() - assert.NoError(s.T(), err) - - if version.Major < 25 { - s.T().Skip("Multi-stream append is not supported in versions prior to 25.0") - } - - // Arrange - stream := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(stream, 10) - - readStream, err := client.ReadStream(context.Background(), stream, kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, - }, 1) - assert.NoError(s.T(), err) - defer readStream.Close() - lastEvent, err := readStream.Recv() - assert.NoError(s.T(), err) - assert.NotNil(s.T(), lastEvent) - - // Act - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: stream, - Events: slices.Values([]kurrentdb.EventData{s.fixture.CreateTestEvent()}), - ExpectedStreamState: kurrentdb.NoStream{}, - }, - } - - _, err = client.MultiStreamAppend(context.Background(), slices.Values(requests)) - kurrentDbError, ok := kurrentdb.FromError(err) - - assert.False(s.T(), ok) - assert.Equal(s.T(), kurrentdb.ErrorCodeStreamRevisionConflict, kurrentDbError.Code()) - - var streamRevisionConflictErr *kurrentdb.StreamRevisionConflictError - if !errors.As(err, &streamRevisionConflictErr) { - s.T().Fatal("Expected StreamRevisionConflictError") - } - - assert.Equal(s.T(), stream, streamRevisionConflictErr.Stream) - assert.Equal(s.T(), kurrentdb.NoStream{}, streamRevisionConflictErr.ExpectedRevision) - assert.Equal(s.T(), kurrentdb.StreamRevision{Value: lastEvent.OriginalEvent().EventNumber}, streamRevisionConflictErr.ActualRevision) -} - -func (s *MultiAppendTestSuite) TestMultiStreamAppendStreamTombstoned() { - client := s.fixture.Client() - - version, err := client.GetServerVersion() - assert.NoError(s.T(), err) - - if version.Major < 25 { - s.T().Skip("Multi-stream append is not supported in versions prior to 25.0") - } - - // Arrange - stream := s.fixture.NewStreamId() - - s.fixture.CreateTestEvents(stream, 10) - - _, err = client.TombstoneStream(context.Background(), stream, kurrentdb.TombstoneStreamOptions{}) - assert.NoError(s.T(), err) - - // Act - requests := []kurrentdb.AppendStreamRequest{ - { - StreamName: stream, - Events: slices.Values([]kurrentdb.EventData{s.fixture.CreateTestEvent()}), - ExpectedStreamState: kurrentdb.NoStream{}, - }, - } - - _, err = client.MultiStreamAppend(context.Background(), slices.Values(requests)) - kurrentDbError, ok := kurrentdb.FromError(err) - - assert.False(s.T(), ok) - assert.Equal(s.T(), kurrentdb.ErrorCodeStreamTombstoned, kurrentDbError.Code()) -} - -// region helpers -func (s *MultiAppendTestSuite) assertMetadata(streamName string, eventType string) { - client := s.fixture.Client() - - readStream, err := client.ReadStream(context.Background(), streamName, kurrentdb.ReadStreamOptions{}, 1) - assert.NoError(s.T(), err) - defer readStream.Close() - - events, err := s.fixture.CollectEvents(readStream) - assert.NoError(s.T(), err) - assert.Len(s.T(), events, 1) - - var readMetadata ExpectedMetadata - err = json.Unmarshal(events[0].OriginalEvent().UserMetadata, &readMetadata) - assert.NoError(s.T(), err) - - assert.Equal(s.T(), "Bytes", readMetadata.SchemaFormat) - assert.Equal(s.T(), eventType, readMetadata.SchemaName) - assert.Equal(s.T(), "string", readMetadata.StringValue) -} - -//endregion diff --git a/test/persistent_subscription_read_test.go b/test/persistent_subscription_read_test.go index d033bc0..244fdfe 100644 --- a/test/persistent_subscription_read_test.go +++ b/test/persistent_subscription_read_test.go @@ -2,7 +2,7 @@ package test import ( "context" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/suite" "testing" "time" @@ -30,9 +30,9 @@ func (s *PersistentSubReadTestSuite) TestReadExistingStream_AckToReceiveNewEvent firstEvent := s.fixture.CreateTestEvent() secondEvent := s.fixture.CreateTestEvent() thirdEvent := s.fixture.CreateTestEvent() - events := []kurrentdb.EventData{firstEvent, secondEvent, thirdEvent} + events := []trogoneventstore.EventData{firstEvent, secondEvent, thirdEvent} - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, events...) + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, events...) s.Require().NoError(err) groupName := s.fixture.NewGroupId() @@ -40,14 +40,14 @@ func (s *PersistentSubReadTestSuite) TestReadExistingStream_AckToReceiveNewEvent context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Start{}, + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Start{}, }, ) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{ + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{ BufferSize: 2, }) s.Require().NoError(err) @@ -71,13 +71,13 @@ func (s *PersistentSubReadTestSuite) TestReadExistingStream_AckToReceiveNewEvent func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromBeginning_AndEventsInIt() { streamId := s.fixture.NewStreamId() - events := make([]kurrentdb.EventData, 10) + events := make([]trogoneventstore.EventData, 10) for i := 0; i < 10; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events...) s.Require().NoError(err) @@ -86,14 +86,14 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromBeginning_And context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Start{}, + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Start{}, }, ) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -111,24 +111,24 @@ func (s *PersistentSubReadTestSuite) TestToNonExistingStream_StartFromBeginning_ context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Start{}, + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Start{}, }, ) s.Require().NoError(err) - events := make([]kurrentdb.EventData, 10) + events := make([]trogoneventstore.EventData, 10) for i := 0; i < 10; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err = s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err = s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events...) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -141,13 +141,13 @@ func (s *PersistentSubReadTestSuite) TestToNonExistingStream_StartFromBeginning_ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromEnd_EventsInItAndAppendEventsAfterwards() { streamId := s.fixture.NewStreamId() - events := make([]kurrentdb.EventData, 11) + events := make([]trogoneventstore.EventData, 11) for i := 0; i < 11; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events[:10]...) s.Require().NoError(err) @@ -156,19 +156,19 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromEnd_EventsInI context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.End{}, + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.End{}, }, ) s.Require().NoError(err) - _, err = s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.Revision(9), + _, err = s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.Revision(9), }, events[10]) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -181,13 +181,13 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromEnd_EventsInI func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromEnd_EventsInIt() { streamId := s.fixture.NewStreamId() - events := make([]kurrentdb.EventData, 10) + events := make([]trogoneventstore.EventData, 10) for i := 0; i < 10; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events...) s.Require().NoError(err) @@ -196,8 +196,8 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromEnd_EventsInI context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.End{}, + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.End{}, }, ) s.Require().NoError(err) @@ -206,7 +206,7 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromEnd_EventsInI defer cancel() readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - ctx, streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + ctx, streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -233,24 +233,24 @@ func (s *PersistentSubReadTestSuite) TestToNonExistingStream_StartFromTwo_Append context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Revision(2), + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Revision(2), }, ) s.Require().NoError(err) - events := make([]kurrentdb.EventData, 4) + events := make([]trogoneventstore.EventData, 4) for i := 0; i < 4; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err = s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err = s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events...) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -263,13 +263,13 @@ func (s *PersistentSubReadTestSuite) TestToNonExistingStream_StartFromTwo_Append func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFrom10_EventsInItAppendEventsAfterwards() { streamId := s.fixture.NewStreamId() - events := make([]kurrentdb.EventData, 11) + events := make([]trogoneventstore.EventData, 11) for i := 0; i < 11; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events[:10]...) s.Require().NoError(err) @@ -278,19 +278,19 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFrom10_EventsInIt context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Revision(10), + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Revision(10), }, ) s.Require().NoError(err) - _, err = s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.Revision(9), + _, err = s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.Revision(9), }, events[10]) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -303,13 +303,13 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFrom10_EventsInIt func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFrom4_EventsInIt() { streamId := s.fixture.NewStreamId() - events := make([]kurrentdb.EventData, 11) + events := make([]trogoneventstore.EventData, 11) for i := 0; i < 11; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events[:10]...) s.Require().NoError(err) @@ -318,19 +318,19 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFrom4_EventsInIt( context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Revision(4), + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Revision(4), }, ) s.Require().NoError(err) - _, err = s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.Revision(9), + _, err = s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.Revision(9), }, events[10]) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -343,13 +343,13 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFrom4_EventsInIt( func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromHigherRevisionThenEventsInStream_EventsInItAppendEventsAfterwards() { streamId := s.fixture.NewStreamId() - events := make([]kurrentdb.EventData, 12) + events := make([]trogoneventstore.EventData, 12) for i := 0; i < 12; i++ { events[i] = s.fixture.CreateTestEvent() } - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.NoStream{}, + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.NoStream{}, }, events[:11]...) s.Require().NoError(err) @@ -358,19 +358,19 @@ func (s *PersistentSubReadTestSuite) TestToExistingStream_StartFromHigherRevisio context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Revision(11), + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Revision(11), }, ) s.Require().NoError(err) - _, err = s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.Revision(10), + _, err = s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.Revision(10), }, events[11]) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{}) + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{}) s.Require().NoError(err) defer readConn.Close() @@ -386,9 +386,9 @@ func (s *PersistentSubReadTestSuite) TestReadExistingStream_NackToReceiveNewEven firstEvent := s.fixture.CreateTestEvent() secondEvent := s.fixture.CreateTestEvent() thirdEvent := s.fixture.CreateTestEvent() - events := []kurrentdb.EventData{firstEvent, secondEvent, thirdEvent} + events := []trogoneventstore.EventData{firstEvent, secondEvent, thirdEvent} - _, err := s.fixture.client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, events...) + _, err := s.fixture.client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, events...) s.Require().NoError(err) groupName := s.fixture.NewGroupId() @@ -396,14 +396,14 @@ func (s *PersistentSubReadTestSuite) TestReadExistingStream_NackToReceiveNewEven context.Background(), streamId, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Start{}, + trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Start{}, }, ) s.Require().NoError(err) readConn, err := s.fixture.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{ + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{ BufferSize: 2, }) s.Require().NoError(err) @@ -417,7 +417,7 @@ func (s *PersistentSubReadTestSuite) TestReadExistingStream_NackToReceiveNewEven s.Require().NotNil(secondRead) s.Require().Equal(secondEvent.EventID, secondRead.OriginalEvent().EventID) - err = readConn.Nack("test reason", kurrentdb.NackActionPark, firstRead) + err = readConn.Nack("test reason", trogoneventstore.NackActionPark, firstRead) s.Require().NoError(err) thirdRead := readConn.Recv() @@ -433,20 +433,20 @@ func (s *PersistentSubReadTestSuite) TestPersistentSubscriptionToAll_Read() { err := s.fixture.client.CreatePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.PersistentAllSubscriptionOptions{ - StartFrom: kurrentdb.Start{}, + trogoneventstore.PersistentAllSubscriptionOptions{ + StartFrom: trogoneventstore.Start{}, }, ) if err != nil { - if convertedErr, ok := kurrentdb.FromError(err); ok && convertedErr.Code() == kurrentdb.ErrorCodeUnsupportedFeature && s.fixture.IsKurrentDbVersion20() { + if convertedErr, ok := trogoneventstore.FromError(err); ok && convertedErr.Code() == trogoneventstore.ErrorCodeUnsupportedFeature && s.fixture.IsServerVersion20() { s.T().Skip() } } s.Require().NoError(err) readConnectionClient, err := s.fixture.client.SubscribeToPersistentSubscriptionToAll( - context.Background(), groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{ + context.Background(), groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{ BufferSize: 2, }, ) diff --git a/test/persistent_subscriptions_test.go b/test/persistent_subscriptions_test.go index 97a7e23..8628d03 100644 --- a/test/persistent_subscriptions_test.go +++ b/test/persistent_subscriptions_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -19,7 +19,7 @@ func TestPersistentSubscriptionSuite(t *testing.T) { type PersistentSubscriptionSuite struct { suite.Suite fixture *ClientFixture - client *kurrentdb.Client + client *trogoneventstore.Client } func (s *PersistentSubscriptionSuite) SetupTest() { @@ -41,7 +41,7 @@ func (s *PersistentSubscriptionSuite) TestCreatePersistentStreamSubscription() { context.Background(), streamID, "Group 1", - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.NoError(err) @@ -51,14 +51,14 @@ func (s *PersistentSubscriptionSuite) TestCreatePersistentStreamSubscription_Mes streamID := s.fixture.NewStreamId() s.fixture.CreateTestEvents(streamID, 1) - settings := kurrentdb.SubscriptionSettingsDefault() + settings := trogoneventstore.SubscriptionSettingsDefault() settings.MessageTimeout = 0 err := s.client.CreatePersistentSubscription( context.Background(), streamID, "Group 1", - kurrentdb.PersistentStreamSubscriptionOptions{ + trogoneventstore.PersistentStreamSubscriptionOptions{ Settings: &settings, }, ) @@ -76,7 +76,7 @@ func (s *PersistentSubscriptionSuite) TestCreatePersistentStreamSubscription_Fai context.Background(), streamId, groupId, - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.NoError(err) @@ -85,12 +85,12 @@ func (s *PersistentSubscriptionSuite) TestCreatePersistentStreamSubscription_Fai context.Background(), streamId, groupId, - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) - kurrentDbError, ok := kurrentdb.FromError(err) + serverError, ok := trogoneventstore.FromError(err) require.False(s.T(), ok) - assert.Equal(s.T(), kurrentdb.ErrorCodeResourceAlreadyExists, kurrentDbError.Code()) + assert.Equal(s.T(), trogoneventstore.ErrorCodeResourceAlreadyExists, serverError.Code()) } func (s *PersistentSubscriptionSuite) TestUpdatePersistentStreamSubscription() { @@ -102,19 +102,19 @@ func (s *PersistentSubscriptionSuite) TestUpdatePersistentStreamSubscription() { context.Background(), streamID, "Group 1", - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.NoError(err) // Update settings - settings := kurrentdb.SubscriptionSettingsDefault() + settings := trogoneventstore.SubscriptionSettingsDefault() settings.HistoryBufferSize++ err = s.client.UpdatePersistentSubscription( context.Background(), streamID, "Group 1", - kurrentdb.PersistentStreamSubscriptionOptions{ + trogoneventstore.PersistentStreamSubscriptionOptions{ Settings: &settings, }, ) @@ -131,7 +131,7 @@ func (s *PersistentSubscriptionSuite) TestDeletePersistentSubscription() { context.Background(), streamID, "Group 1", - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.NoError(err) @@ -140,7 +140,7 @@ func (s *PersistentSubscriptionSuite) TestDeletePersistentSubscription() { context.Background(), streamID, "Group 1", - kurrentdb.DeletePersistentSubscriptionOptions{}, + trogoneventstore.DeletePersistentSubscriptionOptions{}, ) s.NoError(err) @@ -156,18 +156,18 @@ func (s *PersistentSubscriptionSuite) TestPersistentSubscriptionLifecycle() { context.Background(), streamID, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.NoError(err) // Update - settings := kurrentdb.SubscriptionSettingsDefault() + settings := trogoneventstore.SubscriptionSettingsDefault() settings.MaxRetryCount = 10 err = s.client.UpdatePersistentSubscription( context.Background(), streamID, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ + trogoneventstore.PersistentStreamSubscriptionOptions{ Settings: &settings, }, ) @@ -178,7 +178,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentSubscriptionLifecycle() { context.Background(), streamID, groupName, - kurrentdb.DeletePersistentSubscriptionOptions{}, + trogoneventstore.DeletePersistentSubscriptionOptions{}, ) s.NoError(err) } @@ -189,8 +189,8 @@ func (s *PersistentSubscriptionSuite) TestSubscriptionClosing() { groupName := "Group 1" - err := s.client.CreatePersistentSubscription(context.Background(), streamId, groupName, kurrentdb.PersistentStreamSubscriptionOptions{ - StartFrom: kurrentdb.Start{}, + err := s.client.CreatePersistentSubscription(context.Background(), streamId, groupName, trogoneventstore.PersistentStreamSubscriptionOptions{ + StartFrom: trogoneventstore.Start{}, }) s.NoError(err) @@ -199,7 +199,7 @@ func (s *PersistentSubscriptionSuite) TestSubscriptionClosing() { var droppedEvent sync.WaitGroup subscription, err := s.client.SubscribeToPersistentSubscription( - context.Background(), streamId, groupName, kurrentdb.SubscribeToPersistentSubscriptionOptions{ + context.Background(), streamId, groupName, trogoneventstore.SubscribeToPersistentSubscriptionOptions{ BufferSize: 2, }) @@ -245,11 +245,11 @@ func (s *PersistentSubscriptionSuite) TestPersistentAllCreate() { err := s.client.CreatePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.PersistentAllSubscriptionOptions{}, + trogoneventstore.PersistentAllSubscriptionOptions{}, ) if err != nil { - if kurrentDbError, ok := kurrentdb.FromError(err); ok && kurrentDbError.Code() == kurrentdb.ErrorCodeUnsupportedFeature { + if serverError, ok := trogoneventstore.FromError(err); ok && serverError.Code() == trogoneventstore.ErrorCodeUnsupportedFeature { s.T().Skip("Feature not supported in this version") } } @@ -259,19 +259,19 @@ func (s *PersistentSubscriptionSuite) TestPersistentAllCreate() { func (s *PersistentSubscriptionSuite) TestPersistentAllCreateWithStrategy() { groupName := s.fixture.NewGroupId() - settings := kurrentdb.SubscriptionSettingsDefault() - settings.ConsumerStrategyName = kurrentdb.ConsumerStrategyPinnedByCorrelation + settings := trogoneventstore.SubscriptionSettingsDefault() + settings.ConsumerStrategyName = trogoneventstore.ConsumerStrategyPinnedByCorrelation err := s.client.CreatePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.PersistentAllSubscriptionOptions{ + trogoneventstore.PersistentAllSubscriptionOptions{ Settings: &settings, }, ) if err != nil { - if kurrentDbError, ok := kurrentdb.FromError(err); ok && kurrentDbError.Code() == kurrentdb.ErrorCodeUnsupportedFeature { + if serverError, ok := trogoneventstore.FromError(err); ok && serverError.Code() == trogoneventstore.ErrorCodeUnsupportedFeature { s.T().Skip("Feature not supported in this version") } } @@ -281,11 +281,11 @@ func (s *PersistentSubscriptionSuite) TestPersistentAllCreateWithStrategy() { info, err := s.client.GetPersistentSubscriptionInfoToAll( context.Background(), groupName, - kurrentdb.GetPersistentSubscriptionOptions{}, + trogoneventstore.GetPersistentSubscriptionOptions{}, ) s.Require().NoError(err) - s.Require().Equal(kurrentdb.ConsumerStrategyPinnedByCorrelation, info.Settings.ConsumerStrategyName) + s.Require().Equal(trogoneventstore.ConsumerStrategyPinnedByCorrelation, info.Settings.ConsumerStrategyName) } func (s *PersistentSubscriptionSuite) TestPersistentAllUpdate() { @@ -295,23 +295,23 @@ func (s *PersistentSubscriptionSuite) TestPersistentAllUpdate() { err := s.client.CreatePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.PersistentAllSubscriptionOptions{}, + trogoneventstore.PersistentAllSubscriptionOptions{}, ) if err != nil { - if kurrentDbError, ok := kurrentdb.FromError(err); ok && kurrentDbError.Code() == kurrentdb.ErrorCodeUnsupportedFeature { + if serverError, ok := trogoneventstore.FromError(err); ok && serverError.Code() == trogoneventstore.ErrorCodeUnsupportedFeature { s.T().Skip("Feature not supported in this version") } } s.Require().NoError(err) // Update settings - settings := kurrentdb.SubscriptionSettingsDefault() + settings := trogoneventstore.SubscriptionSettingsDefault() settings.ResolveLinkTos = true err = s.client.UpdatePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.PersistentAllSubscriptionOptions{ + trogoneventstore.PersistentAllSubscriptionOptions{ Settings: &settings, }, ) @@ -325,10 +325,10 @@ func (s *PersistentSubscriptionSuite) TestPersistentAllDelete() { err := s.client.CreatePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.PersistentAllSubscriptionOptions{}, + trogoneventstore.PersistentAllSubscriptionOptions{}, ) if err != nil { - if kurrentDbError, ok := kurrentdb.FromError(err); ok && kurrentDbError.Code() == kurrentdb.ErrorCodeUnsupportedFeature { + if serverError, ok := trogoneventstore.FromError(err); ok && serverError.Code() == trogoneventstore.ErrorCodeUnsupportedFeature { s.T().Skip("Feature not supported in this version") } } @@ -338,7 +338,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentAllDelete() { err = s.client.DeletePersistentSubscriptionToAll( context.Background(), groupName, - kurrentdb.DeletePersistentSubscriptionOptions{}, + trogoneventstore.DeletePersistentSubscriptionOptions{}, ) s.Require().NoError(err) } @@ -353,7 +353,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentListAllSubs() { context.Background(), streamName, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.Require().NoError(err) @@ -361,7 +361,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentListAllSubs() { context.Background(), streamName, groupName, - kurrentdb.SubscribeToPersistentSubscriptionOptions{}, + trogoneventstore.SubscribeToPersistentSubscriptionOptions{}, ) s.Require().NoError(err) defer sub.Close() @@ -382,7 +382,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentListAllSubs() { } if event.EventAppeared != nil { - err := sub.Nack("test reason", kurrentdb.NackActionPark, event.EventAppeared.Event) + err := sub.Nack("test reason", trogoneventstore.NackActionPark, event.EventAppeared.Event) s.Require().NoError(err) processed.Done() count++ @@ -403,7 +403,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentListAllSubs() { context.Background(), streamName, groupName, - kurrentdb.ReplayParkedMessagesOptions{}, + trogoneventstore.ReplayParkedMessagesOptions{}, ) s.Require().NoError(err) @@ -445,7 +445,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentListSubsForStream() { context.Background(), streamName, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{}, + trogoneventstore.PersistentStreamSubscriptionOptions{}, ) s.Require().NoError(err) expectedGroups[groupName] = struct{}{} @@ -455,7 +455,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentListSubsForStream() { subs, err := s.client.ListPersistentSubscriptionsForStream( context.Background(), streamName, - kurrentdb.ListPersistentSubscriptionsOptions{}, + trogoneventstore.ListPersistentSubscriptionsOptions{}, ) s.Require().NoError(err) s.Require().NotEmpty(subs) @@ -475,7 +475,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentGetInfo() { groupName := s.fixture.NewGroupId() // Create subscription with custom settings - settings := kurrentdb.SubscriptionSettingsDefault() + settings := trogoneventstore.SubscriptionSettingsDefault() settings.CheckpointLowerBound = 1 settings.CheckpointUpperBound = 1 @@ -483,7 +483,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentGetInfo() { context.Background(), streamName, groupName, - kurrentdb.PersistentStreamSubscriptionOptions{ + trogoneventstore.PersistentStreamSubscriptionOptions{ Settings: &settings, }, ) @@ -494,7 +494,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentGetInfo() { context.Background(), streamName, groupName, - kurrentdb.GetPersistentSubscriptionOptions{}, + trogoneventstore.GetPersistentSubscriptionOptions{}, ) s.Require().NoError(err) @@ -507,7 +507,7 @@ func (s *PersistentSubscriptionSuite) TestPersistentGetInfo() { func (s *PersistentSubscriptionSuite) TestPersistentRestartSubsystem() { err := s.client.RestartPersistentSubscriptionSubsystem( context.Background(), - kurrentdb.RestartPersistentSubscriptionSubsystemOptions{}, + trogoneventstore.RestartPersistentSubscriptionSubsystemOptions{}, ) s.Require().NoError(err) } diff --git a/test/position_parsing_test.go b/test/position_parsing_test.go index 6f41a0c..3a9f20b 100644 --- a/test/position_parsing_test.go +++ b/test/position_parsing_test.go @@ -3,44 +3,44 @@ package test import ( "testing" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" ) func TestPositionParsingSuite(t *testing.T) { t.Run("StreamPositionTests", func(t *testing.T) { - pos, err := kurrentdb.ParseStreamPosition("C:123/P:456") + pos, err := trogoneventstore.ParseStreamPosition("C:123/P:456") assert.NoError(t, err) assert.NotNil(t, pos) - obj, err := kurrentdb.ParseStreamPosition("C:-1/P:-1") + obj, err := trogoneventstore.ParseStreamPosition("C:-1/P:-1") assert.NoError(t, err) - _, ok := obj.(kurrentdb.End) + _, ok := obj.(trogoneventstore.End) assert.True(t, ok) - obj, err = kurrentdb.ParseStreamPosition("C:0/P:0") + obj, err = trogoneventstore.ParseStreamPosition("C:0/P:0") assert.NoError(t, err) - _, ok = obj.(kurrentdb.Start) + _, ok = obj.(trogoneventstore.Start) assert.True(t, ok) - obj, err = kurrentdb.ParseStreamPosition("-1") + obj, err = trogoneventstore.ParseStreamPosition("-1") assert.NoError(t, err) - _, ok = obj.(kurrentdb.End) + _, ok = obj.(trogoneventstore.End) assert.True(t, ok) - obj, err = kurrentdb.ParseStreamPosition("0") + obj, err = trogoneventstore.ParseStreamPosition("0") assert.NoError(t, err) - _, ok = obj.(kurrentdb.Start) + _, ok = obj.(trogoneventstore.Start) assert.True(t, ok) - obj, err = kurrentdb.ParseStreamPosition("42") + obj, err = trogoneventstore.ParseStreamPosition("42") assert.NoError(t, err) - value, ok := obj.(kurrentdb.StreamRevision) + value, ok := obj.(trogoneventstore.StreamRevision) assert.True(t, ok) assert.Equal(t, uint64(42), value.Value) }) diff --git a/test/projection_fixture_test.go b/test/projection_fixture_test.go index d09b8f4..3a5141e 100644 --- a/test/projection_fixture_test.go +++ b/test/projection_fixture_test.go @@ -3,29 +3,22 @@ package test import ( "context" "encoding/json" - "errors" - "io" "strings" "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/types/known/structpb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) -const projectionsStreamPrefix = "$projections-" -const projectionUpdatedEventType = "$ProjectionUpdated" - type ProjectFixture struct { *ClientFixture - projectionClient *kurrentdb.ProjectionClient + projectionClient *trogoneventstore.ProjectionClient } func NewProjectFixture(t *testing.T, clientFixture *ClientFixture) *ProjectFixture { t.Helper() - projectionClient := kurrentdb.NewProjectionClientFromExistingClient(clientFixture.Client()) + projectionClient := trogoneventstore.NewProjectionClientFromExistingClient(clientFixture.Client()) return &ProjectFixture{ projectionClient: projectionClient, @@ -42,7 +35,7 @@ func (f *ProjectFixture) WaitUntilProjectionStatusIs(t *testing.T, timeout time. case <-ctx.Done(): t.Fatalf("Timeout waiting for status %s", targetStatus) default: - status, err := f.projectionClient.GetStatus(context.Background(), name, kurrentdb.GenericProjectionOptions{}) + status, err := f.projectionClient.GetStatus(context.Background(), name, trogoneventstore.GenericProjectionOptions{}) if err != nil { t.Logf("Status check error: %v", err) time.Sleep(1 * time.Second) @@ -60,7 +53,7 @@ func (f *ProjectFixture) WaitUntilProjectionStateReady(t *testing.T, duration ti done := make(chan *state) go func() { for { - result, err := f.projectionClient.GetState(context.Background(), name, kurrentdb.GetStateProjectionOptions{}) + result, err := f.projectionClient.GetState(context.Background(), name, trogoneventstore.GetStateProjectionOptions{}) if err != nil { time.Sleep(100 * time.Millisecond) @@ -96,7 +89,7 @@ func (f *ProjectFixture) WaitUntilProjectionResultReady(t *testing.T, duration t done := make(chan *state) go func() { for { - result, err := f.projectionClient.GetResult(context.Background(), name, kurrentdb.GetResultProjectionOptions{}) + result, err := f.projectionClient.GetResult(context.Background(), name, trogoneventstore.GetResultProjectionOptions{}) if err != nil { time.Sleep(100 * time.Millisecond) @@ -128,44 +121,6 @@ func (f *ProjectFixture) WaitUntilProjectionResultReady(t *testing.T, duration t } } -// ProjectionDefinitionMetadata reads the caller-supplied metadata stamped on -// the most recent $ProjectionUpdated definition event for the named projection. -// The server serializes it as a protobuf Struct on the event's metadata. -func (f *ProjectFixture) ProjectionDefinitionMetadata(t *testing.T, name string) map[string]interface{} { - t.Helper() - - stream, err := f.Client().ReadStream(context.Background(), projectionsStreamPrefix+name, kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, - }, 100) - if err != nil { - t.Fatalf("error reading projection definition stream: %v", err) - } - defer stream.Close() - - for { - event, err := stream.Recv() - if err != nil { - if errors.Is(err, io.EOF) { - return nil - } - t.Fatalf("error receiving projection definition event: %v", err) - } - - recorded := event.OriginalEvent() - if recorded.EventType != projectionUpdatedEventType || len(recorded.UserMetadata) == 0 { - continue - } - - var s structpb.Struct - if err := proto.Unmarshal(recorded.UserMetadata, &s); err != nil { - t.Fatalf("error unmarshalling projection properties: %v", err) - } - - return s.AsMap() - } -} - func (f *ProjectFixture) Close(t *testing.T) { if f.projectionClient != nil { if err := f.projectionClient.Close(); err != nil { diff --git a/test/projection_test.go b/test/projection_test.go index 2f68562..c077b2b 100644 --- a/test/projection_test.go +++ b/test/projection_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) func TestProjectionSuite(t *testing.T) { @@ -31,7 +31,7 @@ func (s *ProjectionSuite) TestCreateProjection() { s.NoError(err) name := fixture.NewProjectionName() - err = s.fixture.ProjectionClient().Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = s.fixture.ProjectionClient().Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") @@ -44,12 +44,12 @@ func (s *ProjectionSuite) TestDeleteProjection() { s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") - err = client.Disable(context.Background(), name, kurrentdb.GenericProjectionOptions{}) + err = client.Disable(context.Background(), name, trogoneventstore.GenericProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Stopped") @@ -57,9 +57,9 @@ func (s *ProjectionSuite) TestDeleteProjection() { done := make(chan bool) go func() { for { - err = client.Delete(context.Background(), name, kurrentdb.DeleteProjectionOptions{}) - if esdbErr, ok := kurrentdb.FromError(err); !ok { - if !esdbErr.IsErrorCode(kurrentdb.ErrorCodeUnknown) { + err = client.Delete(context.Background(), name, trogoneventstore.DeleteProjectionOptions{}) + if esdbErr, ok := trogoneventstore.FromError(err); !ok { + if !esdbErr.IsErrorCode(trogoneventstore.ErrorCodeUnknown) { s.T().Errorf("Delete error: %v", esdbErr) } time.Sleep(500 * time.Millisecond) @@ -85,11 +85,11 @@ func (s *ProjectionSuite) TestUpdateProjection() { s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) for i := 0; i < 100 && err != nil; i++ { - if esdbErr, ok := kurrentdb.FromError(err); ok && esdbErr.IsErrorCode(kurrentdb.ErrorCodeUnknown) { + if esdbErr, ok := trogoneventstore.FromError(err); ok && esdbErr.IsErrorCode(trogoneventstore.ErrorCodeUnknown) { time.Sleep(1 * time.Second) - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) } } s.NoError(err) @@ -99,54 +99,44 @@ func (s *ProjectionSuite) TestUpdateProjection() { updatedScript, err := os.ReadFile("../resources/test/projection-updated.js") s.NoError(err) - err = client.Update(context.Background(), name, string(updatedScript), kurrentdb.UpdateProjectionOptions{}) + err = client.Update(context.Background(), name, string(updatedScript), trogoneventstore.UpdateProjectionOptions{}) s.NoError(err) - status, err := client.GetStatus(context.Background(), name, kurrentdb.GenericProjectionOptions{}) + status, err := client.GetStatus(context.Background(), name, trogoneventstore.GenericProjectionOptions{}) s.NoError(err) s.Equal(int64(1), status.Version) } -const projectionMetadataMinVersion = "projection caller metadata requires KurrentDB 26.2.0 or later" - -func (s *ProjectionSuite) TestCreateProjectionWithMetadata() { +func (s *ProjectionSuite) TestCreateProjectionWithAnnotations() { fixture := s.fixture - fixture.RequireMinServerVersion(s.T(), 26, 2, 0, projectionMetadataMinVersion) client := s.fixture.ProjectionClient() script, err := os.ReadFile("../resources/test/projection.js") s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{ - Metadata: map[string]interface{}{ + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{ + Annotations: map[string]string{ "deploy": "abc123", "tool": "gaffer", - "version": 42, - "labels": []interface{}{"a", "b"}, + "version": "42", + "labels": "a,b", }, }) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") - - md := fixture.ProjectionDefinitionMetadata(s.T(), name) - s.Equal("abc123", md["deploy"]) - s.Equal("gaffer", md["tool"]) - s.Equal(float64(42), md["version"]) - s.Equal([]interface{}{"a", "b"}, md["labels"]) } -func (s *ProjectionSuite) TestUpdateProjectionWithMetadata() { +func (s *ProjectionSuite) TestUpdateProjectionWithAnnotations() { fixture := s.fixture - fixture.RequireMinServerVersion(s.T(), 26, 2, 0, projectionMetadataMinVersion) client := s.fixture.ProjectionClient() script, err := os.ReadFile("../resources/test/projection.js") s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") @@ -154,57 +144,12 @@ func (s *ProjectionSuite) TestUpdateProjectionWithMetadata() { updatedScript, err := os.ReadFile("../resources/test/projection-updated.js") s.NoError(err) - err = client.Update(context.Background(), name, string(updatedScript), kurrentdb.UpdateProjectionOptions{ - Metadata: map[string]interface{}{ + err = client.Update(context.Background(), name, string(updatedScript), trogoneventstore.UpdateProjectionOptions{ + Annotations: map[string]string{ "deploy": "def456", }, }) s.NoError(err) - - md := fixture.ProjectionDefinitionMetadata(s.T(), name) - s.Equal("def456", md["deploy"]) -} - -// A plain update with no metadata must not wipe metadata stamped at create -// time. This is the behaviour deployment tooling relies on: annotate once, and -// later script-only updates leave the annotation intact. -func (s *ProjectionSuite) TestUpdateWithoutMetadataKeepsExistingMetadata() { - fixture := s.fixture - fixture.RequireMinServerVersion(s.T(), 26, 2, 0, projectionMetadataMinVersion) - client := s.fixture.ProjectionClient() - - script, err := os.ReadFile("../resources/test/projection.js") - s.NoError(err) - name := fixture.NewProjectionName() - - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{ - Metadata: map[string]interface{}{"deploy": "abc123"}, - }) - s.NoError(err) - - fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") - - updatedScript, err := os.ReadFile("../resources/test/projection-updated.js") - s.NoError(err) - - err = client.Update(context.Background(), name, string(updatedScript), kurrentdb.UpdateProjectionOptions{}) - s.NoError(err) - - md := fixture.ProjectionDefinitionMetadata(s.T(), name) - s.Equal("abc123", md["deploy"]) -} - -func (s *ProjectionSuite) TestCreateProjectionRejectsInvalidMetadata() { - fixture := s.fixture - client := s.fixture.ProjectionClient() - name := fixture.NewProjectionName() - - err := client.Create(context.Background(), name, "fromAll().when({});", kurrentdb.CreateProjectionOptions{ - Metadata: map[string]interface{}{ - "bad": make(chan int), - }, - }) - s.ErrorContains(err, "invalid projection metadata value for \"bad\"") } func (s *ProjectionSuite) TestEnableProjection() { @@ -215,12 +160,12 @@ func (s *ProjectionSuite) TestEnableProjection() { s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") - err = client.Enable(context.Background(), name, kurrentdb.GenericProjectionOptions{}) + err = client.Enable(context.Background(), name, trogoneventstore.GenericProjectionOptions{}) s.NoError(err) } @@ -231,12 +176,12 @@ func (s *ProjectionSuite) TestDisableProjection() { s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") - err = client.Abort(context.Background(), name, kurrentdb.GenericProjectionOptions{}) + err = client.Abort(context.Background(), name, trogoneventstore.GenericProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Stopped") @@ -249,12 +194,12 @@ func (s *ProjectionSuite) TestResetProjection() { s.NoError(err) name := fixture.NewProjectionName() - err = client.Create(context.Background(), name, string(script), kurrentdb.CreateProjectionOptions{}) + err = client.Create(context.Background(), name, string(script), trogoneventstore.CreateProjectionOptions{}) s.NoError(err) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") - err = client.Reset(context.Background(), name, kurrentdb.ResetProjectionOptions{}) + err = client.Reset(context.Background(), name, trogoneventstore.ResetProjectionOptions{}) s.NoError(err) } @@ -264,69 +209,44 @@ func (s *ProjectionSuite) TestGetStateProjection() { streamName := fixture.NewStreamId() projName := fixture.NewProjectionName() - events := make([]kurrentdb.EventData, 10) + events := make([]trogoneventstore.EventData, 10) for i := range events { events[i] = fixture.CreateTestEvent() } - _, err := client.Client().AppendToStream(context.Background(), streamName, kurrentdb.AppendToStreamOptions{}, events...) + _, err := client.Client().AppendToStream(context.Background(), streamName, trogoneventstore.AppendToStreamOptions{}, events...) s.NoError(err) script, err := os.ReadFile("../resources/test/projection.js") s.NoError(err) - s.NoError(client.Create(context.Background(), projName, string(script), kurrentdb.CreateProjectionOptions{})) + s.NoError(client.Create(context.Background(), projName, string(script), trogoneventstore.CreateProjectionOptions{})) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, projName, "Running") - s.NoError(client.Enable(context.Background(), projName, kurrentdb.GenericProjectionOptions{})) + s.NoError(client.Enable(context.Background(), projName, trogoneventstore.GenericProjectionOptions{})) fixture.WaitUntilProjectionStateReady(s.T(), 5*time.Minute, projName) } -func (s *ProjectionSuite) TestCreateProjectionV2Engine() { - fixture := s.fixture - client := s.fixture.ProjectionClient() - name := fixture.NewProjectionName() - - err := client.Create(context.Background(), name, "fromAll().when({$init: function (state, ev) {return {};}});", kurrentdb.CreateProjectionOptions{ - EngineVersion: kurrentdb.ProjectionEngineVersionV2, - }) - s.NoError(err) - - fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, name, "Running") -} - -func (s *ProjectionSuite) TestCreateProjectionV2EngineRejectsTrackEmittedStreams() { - fixture := s.fixture - client := s.fixture.ProjectionClient() - name := fixture.NewProjectionName() - - err := client.Create(context.Background(), name, "fromAll().when({$init: function (state, ev) {return {};}});", kurrentdb.CreateProjectionOptions{ - EngineVersion: kurrentdb.ProjectionEngineVersionV2, - TrackEmittedStreams: true, - }) - s.Error(err) -} - func (s *ProjectionSuite) TestGetResultProjection() { fixture := s.fixture client := s.fixture.ProjectionClient() streamName := fixture.NewStreamId() projName := fixture.NewProjectionName() - events := make([]kurrentdb.EventData, 10) + events := make([]trogoneventstore.EventData, 10) for i := range events { events[i] = fixture.CreateTestEvent() } - _, err := client.Client().AppendToStream(context.Background(), streamName, kurrentdb.AppendToStreamOptions{}, events...) + _, err := client.Client().AppendToStream(context.Background(), streamName, trogoneventstore.AppendToStreamOptions{}, events...) s.NoError(err) script, err := os.ReadFile("../resources/test/projection.js") s.NoError(err) - s.NoError(client.Create(context.Background(), projName, string(script), kurrentdb.CreateProjectionOptions{})) + s.NoError(client.Create(context.Background(), projName, string(script), trogoneventstore.CreateProjectionOptions{})) fixture.WaitUntilProjectionStatusIs(s.T(), 5*time.Minute, projName, "Running") - s.NoError(client.Enable(context.Background(), projName, kurrentdb.GenericProjectionOptions{})) + s.NoError(client.Enable(context.Background(), projName, trogoneventstore.GenericProjectionOptions{})) fixture.WaitUntilProjectionResultReady(s.T(), 5*time.Minute, projName) } diff --git a/test/read_all_test.go b/test/read_all_test.go index 2e52949..03a2a58 100644 --- a/test/read_all_test.go +++ b/test/read_all_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) func TestReadAllSuite(t *testing.T) { @@ -31,9 +31,9 @@ func (s *ReadAllTestSuite) TestReadAllEventsForwardsFromZeroPosition() { numberOfEvents := uint64(10) - opts := kurrentdb.ReadAllOptions{ - Direction: kurrentdb.Forwards, - From: kurrentdb.Start{}, + opts := trogoneventstore.ReadAllOptions{ + Direction: trogoneventstore.Forwards, + From: trogoneventstore.Start{}, ResolveLinkTos: true, } stream, err := client.ReadAll(ctx, opts, numberOfEvents) @@ -60,13 +60,13 @@ func (s *ReadAllTestSuite) TestReadAllEventsForwardsFromNonZeroPosition() { defer cancel() initialEvent := fixture.CreateTestEvent() - result, err := fixture.client.AppendToStream(ctx, streamId, kurrentdb.AppendToStreamOptions{}, initialEvent) + result, err := fixture.client.AppendToStream(ctx, streamId, trogoneventstore.AppendToStreamOptions{}, initialEvent) fixture.CreateTestEvents(streamId, 1000) s.NoError(err) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Position{Commit: result.CommitPosition, Prepare: result.PreparePosition}, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Position{Commit: result.CommitPosition, Prepare: result.PreparePosition}, ResolveLinkTos: true, } @@ -94,9 +94,9 @@ func (s *ReadAllTestSuite) TestReadAllEventsBackwardsFromZeroPosition() { ctx, cancel := context.WithTimeout(context.Background(), time.Duration(5)*time.Second) defer cancel() - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.End{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.End{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } @@ -138,14 +138,14 @@ func (s *ReadAllTestSuite) TestReadAllEventsBackwardsFromNonZeroPosition() { testEvents := fixture.CreateTestEvents(streamId, 1000) initialEvent := fixture.CreateTestEvent() - result, err := fixture.client.AppendToStream(ctx, streamId, kurrentdb.AppendToStreamOptions{}, initialEvent) + result, err := fixture.client.AppendToStream(ctx, streamId, trogoneventstore.AppendToStreamOptions{}, initialEvent) s.NoError(err) fixture.CreateTestEvents(streamId, 10) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Position{Commit: result.CommitPosition, Prepare: result.PreparePosition}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Position{Commit: result.CommitPosition, Prepare: result.PreparePosition}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } @@ -181,18 +181,18 @@ func (s *ReadAllTestSuite) TestReadAllEventsWithCredentialsOverride() { ctx, cancel := context.WithTimeout(context.Background(), time.Duration(5)*time.Second) defer cancel() - result, err := fixture.client.AppendToStream(ctx, streamId, kurrentdb.AppendToStreamOptions{}, fixture.CreateTestEvent()) + result, err := fixture.client.AppendToStream(ctx, streamId, trogoneventstore.AppendToStreamOptions{}, fixture.CreateTestEvent()) s.NoError(err) fixture.CreateTestEvents(streamId, 10) - opts := kurrentdb.ReadAllOptions{ - Authenticated: &kurrentdb.Credentials{ + opts := trogoneventstore.ReadAllOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, - From: kurrentdb.Position{Commit: result.CommitPosition, Prepare: result.PreparePosition}, - Direction: kurrentdb.Forwards, + From: trogoneventstore.Position{Commit: result.CommitPosition, Prepare: result.PreparePosition}, + Direction: trogoneventstore.Forwards, ResolveLinkTos: false, } diff --git a/test/read_stream_test.go b/test/read_stream_test.go index 7744a1b..fbcb645 100644 --- a/test/read_stream_test.go +++ b/test/read_stream_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -38,8 +38,8 @@ func (s *ReadStreamTestSuite) TestReadStreamEventsForwardFromZero() { // Arrange streamId := fixture.NewStreamId() testEvents := fixture.CreateTestEvents(streamId, 10) - opts := kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Forwards, + opts := trogoneventstore.ReadStreamOptions{ + Direction: trogoneventstore.Forwards, ResolveLinkTos: true, } ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) @@ -65,9 +65,9 @@ func (s *ReadStreamTestSuite) TestReadStreamEventsBackwardFromEnd() { // Arrange streamId := fixture.NewStreamId() testEvents := fixture.CreateTestEvents(streamId, 10) - opts := kurrentdb.ReadStreamOptions{ - Direction: kurrentdb.Backwards, - From: kurrentdb.End{}, + opts := trogoneventstore.ReadStreamOptions{ + Direction: trogoneventstore.Backwards, + From: trogoneventstore.End{}, ResolveLinkTos: true, } ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) @@ -96,7 +96,7 @@ func (s *ReadStreamTestSuite) TestReadStreamReturnsEOFAfterCompletion() { fixture.CreateTestEvents(streamId, 10) // Act - stream, err := client.ReadStream(context.Background(), streamId, kurrentdb.ReadStreamOptions{}, 1_024) + stream, err := client.ReadStream(context.Background(), streamId, trogoneventstore.ReadStreamOptions{}, 1_024) require.NoError(s.T(), err) defer stream.Close() @@ -118,7 +118,7 @@ func (s *ReadStreamTestSuite) TestReadStreamNotFound() { streamId := fixture.NewStreamId() // Act - stream, err := client.ReadStream(context.Background(), streamId, kurrentdb.ReadStreamOptions{}, 1) + stream, err := client.ReadStream(context.Background(), streamId, trogoneventstore.ReadStreamOptions{}, 1) require.NoError(s.T(), err) defer stream.Close() @@ -126,9 +126,9 @@ func (s *ReadStreamTestSuite) TestReadStreamNotFound() { evt, err := stream.Recv() require.Nil(s.T(), evt) - kurrentDbError, ok := kurrentdb.FromError(err) + serverError, ok := trogoneventstore.FromError(err) require.False(s.T(), ok) - require.Equal(s.T(), kurrentDbError.Code(), kurrentdb.ErrorCodeResourceNotFound) + require.Equal(s.T(), serverError.Code(), trogoneventstore.ErrorCodeResourceNotFound) } func (s *ReadStreamTestSuite) TestReadStreamWithMaxAge() { @@ -140,17 +140,17 @@ func (s *ReadStreamTestSuite) TestReadStreamWithMaxAge() { streamId := fixture.NewStreamId() fixture.CreateTestEvents(streamId, 10) - metadata := kurrentdb.StreamMetadata{} + metadata := trogoneventstore.StreamMetadata{} metadata.SetMaxAge(time.Second) - _, err := client.SetStreamMetadata(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, metadata) + _, err := client.SetStreamMetadata(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, metadata) assert.NoError(s.T(), err) // Wait for events to expire time.Sleep(2 * time.Second) // Act - stream, err := client.ReadStream(context.Background(), streamId, kurrentdb.ReadStreamOptions{}, 10) + stream, err := client.ReadStream(context.Background(), streamId, trogoneventstore.ReadStreamOptions{}, 10) require.NoError(s.T(), err) defer stream.Close() @@ -168,8 +168,8 @@ func (s *ReadStreamTestSuite) TestReadStreamWithCredentialsOverride() { // Arrange streamId := fixture.NewStreamId() - opts := kurrentdb.AppendToStreamOptions{ - Authenticated: &kurrentdb.Credentials{ + opts := trogoneventstore.AppendToStreamOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, diff --git a/test/subscriptions_test.go b/test/subscriptions_test.go index 62ef80f..a99a341 100644 --- a/test/subscriptions_test.go +++ b/test/subscriptions_test.go @@ -10,7 +10,7 @@ import ( "github.com/google/uuid" "github.com/stretchr/testify/suite" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" ) func TestSubscriptionSuite(t *testing.T) { @@ -43,8 +43,8 @@ func (s *SubscriptionTestSuite) TestStreamSubscriptionDeliversAllEventsInStreamA var appendedEvents sync.WaitGroup // Act & Assert - subscription, err := client.SubscribeToStream(context.Background(), streamId, kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, + subscription, err := client.SubscribeToStream(context.Background(), streamId, trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, }) s.NoError(err) @@ -80,8 +80,8 @@ func (s *SubscriptionTestSuite) TestStreamSubscriptionDeliversAllEventsInStreamA s.False(timedOut, "Timed out waiting for initial set of events") // Write a new event - opts2 := kurrentdb.AppendToStreamOptions{ - StreamState: kurrentdb.Revision(9), + opts2 := trogoneventstore.AppendToStreamOptions{ + StreamState: trogoneventstore.Revision(9), } writeResult, err := client.AppendToStream(context.Background(), streamId, opts2, appendEvent) s.NoError(err) @@ -107,15 +107,15 @@ func (s *SubscriptionTestSuite) TestAllSubscriptionWithFilterDeliversCorrectEven for i := 0; i < 10; i++ { event := fixture.CreateTestEvent() event.EventType = prefix + event.EventType - _, err := client.AppendToStream(context.Background(), streamId, kurrentdb.AppendToStreamOptions{}, event) + _, err := client.AppendToStream(context.Background(), streamId, trogoneventstore.AppendToStreamOptions{}, event) s.NoError(err) } // Act - subscription, err := client.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.Start{}, - Filter: &kurrentdb.SubscriptionFilter{ - Type: kurrentdb.EventFilterType, + subscription, err := client.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.Start{}, + Filter: &trogoneventstore.SubscriptionFilter{ + Type: trogoneventstore.EventFilterType, Prefixes: []string{prefix}, }, }) @@ -153,9 +153,9 @@ func (s *SubscriptionTestSuite) TestSubscribeToAllFilter() { fixture := s.fixture client := fixture.Client() - sub, err := client.SubscribeToAll(context.Background(), kurrentdb.SubscribeToAllOptions{ - From: kurrentdb.Start{}, - Filter: kurrentdb.ExcludeSystemEventsFilter(), + sub, err := client.SubscribeToAll(context.Background(), trogoneventstore.SubscribeToAllOptions{ + From: trogoneventstore.Start{}, + Filter: trogoneventstore.ExcludeSystemEventsFilter(), }) s.NoError(err) @@ -192,8 +192,8 @@ func (s *SubscriptionTestSuite) TestConnectionClosing() { streamId := fixture.NewStreamId() fixture.CreateTestEvents(streamId, 20) - subscription, err := client.SubscribeToStream(context.Background(), streamId, kurrentdb.SubscribeToStreamOptions{ - From: kurrentdb.Start{}, + subscription, err := client.SubscribeToStream(context.Background(), streamId, trogoneventstore.SubscribeToStreamOptions{ + From: trogoneventstore.Start{}, }) s.NoError(err) @@ -230,13 +230,13 @@ func (s *SubscriptionTestSuite) TestSubscriptionToAllWithCredentialsOverride() { fixture := s.fixture client := fixture.Client() - opts := kurrentdb.SubscribeToAllOptions{ - Authenticated: &kurrentdb.Credentials{ + opts := trogoneventstore.SubscribeToAllOptions{ + Authenticated: &trogoneventstore.Credentials{ Login: "admin", Password: "changeit", }, - From: kurrentdb.Start{}, - Filter: kurrentdb.ExcludeSystemEventsFilter(), + From: trogoneventstore.Start{}, + Filter: trogoneventstore.ExcludeSystemEventsFilter(), } _, err := client.SubscribeToAll(context.Background(), opts) @@ -251,11 +251,11 @@ func (s *SubscriptionTestSuite) TestSubscriptionToStreamCaughtUp() { const expectedEventCount = 10 const testTimeout = 1 * time.Minute - kurrentDbVersion, err := client.GetServerVersion() + serverVersion, err := client.GetServerVersion() s.NoError(err, "Error getting server version") - if kurrentDbVersion.Major < minSupportedVersion { - s.T().Skip("CaughtUp message is not supported in this version of KurrentDB") + if serverVersion.Major < minSupportedVersion { + s.T().Skip("CaughtUp message is not supported in this version of TrogonEventStore") } ctx, cancel := context.WithTimeout(context.Background(), testTimeout) @@ -264,7 +264,7 @@ func (s *SubscriptionTestSuite) TestSubscriptionToStreamCaughtUp() { streamId := fixture.NewStreamId() fixture.CreateTestEvents(streamId, 10) - subscription, err := client.SubscribeToStream(ctx, streamId, kurrentdb.SubscribeToStreamOptions{From: kurrentdb.Start{}}) + subscription, err := client.SubscribeToStream(ctx, streamId, trogoneventstore.SubscribeToStreamOptions{From: trogoneventstore.Start{}}) s.NoError(err) defer subscription.Close() diff --git a/test/tls_test.go b/test/tls_test.go index 4887e72..058e155 100644 --- a/test/tls_test.go +++ b/test/tls_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -19,12 +19,12 @@ import ( func TestTLS(t *testing.T) { t.Run("Default", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -32,9 +32,9 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } @@ -44,7 +44,7 @@ func TestTLS(t *testing.T) { }) t.Run("DefaultsWithCertificate", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } @@ -59,7 +59,7 @@ func TestTLS(t *testing.T) { } config.RootCAs = cp - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -68,9 +68,9 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } stream, err := c.ReadAll(context.Background(), opts, numberOfEvents) @@ -82,12 +82,12 @@ func TestTLS(t *testing.T) { }) t.Run("WithoutCertificateAndVerify", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=false", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=false", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -96,9 +96,9 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } stream, err := c.ReadAll(context.Background(), opts, numberOfEvents) @@ -111,12 +111,12 @@ func TestTLS(t *testing.T) { }) t.Run("testTLSWithoutCertificate", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -125,9 +125,9 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } _, err = c.ReadAll(context.Background(), opts, numberOfEvents) @@ -136,7 +136,7 @@ func TestTLS(t *testing.T) { }) t.Run("WithCertificate", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } @@ -151,7 +151,7 @@ func TestTLS(t *testing.T) { } config.RootCAs = cp - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -160,9 +160,9 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } stream, err := c.ReadAll(context.Background(), opts, numberOfEvents) @@ -180,12 +180,12 @@ func TestTLS(t *testing.T) { } s := fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true&tlsCAFile=%s", "localhost:2111,localhost:2112,localhost:2113", absPath) - config, err := kurrentdb.ParseConnectionString(s) + config, err := trogoneventstore.ParseConnectionString(s) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -194,9 +194,9 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } stream, err := c.ReadAll(context.Background(), opts, numberOfEvents) @@ -209,12 +209,12 @@ func TestTLS(t *testing.T) { }) t.Run("WithCertificateFromRelativeFile", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true&tlsCAFile=../certs/ca/ca.crt", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true&tlsCAFile=../certs/ca/ca.crt", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -224,9 +224,9 @@ func TestTLS(t *testing.T) { WaitForAdminToBeAvailable(t, c) numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } stream, err := c.ReadAll(context.Background(), opts, numberOfEvents) @@ -238,7 +238,7 @@ func TestTLS(t *testing.T) { }) t.Run("WithInvalidCertificate", func(t *testing.T) { - config, err := kurrentdb.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true", "localhost:2111,localhost:2112,localhost:2113")) + config, err := trogoneventstore.ParseConnectionString(fmt.Sprintf("esdb://admin:changeit@%s?tls=true&tlsverifycert=true", "localhost:2111,localhost:2112,localhost:2113")) if err != nil { t.Fatalf("Unexpected configuration error: %s", err.Error()) } @@ -253,7 +253,7 @@ func TestTLS(t *testing.T) { } config.RootCAs = cp - c, err := kurrentdb.NewClient(config) + c, err := trogoneventstore.NewClient(config) if err != nil { t.Fatalf("Unexpected error: %s", err.Error()) } @@ -262,25 +262,25 @@ func TestTLS(t *testing.T) { numberOfEventsToRead := 1 numberOfEvents := uint64(numberOfEventsToRead) - opts := kurrentdb.ReadAllOptions{ - From: kurrentdb.Start{}, - Direction: kurrentdb.Backwards, + opts := trogoneventstore.ReadAllOptions{ + From: trogoneventstore.Start{}, + Direction: trogoneventstore.Backwards, ResolveLinkTos: true, } _, err = c.ReadAll(context.Background(), opts, numberOfEvents) - esdbErr, ok := kurrentdb.FromError(err) + esdbErr, ok := trogoneventstore.FromError(err) require.False(t, ok) require.NotNil(t, esdbErr) assert.Contains(t, esdbErr.Error(), "certificate signed by unknown authority") }) } -func WaitForAdminToBeAvailable(t *testing.T, db *kurrentdb.Client) { +func WaitForAdminToBeAvailable(t *testing.T, db *trogoneventstore.Client) { for count := 0; count < 50; count++ { ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) t.Logf("[debug] checking if admin user is available...%v/50", count) - stream, err := db.ReadStream(ctx, "$users", kurrentdb.ReadStreamOptions{}, 1) + stream, err := db.ReadStream(ctx, "$users", trogoneventstore.ReadStreamOptions{}, 1) if ctx.Err() != nil { t.Log("[debug] request timed out, retrying...") @@ -300,11 +300,11 @@ func WaitForAdminToBeAvailable(t *testing.T, db *kurrentdb.Client) { } if err != nil { - if esdbError, ok := kurrentdb.FromError(err); !ok { - if esdbError.Code() == kurrentdb.ErrorCodeResourceNotFound || - esdbError.Code() == kurrentdb.ErrorCodeUnauthenticated || - esdbError.Code() == kurrentdb.ErrorCodeDeadlineExceeded || - esdbError.Code() == kurrentdb.ErrorUnavailable { + if esdbError, ok := trogoneventstore.FromError(err); !ok { + if esdbError.Code() == trogoneventstore.ErrorCodeResourceNotFound || + esdbError.Code() == trogoneventstore.ErrorCodeUnauthenticated || + esdbError.Code() == trogoneventstore.ErrorCodeDeadlineExceeded || + esdbError.Code() == trogoneventstore.ErrorUnavailable { time.Sleep(1 * time.Second) t.Logf("[debug] not available retrying...") cancel() diff --git a/test/types_test.go b/test/types_test.go index 73e3452..2ff44d6 100644 --- a/test/types_test.go +++ b/test/types_test.go @@ -4,20 +4,20 @@ import ( "testing" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/stretchr/testify/assert" ) func TestTypes(t *testing.T) { t.Run("TestConsistentMetadataSerializationStreamAcl", func(t *testing.T) { - acl := kurrentdb.Acl{} + acl := trogoneventstore.Acl{} acl.AddReadRoles("admin") acl.AddWriteRoles("admin") acl.AddDeleteRoles("admin") acl.AddMetaReadRoles("admin") acl.AddMetaWriteRoles("admin") - expected := kurrentdb.StreamMetadata{} + expected := trogoneventstore.StreamMetadata{} expected.SetMaxAge(2 * time.Second) expected.SetCacheControl(15 * time.Second) expected.SetTruncateBefore(1) @@ -28,47 +28,47 @@ func TestTypes(t *testing.T) { bytes, err := expected.ToJson() assert.NoError(t, err, "failed to serialize in JSON") - meta, err := kurrentdb.StreamMetadataFromJson(bytes) + meta, err := trogoneventstore.StreamMetadataFromJson(bytes) assert.NoError(t, err, "failed to parse Metadata from props") assert.Equal(t, expected, *meta, "consistency serialization failure") }) t.Run("TestConsistentMetadataSerializationUserStreamAcl", func(t *testing.T) { - expected := kurrentdb.StreamMetadata{} + expected := trogoneventstore.StreamMetadata{} expected.SetMaxAge(2 * time.Second) expected.SetCacheControl(15 * time.Second) expected.SetTruncateBefore(1) expected.SetMaxCount(12) - expected.SetAcl(kurrentdb.UserStreamAcl) + expected.SetAcl(trogoneventstore.UserStreamAcl) expected.AddCustomProperty("foo", "bar") bytes, err := expected.ToJson() assert.NoError(t, err, "failed to serialize in JSON") - meta, err := kurrentdb.StreamMetadataFromJson(bytes) + meta, err := trogoneventstore.StreamMetadataFromJson(bytes) assert.NoError(t, err, "failed to parse Metadata from props") assert.Equal(t, expected, *meta, "consistency serialization failure") }) t.Run("TestConsistentMetadataSerializationSystemStreamAcl", func(t *testing.T) { - expected := kurrentdb.StreamMetadata{} + expected := trogoneventstore.StreamMetadata{} expected.SetMaxAge(2 * time.Second) expected.SetCacheControl(15 * time.Second) expected.SetTruncateBefore(1) expected.SetMaxCount(12) - expected.SetAcl(kurrentdb.SystemStreamAcl) + expected.SetAcl(trogoneventstore.SystemStreamAcl) expected.AddCustomProperty("foo", "bar") bytes, err := expected.ToJson() assert.NoError(t, err, "failed to serialize in JSON") - meta, err := kurrentdb.StreamMetadataFromJson(bytes) + meta, err := trogoneventstore.StreamMetadataFromJson(bytes) assert.NoError(t, err, "failed to parse Metadata from props") assert.Equal(t, expected, *meta, "consistency serialization failure") }) t.Run("TestCustomPropertyRetrievalFromStreamMetadata", func(t *testing.T) { - expected := kurrentdb.StreamMetadata{} + expected := trogoneventstore.StreamMetadata{} expected.AddCustomProperty("foo", "bar") foo := expected.CustomProperty("foo") @@ -76,7 +76,7 @@ func TestTypes(t *testing.T) { }) t.Run("TestUnknownCustomPropertyRetrievalFromStreamMetadata", func(t *testing.T) { - expected := kurrentdb.StreamMetadata{} + expected := trogoneventstore.StreamMetadata{} expected.AddCustomProperty("foo", "bar") foo := expected.CustomProperty("foes") @@ -84,7 +84,7 @@ func TestTypes(t *testing.T) { }) t.Run("TestGetAllCustomPropertiesFromStreamMetadata", func(t *testing.T) { - expected := kurrentdb.StreamMetadata{} + expected := trogoneventstore.StreamMetadata{} expected.AddCustomProperty("foo", 123) expected.AddCustomProperty("foes", "baz") diff --git a/test/uuid_parsing_test.go b/test/uuid_parsing_test.go index 97ddae8..afb3fbe 100644 --- a/test/uuid_parsing_test.go +++ b/test/uuid_parsing_test.go @@ -3,8 +3,8 @@ package test import ( "testing" + "github.com/TrogonStack/TrogonEventStore-Client-Go/trogoneventstore" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/kurrentdb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -12,8 +12,8 @@ import ( func TestUUIDParsingSuite(t *testing.T) { t.Run("UUIDParsingTests", func(t *testing.T) { expected := uuid.New() - most, least := kurrentdb.UUIDAsInt64(expected) - actual, err := kurrentdb.ParseUUIDFromInt64(most, least) + most, least := trogoneventstore.UUIDAsInt64(expected) + actual, err := trogoneventstore.ParseUUIDFromInt64(most, least) require.NoError(t, err) assert.Equal(t, expected, actual) diff --git a/kurrentdb/append_options.go b/trogoneventstore/append_options.go similarity index 97% rename from kurrentdb/append_options.go rename to trogoneventstore/append_options.go index a83ca6d..e1b4328 100644 --- a/kurrentdb/append_options.go +++ b/trogoneventstore/append_options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "time" diff --git a/kurrentdb/client.go b/trogoneventstore/client.go similarity index 73% rename from kurrentdb/client.go rename to trogoneventstore/client.go index e19bc1f..af8e426 100644 --- a/kurrentdb/client.go +++ b/trogoneventstore/client.go @@ -1,5 +1,5 @@ -// Package kurrentdb KurrentDB gRPC client. -package kurrentdb +// Package trogoneventstore TrogonEventStore gRPC client. +package trogoneventstore import ( "context" @@ -7,27 +7,24 @@ import ( "errors" "fmt" "io" - "iter" "strconv" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/gossip" - persistentProto "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/persistent" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" - api "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/streams" - apiV2 "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v2/streams/streams" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/gossip" + persistentProto "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/persistent" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" + api "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/streams" "google.golang.org/grpc" "google.golang.org/grpc/metadata" - "google.golang.org/protobuf/types/known/structpb" ) -// Client Represents a client to a single node. A client instance maintains a full duplex communication to KurrentDB. -// Many threads can use a KurrentDB client at the same time or a single thread can make many asynchronous requests. +// Client Represents a client to a single node. A client instance maintains a full duplex communication to TrogonEventStore. +// Many threads can use a TrogonEventStore client at the same time or a single thread can make many asynchronous requests. type Client struct { grpcClient *grpcClient config *Configuration } -// NewClient Creates a gRPC client to a KurrentDB database. +// NewClient Creates a gRPC client to a TrogonEventStore database. func NewClient(configuration *Configuration) (*Client, error) { if err := configuration.Validate(); err != nil { return nil, fmt.Errorf("invalid configuration: %w", err) @@ -155,266 +152,6 @@ func (client *Client) AppendToStream( }, nil } -// MultiStreamAppend appends events to multiple streams atomically in a single operation. -// -// Parameters: -// - context: Context for cancellation and timeouts -// - requests: Iterator of AppendStreamRequest (StreamName, Events, ExpectedStreamState) -// -// Returns: -// - *MultiStreamAppendResponse: Global position and per-stream responses -// - error: Wrapped in *Error with specific ErrorCode -// -// Errors: -// - ErrorCodeStreamRevisionConflict: Optimistic concurrency failure (*StreamRevisionConflictError) -// - ErrorCodeStreamTombstoned: Stream was deleted (*StreamTombstoneError) -// - ErrorCodeAppendRecordSizeExceeded: Event too large (*AppendRecordSizeExceededError) -// - ErrorCodeAppendTransactionSizeExceeded: Total transaction too large (*AppendTransactionSizeExceededError) -// -// Example: -// -// response, err := db.MultiStreamAppend(context.Background(), slices.Values(requests)) -// if err != nil { -// var esErr *kurrentdb.Error -// if errors.As(err, &esErr) { -// if esErr.Code() == kurrentdb.ErrorCodeStreamRevisionConflict { -// var conflictErr *kurrentdb.StreamRevisionConflictError -// errors.As(esErr.Err(), &conflictErr) -// } -// } -// } -// -// Note: Currently, metadata must be valid JSON with string keys and string values. Binary metadata will not be supported in this version. This limitation ensures compatibility with KurrentDB's metadata handling and will be removed in the next major release. -func (client *Client) MultiStreamAppend( - context context.Context, - requests iter.Seq[AppendStreamRequest], -) (*MultiStreamAppendResponse, error) { - var opts AppendToStreamOptions - opts.setDefaults() - - for request := range requests { - for event := range request.Events { - if len(event.Metadata) > 0 { - var metadataMap map[string]string - if err := json.Unmarshal(event.Metadata, &metadataMap); err != nil { - return nil, fmt.Errorf("event metadata must be a valid JSON map[string]string: %w", err) - } - } - } - } - - handle, err := client.grpcClient.getConnectionHandle() - if err != nil { - return nil, err - } - - if !handle.SupportsFeature(featureMultiStreamAppend) { - return nil, unsupportedFeatureError() - } - - streamsClient := apiV2.NewStreamsServiceClient(handle.Connection()) - var headers, trailers metadata.MD - callOptions := []grpc.CallOption{grpc.Header(&headers), grpc.Trailer(&trailers)} - callOptions, ctx, cancel := configureGrpcCall_(context, client.config, &opts, callOptions, client.grpcClient.perRPCCredentials, false) - defer cancel() - - appendOperation, err := streamsClient.AppendSession(ctx, callOptions...) - if err != nil { - err = client.grpcClient.handleError(handle, trailers, err) - return nil, fmt.Errorf("could not construct multi stream append session. reason: %w", err) - } - - for request := range requests { - records := make([]*apiV2.AppendRecord, 0) - - for event := range request.Events { - properties := make(map[string]*structpb.Value) - - contentType := apiV2.SchemaFormat_SCHEMA_FORMAT_BYTES - if event.ContentType == ContentTypeJson { - contentType = apiV2.SchemaFormat_SCHEMA_FORMAT_JSON - } - - metadataProperties, err := mapMetadataToValue(event.Metadata) - if err != nil { - return nil, fmt.Errorf("could not map event metadata to dynamic values: %w", err) - } - for key, value := range metadataProperties { - properties[key] = value - } - - recordId := event.EventID.String() - - records = append(records, &apiV2.AppendRecord{ - RecordId: &recordId, - Properties: properties, - Schema: &apiV2.SchemaInfo{ - Format: contentType, - Name: event.EventType, - }, - Data: event.Data, - }) - } - - expectedRevision := request.ExpectedStreamState.toRawInt64() - if err = appendOperation.Send(&apiV2.AppendRequest{ - Stream: request.StreamName, - Records: records, - ExpectedRevision: &expectedRevision, - }); err != nil { - err = client.grpcClient.handleError(handle, trailers, err) - return nil, fmt.Errorf("could not send multi stream append request. reason: %w", err) - } - } - - response, err := appendOperation.CloseAndRecv() - if err != nil { - err = client.grpcClient.handleError(handle, trailers, err) - return nil, err - } - - responses := make([]AppendResponse, 0) - - for _, output := range response.GetOutput() { - responses = append(responses, AppendResponse{ - Stream: output.Stream, - StreamRevision: output.StreamRevision, - }) - } - - return &MultiStreamAppendResponse{ - Position: response.Position, - Responses: responses, - }, nil -} - -// AppendRecords appends records to one or more streams atomically with cross-stream consistency checks. -// -// Records can be interleaved across streams in any order and the global log preserves -// the exact sequence from the request. Consistency checks are decoupled from writes: -// a check can reference any stream, whether or not the request writes to it. -// -// Parameters: -// - context: Context for cancellation and timeouts -// - records: Slice of AppendRecord (Stream, Record) -// - checks: Optional consistency checks evaluated before commit -// -// Returns: -// - *AppendRecordsResponse: Global position and per-stream responses -// - error: Wrapped in *Error with specific ErrorCode -// -// Errors: -// - ErrorCodeAppendConsistencyViolation: One or more consistency checks failed (*AppendConsistencyViolationError) -// - ErrorCodeAppendRecordSizeExceeded: Event too large (*AppendRecordSizeExceededError) -// - ErrorCodeAppendTransactionSizeExceeded: Total transaction too large (*AppendTransactionSizeExceededError) -// - ErrorCodeUnsupportedFeature: Server does not support AppendRecords -func (client *Client) AppendRecords( - context context.Context, - records []AppendRecord, - checks ...ConsistencyCheck, -) (*AppendRecordsResponse, error) { - if len(records) == 0 { - return nil, fmt.Errorf("at least one record is required") - } - - for _, record := range records { - if len(record.Record.Metadata) > 0 { - var metadataMap map[string]string - if err := json.Unmarshal(record.Record.Metadata, &metadataMap); err != nil { - return nil, fmt.Errorf("event metadata must be a valid JSON map[string]string: %w", err) - } - } - } - - handle, err := client.grpcClient.getConnectionHandle() - if err != nil { - return nil, err - } - - if !handle.SupportsFeature(featureAppendRecords) { - return nil, unsupportedFeatureError() - } - - var opts appendRecordsOptions - streamsClient := apiV2.NewStreamsServiceClient(handle.Connection()) - var headers, trailers metadata.MD - callOptions := []grpc.CallOption{grpc.Header(&headers), grpc.Trailer(&trailers)} - callOptions, ctx, cancel := configureGrpcCall_(context, client.config, &opts, callOptions, client.grpcClient.perRPCCredentials, false) - defer cancel() - - protoRecords := make([]*apiV2.AppendRecord, 0, len(records)) - for _, record := range records { - properties := make(map[string]*structpb.Value) - - contentType := apiV2.SchemaFormat_SCHEMA_FORMAT_BYTES - if record.Record.ContentType == ContentTypeJson { - contentType = apiV2.SchemaFormat_SCHEMA_FORMAT_JSON - } - - metadataProperties, err := mapMetadataToValue(record.Record.Metadata) - if err != nil { - return nil, fmt.Errorf("could not map event metadata to dynamic values: %w", err) - } - for key, value := range metadataProperties { - properties[key] = value - } - - recordId := record.Record.EventID.String() - - protoRecords = append(protoRecords, &apiV2.AppendRecord{ - RecordId: &recordId, - Properties: properties, - Schema: &apiV2.SchemaInfo{ - Format: contentType, - Name: record.Record.EventType, - }, - Data: record.Record.Data, - Stream: record.Stream, - }) - } - - request := &apiV2.AppendRecordsRequest{ - Records: protoRecords, - } - - if len(checks) > 0 { - protoChecks := make([]*apiV2.ConsistencyCheck, 0, len(checks)) - for _, check := range checks { - switch c := check.(type) { - case StreamStateCheck: - protoChecks = append(protoChecks, &apiV2.ConsistencyCheck{ - Type: &apiV2.ConsistencyCheck_StreamState{ - StreamState: &apiV2.ConsistencyCheck_StreamStateCheck{ - Stream: c.Stream, - ExpectedState: c.ExpectedState.toRawInt64(), - }, - }, - }) - } - } - request.Checks = protoChecks - } - - response, err := streamsClient.AppendRecords(ctx, request, callOptions...) - if err != nil { - err = client.grpcClient.handleError(handle, trailers, err) - return nil, err - } - - responses := make([]AppendResponse, 0, len(response.GetRevisions())) - for _, revision := range response.GetRevisions() { - responses = append(responses, AppendResponse{ - Stream: revision.Stream, - StreamRevision: revision.Revision, - }) - } - - return &AppendRecordsResponse{ - Position: response.Position, - Responses: responses, - }, nil -} - // SetStreamMetadata Sets the metadata for a stream. func (client *Client) SetStreamMetadata( context context.Context, @@ -1056,21 +793,3 @@ func (client *Client) Gossip(ctx context.Context) ([]*gossip.MemberInfo, error) return clusterInfo.Members, nil } - -func mapMetadataToValue(metadata []byte) (map[string]*structpb.Value, error) { - if len(metadata) == 0 { - return make(map[string]*structpb.Value), nil - } - - var metadataMap map[string]string - if err := json.Unmarshal(metadata, &metadataMap); err != nil { - return nil, fmt.Errorf("failed to unmarshal metadata as JSON: %w", err) - } - - properties := make(map[string]*structpb.Value) - for key, value := range metadataMap { - properties[key] = structpb.NewStringValue(value) - } - - return properties, nil -} diff --git a/kurrentdb/configuration.go b/trogoneventstore/configuration.go similarity index 95% rename from kurrentdb/configuration.go rename to trogoneventstore/configuration.go index c2dcb08..df43769 100644 --- a/kurrentdb/configuration.go +++ b/trogoneventstore/configuration.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" @@ -13,14 +13,8 @@ import ( ) var supportedProtocols = map[string]struct{}{ - "esdb": {}, - "esdb+discover": {}, - "kdb": {}, - "kdb+discover": {}, - "kurrent": {}, - "kurrent+discover": {}, - "kurrentdb": {}, - "kurrentdb+discover": {}, + "esdb": {}, + "esdb+discover": {}, } var basepath string @@ -30,9 +24,9 @@ func init() { basepath = cwd } -// Configuration describes how to connect to an instance of KurrentDB. +// Configuration describes how to connect to an instance of TrogonEventStore. type Configuration struct { - // The URI of the KurrentDB. Use this when connecting to a single node. + // The URI of the TrogonEventStore. Use this when connecting to a single node. // Example: localhost:2113 Address string @@ -45,10 +39,10 @@ type Configuration struct { // The NodePreference to use when connecting. NodePreference NodePreference - // The username to use for authenticating against the KurrentDB instance. + // The username to use for authenticating against the TrogonEventStore instance. Username string - // The password to use for authenticating against the KurrentDB instance. + // The password to use for authenticating against the TrogonEventStore instance. Password string // RootCAs defines the set of root certificate authorities @@ -154,7 +148,7 @@ func initConfiguration() *Configuration { } } -// ParseConnectionString creates a Configuration based on an EventStoreDb connection string. +// ParseConnectionString creates a Configuration from a TrogonEventStore connection string. func ParseConnectionString(connectionString string) (*Configuration, error) { url, err := url2.Parse(connectionString) diff --git a/kurrentdb/credentials.go b/trogoneventstore/credentials.go similarity index 98% rename from kurrentdb/credentials.go rename to trogoneventstore/credentials.go index 084207d..10e33d5 100644 --- a/kurrentdb/credentials.go +++ b/trogoneventstore/credentials.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" diff --git a/kurrentdb/credentials_test.go b/trogoneventstore/credentials_test.go similarity index 99% rename from kurrentdb/credentials_test.go rename to trogoneventstore/credentials_test.go index 6dda6d3..dc33082 100644 --- a/kurrentdb/credentials_test.go +++ b/trogoneventstore/credentials_test.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" diff --git a/kurrentdb/delete_options.go b/trogoneventstore/delete_options.go similarity index 97% rename from kurrentdb/delete_options.go rename to trogoneventstore/delete_options.go index 32d0da5..4110efb 100644 --- a/kurrentdb/delete_options.go +++ b/trogoneventstore/delete_options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "time" diff --git a/kurrentdb/delete_result.go b/trogoneventstore/delete_result.go similarity index 87% rename from kurrentdb/delete_result.go rename to trogoneventstore/delete_result.go index fd48308..38e2c18 100644 --- a/kurrentdb/delete_result.go +++ b/trogoneventstore/delete_result.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore // DeleteResult is returned on a successful stream deletion request. type DeleteResult struct { diff --git a/kurrentdb/endpoint.go b/trogoneventstore/endpoint.go similarity index 99% rename from kurrentdb/endpoint.go rename to trogoneventstore/endpoint.go index cfea8cf..6eabf6a 100644 --- a/kurrentdb/endpoint.go +++ b/trogoneventstore/endpoint.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "fmt" diff --git a/trogoneventstore/errors.go b/trogoneventstore/errors.go new file mode 100644 index 0000000..21e50c3 --- /dev/null +++ b/trogoneventstore/errors.go @@ -0,0 +1,140 @@ +package trogoneventstore + +import ( + "fmt" +) + +// ErrorCode TrogonEventStore error code. +type ErrorCode int + +const ( + // ErrorCodeUnknown unclassified error. + ErrorCodeUnknown ErrorCode = iota + // ErrorCodeUnsupportedFeature a request not supported by the targeted TrogonEventStore node was sent. + ErrorCodeUnsupportedFeature + // ErrorCodeDeadlineExceeded a gRPC deadline exceeded error. + ErrorCodeDeadlineExceeded + // ErrorCodeUnauthenticated a request requires authentication and the authentication failed. + ErrorCodeUnauthenticated + // ErrorCodeResourceNotFound a remote resource was not found or because its access was denied. + ErrorCodeResourceNotFound + // ErrorCodeResourceAlreadyExists a creation request was made for a resource that already exists. + ErrorCodeResourceAlreadyExists + // ErrorCodeConnectionClosed when a connection is already closed. + ErrorCodeConnectionClosed + // ErrorCodeWrongExpectedVersion when an append request failed the optimistic concurrency on the server. + ErrorCodeWrongExpectedVersion + // ErrorCodeAccessDenied a request requires the right ACL. + ErrorCodeAccessDenied + // ErrorCodeStreamDeleted requested stream is deleted. + ErrorCodeStreamDeleted + // ErrorCodeParsing error when parsing data. + ErrorCodeParsing + // ErrorCodeInternalClient unexpected error from the client library, worthy of a GitHub issue. + ErrorCodeInternalClient + // ErrorCodeInternalServer unexpected error from the server, worthy of a GitHub issue. + ErrorCodeInternalServer + // ErrorCodeNotLeader when a request needing a leader node was executed on a follower node. + ErrorCodeNotLeader + // ErrorAborted when the server aborted the request. + ErrorAborted + // ErrorUnavailable when the TrogonEventStore node became unavailable. + ErrorUnavailable +) + +// Error main client error type. +type Error struct { + code ErrorCode + err error +} + +// Code returns an error code. +func (e *Error) Code() ErrorCode { + return e.code +} + +// Err returns underlying error. +func (e *Error) Err() error { + return e.err +} + +// IsErrorCode checks if the error code is the same as the given one. +func (e *Error) IsErrorCode(code ErrorCode) bool { + return e.code == code +} + +func (e *Error) Error() string { + msg := "" + + switch e.code { + case ErrorCodeUnsupportedFeature: + msg = "[ErrorCodeUnsupportedFeature] request not supported by the targeted TrogonEventStore node" + case ErrorCodeDeadlineExceeded: + msg = "[ErrorCodeDeadlineExceeded] gRPC deadline exceeded error" + case ErrorCodeUnauthenticated: + msg = "[ErrorCodeUnauthenticated] request requires authentication and the authentication failed" + case ErrorCodeResourceNotFound: + msg = "[ErrorCodeResourceNotFound] a remote resource was not found or its access was denied" + case ErrorCodeResourceAlreadyExists: + msg = "[ErrorCodeResourceAlreadyExists] a creation request was made for a resource that already exists" + case ErrorCodeConnectionClosed: + msg = "[ErrorCodeConnectionClosed] the connection is already closed" + case ErrorCodeWrongExpectedVersion: + msg = "[ErrorCodeWrongExpectedVersion] an append request failed the optimistic concurrency on the server" + case ErrorCodeAccessDenied: + msg = "[ErrorCodeAccessDenied] the request requires the right ACL" + case ErrorCodeStreamDeleted: + msg = "[ErrorCodeStreamDeleted] requested stream is deleted" + case ErrorCodeParsing: + msg = "[ErrorCodeParsing] error when parsing data" + case ErrorCodeInternalClient: + msg = "[ErrorCodeInternalClient] unexpected error from the client library, worthy of a GitHub issue" + case ErrorCodeInternalServer: + msg = "[ErrorCodeInternalServer] unexpected error from the server, worthy of a GitHub issue" + case ErrorCodeNotLeader: + msg = "[ErrorCodeNotLeader] the request needing a leader node was executed on a follower node" + case ErrorUnavailable: + msg = "[ErrorUnavailable] the server is not ready to accept requests" + default: + msg = fmt.Sprintf("[ErrorCode %d] (sorry, this error code is not supported by the Error() method)", e.code) + } + + if e.err != nil { + msg = fmt.Sprintf("%s: %v", msg, e.Err()) + } + + return msg +} + +func (e *Error) Unwrap() error { + return e.Err() +} + +func FromError(err error) (*Error, bool) { + if err == nil { + return nil, true + } + + if esErr, ok := err.(*Error); ok { + return esErr, false + } + + return &Error{code: ErrorCodeUnknown, err: err}, false +} + +func unsupportedFeatureError() error { + return &Error{code: ErrorCodeUnsupportedFeature} +} + +func unknownError() error { + return &Error{code: ErrorCodeUnknown} +} + +// StreamDeletedError represents an error when attempting to access a deleted stream. +type StreamDeletedError struct { + Stream string +} + +func (e *StreamDeletedError) Error() string { + return fmt.Sprintf("[ErrorCodeStreamDeleted] stream deleted: stream=%s", e.Stream) +} diff --git a/kurrentdb/event_data.go b/trogoneventstore/event_data.go similarity index 83% rename from kurrentdb/event_data.go rename to trogoneventstore/event_data.go index 7175ff7..4332fcb 100644 --- a/kurrentdb/event_data.go +++ b/trogoneventstore/event_data.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import "github.com/google/uuid" @@ -12,7 +12,7 @@ const ( ContentTypeJson ContentType = 1 ) -// EventData represents an event that will be sent to KurrentDB. +// EventData represents an event that will be sent to TrogonEventStore. type EventData struct { // Event's unique identifier. EventID uuid.UUID diff --git a/kurrentdb/impl.go b/trogoneventstore/impl.go similarity index 96% rename from kurrentdb/impl.go rename to trogoneventstore/impl.go index 4c170eb..0708328 100644 --- a/kurrentdb/impl.go +++ b/trogoneventstore/impl.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" @@ -13,9 +13,9 @@ import ( "github.com/google/uuid" - gossipApi "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/gossip" - server_features "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/serverfeatures" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + gossipApi "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/gossip" + server_features "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/serverfeatures" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -41,10 +41,6 @@ func (client *grpcClient) handleError(handle *connectionHandle, trailers metadat } } - if richErr := getDetail(err); richErr != nil { - return richErr - } - values := trailers.Get("exception") if values != nil && values[0] == "not-leader" { @@ -362,8 +358,6 @@ const ( featurePersistentSubscriptionRestartSubsystem = 8 featurePersistentSubscriptionGetInfo = 16 featurePersistentSubscriptionToAll = 32 - featureMultiStreamAppend = 64 - featureAppendRecords = 128 featurePersistentSubscriptionManagement = featurePersistentSubscriptionList | featurePersistentSubscriptionGetInfo | featurePersistentSubscriptionRestartSubsystem | featurePersistentSubscriptionReplay ) @@ -405,7 +399,7 @@ func getSupportedMethods(ctx context.Context, conf *Configuration, conn *grpc.Cl num, err := strconv.Atoi(value) if err != nil { - return nil, fmt.Errorf("invalid KurrentDB server version format: %w", err) + return nil, fmt.Errorf("invalid TrogonEventStore server version format: %w", err) } switch idx { @@ -443,12 +437,6 @@ func getSupportedMethods(ctx context.Context, conf *Configuration, conn *grpc.Cl default: } default: - if method.MethodName == "appendsession" { - info.featureFlags |= featureMultiStreamAppend - } - if method.MethodName == "appendrecords" { - info.featureFlags |= featureAppendRecords - } } } diff --git a/kurrentdb/logging.go b/trogoneventstore/logging.go similarity index 98% rename from kurrentdb/logging.go rename to trogoneventstore/logging.go index 07b229b..1e1a3bc 100644 --- a/kurrentdb/logging.go +++ b/trogoneventstore/logging.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "fmt" diff --git a/kurrentdb/operations.go b/trogoneventstore/operations.go similarity index 78% rename from kurrentdb/operations.go rename to trogoneventstore/operations.go index aa6262e..31eeda1 100644 --- a/kurrentdb/operations.go +++ b/trogoneventstore/operations.go @@ -1,13 +1,13 @@ -package kurrentdb +package trogoneventstore -// ServerVersion Represents the version of a KurrentDB node. +// ServerVersion Represents the version of a TrogonEventStore node. type ServerVersion struct { Major int Minor int Patch int } -// GetServerVersion Returns the version of the KurrentDB node to which the client is currently connected. +// GetServerVersion Returns the version of the TrogonEventStore node to which the client is currently connected. func (client *Client) GetServerVersion() (*ServerVersion, error) { handle, err := client.grpcClient.getConnectionHandle() if err != nil { diff --git a/kurrentdb/options.go b/trogoneventstore/options.go similarity index 98% rename from kurrentdb/options.go rename to trogoneventstore/options.go index ebfd6c9..77b98a7 100644 --- a/kurrentdb/options.go +++ b/trogoneventstore/options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" diff --git a/kurrentdb/persistent_options.go b/trogoneventstore/persistent_options.go similarity index 99% rename from kurrentdb/persistent_options.go rename to trogoneventstore/persistent_options.go index 5bbbcb3..97e8bcb 100644 --- a/kurrentdb/persistent_options.go +++ b/trogoneventstore/persistent_options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import "time" diff --git a/kurrentdb/persistent_subscription.go b/trogoneventstore/persistent_subscription.go similarity index 94% rename from kurrentdb/persistent_subscription.go rename to trogoneventstore/persistent_subscription.go index 0d561a3..b452c38 100644 --- a/kurrentdb/persistent_subscription.go +++ b/trogoneventstore/persistent_subscription.go @@ -1,10 +1,10 @@ -package kurrentdb +package trogoneventstore import ( "context" "fmt" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/persistent" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/persistent" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" "sync/atomic" "github.com/google/uuid" diff --git a/kurrentdb/persistent_subscription_client.go b/trogoneventstore/persistent_subscription_client.go similarity index 95% rename from kurrentdb/persistent_subscription_client.go rename to trogoneventstore/persistent_subscription_client.go index ac4a4e2..95a754c 100644 --- a/kurrentdb/persistent_subscription_client.go +++ b/trogoneventstore/persistent_subscription_client.go @@ -1,11 +1,11 @@ -package kurrentdb +package trogoneventstore import ( "context" "fmt" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/persistent" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/persistent" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" "google.golang.org/grpc" "google.golang.org/grpc/metadata" @@ -73,14 +73,6 @@ func (client *persistentClient) CreateStreamSubscription( ) error { createSubscriptionConfig := createPersistentRequestProto(streamName, groupName, position, settings) - serverVersion, _ := handle.GetServerVersion() - if serverVersion != nil && serverVersion.IsBelow(21, 10, 1) { - opts := createSubscriptionConfig.Options - if opts != nil && opts.Settings != nil { - opts.Settings.NamedConsumerStrategy = consumerStrategyProto(settings.ConsumerStrategyName) - } - } - var headers, trailers metadata.MD callOptions := []grpc.CallOption{grpc.Header(&headers), grpc.Trailer(&trailers)} callOptions, ctx, cancel := configureGrpcCall(parent, conf, options, callOptions, client.inner.perRPCCredentials) @@ -108,14 +100,6 @@ func (client *persistentClient) CreateAllSubscription( return err } - serverVersion, _ := handle.GetServerVersion() - if serverVersion != nil && serverVersion.IsBelow(21, 10, 1) { - opts := protoConfig.Options - if opts != nil && opts.Settings != nil { - opts.Settings.NamedConsumerStrategy = consumerStrategyProto(settings.ConsumerStrategyName) - } - } - var headers, trailers metadata.MD callOptions := []grpc.CallOption{grpc.Header(&headers), grpc.Trailer(&trailers)} callOptions, ctx, cancel := configureGrpcCall(parent, conf, options, callOptions, client.inner.perRPCCredentials) diff --git a/kurrentdb/persistent_subscription_http_client.go b/trogoneventstore/persistent_subscription_http_client.go similarity index 99% rename from kurrentdb/persistent_subscription_http_client.go rename to trogoneventstore/persistent_subscription_http_client.go index 62cdef5..55429fc 100644 --- a/kurrentdb/persistent_subscription_http_client.go +++ b/trogoneventstore/persistent_subscription_http_client.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" diff --git a/kurrentdb/position.go b/trogoneventstore/position.go similarity index 97% rename from kurrentdb/position.go rename to trogoneventstore/position.go index ed200f6..f9b6bc7 100644 --- a/kurrentdb/position.go +++ b/trogoneventstore/position.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore // StreamRevision returns a stream position at a specific event revision. type StreamRevision struct { diff --git a/kurrentdb/projection_client.go b/trogoneventstore/projection_client.go similarity index 92% rename from kurrentdb/projection_client.go rename to trogoneventstore/projection_client.go index 4aeff51..f07af4b 100644 --- a/kurrentdb/projection_client.go +++ b/trogoneventstore/projection_client.go @@ -1,11 +1,11 @@ -package kurrentdb +package trogoneventstore import ( "context" "errors" "fmt" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/projections" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/projections" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" "io" "google.golang.org/grpc" @@ -13,23 +13,6 @@ import ( "google.golang.org/protobuf/types/known/structpb" ) -func projectionMetadata(md map[string]interface{}) (map[string]*structpb.Value, error) { - if len(md) == 0 { - return nil, nil - } - - out := make(map[string]*structpb.Value, len(md)) - for key, value := range md { - v, err := structpb.NewValue(value) - if err != nil { - return nil, fmt.Errorf("invalid projection metadata value for %q: %w", key, err) - } - out[key] = v - } - - return out, nil -} - type ProjectionClient struct { inner *Client } @@ -68,15 +51,6 @@ func (client *ProjectionClient) Create( ) error { opts.setDefaults() - if opts.EngineVersion == ProjectionEngineVersionV2 && opts.TrackEmittedStreams { - return errors.New("trackEmittedStreams is not supported when engineVersion is V2") - } - - metadataProps, err := projectionMetadata(opts.Metadata) - if err != nil { - return err - } - handle, err := client.inner.grpcClient.getConnectionHandle() if err != nil { return err @@ -90,9 +64,12 @@ func (client *ProjectionClient) Create( _, err = projClient.Create(ctx, &projections.CreateReq{ Options: &projections.CreateReq_Options{ - Query: query, - EngineVersion: int32(opts.EngineVersion), - Properties: metadataProps, + Query: query, + HandlerType: "JS", + Name: &name, + EmitEnabled: opts.Emit, + TrackEmittedStreams: opts.TrackEmittedStreams, + Annotations: opts.Annotations, Mode: &projections.CreateReq_Options_Continuous_{ Continuous: &projections.CreateReq_Options_Continuous{ Name: name, @@ -114,11 +91,6 @@ func (client *ProjectionClient) Update( ) error { opts.setDefaults() - metadataProps, err := projectionMetadata(opts.Metadata) - if err != nil { - return err - } - handle, err := client.inner.grpcClient.getConnectionHandle() if err != nil { return err @@ -131,9 +103,9 @@ func (client *ProjectionClient) Update( defer cancel() options := &projections.UpdateReq_Options{ - Name: name, - Query: query, - Properties: metadataProps, + Name: name, + Query: query, + Annotations: opts.Annotations, } if opts.Emit == nil { diff --git a/trogoneventstore/projection_contract_test.go b/trogoneventstore/projection_contract_test.go new file mode 100644 index 0000000..b4927c1 --- /dev/null +++ b/trogoneventstore/projection_contract_test.go @@ -0,0 +1,129 @@ +package trogoneventstore + +import ( + "context" + "net" + "reflect" + "sync" + "testing" + + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/projections" + "github.com/google/uuid" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/test/bufconn" +) + +type projectionCaptureServer struct { + projections.UnimplementedProjectionsServer + created chan *projections.CreateReq + updated chan *projections.UpdateReq +} + +func (s *projectionCaptureServer) Create(_ context.Context, request *projections.CreateReq) (*projections.CreateResp, error) { + s.created <- request + return &projections.CreateResp{}, nil +} + +func (s *projectionCaptureServer) Update(_ context.Context, request *projections.UpdateReq) (*projections.UpdateResp, error) { + s.updated <- request + return &projections.UpdateResp{}, nil +} + +func newProjectionCaptureClient(t *testing.T) (*ProjectionClient, *projectionCaptureServer) { + t.Helper() + + listener := bufconn.Listen(1024 * 1024) + server := grpc.NewServer() + capture := &projectionCaptureServer{ + created: make(chan *projections.CreateReq, 1), + updated: make(chan *projections.UpdateReq, 1), + } + projections.RegisterProjectionsServer(server, capture) + go func() { + _ = server.Serve(listener) + }() + + connection, err := grpc.NewClient( + "passthrough:///projection-capture", + grpc.WithContextDialer(func(context.Context, string) (net.Conn, error) { + return listener.Dial() + }), + grpc.WithTransportCredentials(insecure.NewCredentials()), + ) + if err != nil { + t.Fatal(err) + } + + closed := new(int32) + connectionRequests := make(chan msg) + go func() { + for request := range connectionRequests { + get, ok := request.(getConnection) + if ok { + get.channel <- connectionHandle{id: uuid.New(), connection: connection} + } + } + }() + + inner := &Client{ + grpcClient: &grpcClient{ + channel: connectionRequests, + closeFlag: closed, + once: new(sync.Once), + }, + config: &Configuration{DisableTLS: true}, + } + t.Cleanup(func() { + inner.grpcClient.close() + _ = connection.Close() + server.Stop() + _ = listener.Close() + }) + + return NewProjectionClientFromExistingClient(inner), capture +} + +func TestProjectionContractMatchesServer(t *testing.T) { + fields := (&projections.CreateReq_Options{}).ProtoReflect().Descriptor().Fields() + + if fields.ByName("annotations") == nil { + t.Fatal("projection create contract must expose annotations") + } + if fields.ByName("engine_version") != nil { + t.Fatal("projection create contract must not expose an unsupported engine version") + } + + optionsType := reflect.TypeOf(CreateProjectionOptions{}) + annotations, ok := optionsType.FieldByName("Annotations") + if !ok || annotations.Type != reflect.TypeOf(map[string]string{}) { + t.Fatal("projection options must expose string annotations") + } + if _, ok := optionsType.FieldByName("Metadata"); ok { + t.Fatal("projection options must use the server contract name") + } +} + +func TestProjectionClientSendsAnnotations(t *testing.T) { + client, capture := newProjectionCaptureClient(t) + + createAnnotations := map[string]string{"deployment": "blue", "owner": "inventory"} + if err := client.Create(context.Background(), "inventory", "fromAll()", CreateProjectionOptions{ + Annotations: createAnnotations, + }); err != nil { + t.Fatal(err) + } + if got := (<-capture.created).GetOptions().GetAnnotations(); !reflect.DeepEqual(got, createAnnotations) { + t.Fatalf("create annotations = %v, want %v", got, createAnnotations) + } + + updateAnnotations := map[string]string{"deployment": "green"} + if err := client.Update(context.Background(), "inventory", "fromAll()", UpdateProjectionOptions{ + Annotations: updateAnnotations, + }); err != nil { + t.Fatal(err) + } + if got := (<-capture.updated).GetOptions().GetAnnotations(); !reflect.DeepEqual(got, updateAnnotations) { + t.Fatalf("update annotations = %v, want %v", got, updateAnnotations) + } +} diff --git a/kurrentdb/projection_options.go b/trogoneventstore/projection_options.go similarity index 74% rename from kurrentdb/projection_options.go rename to trogoneventstore/projection_options.go index 6188c12..79872bc 100644 --- a/kurrentdb/projection_options.go +++ b/trogoneventstore/projection_options.go @@ -1,24 +1,7 @@ -package kurrentdb +package trogoneventstore import "time" -// ProjectionEngineVersion selects which projection engine the server should -// use when creating a projection. The engine version is pinned at create time -// and cannot be changed later. -type ProjectionEngineVersion int32 - -const ( - // ProjectionEngineVersionV1 selects the original projection engine. This is - // the default when EngineVersion is left unset. - ProjectionEngineVersionV1 ProjectionEngineVersion = 1 - // ProjectionEngineVersionV2 selects the next-generation projection engine - // that processes partitions in parallel. V2 is opt-in and does not support - // TrackEmittedStreams, bi-state projections, or live outputState result - // streams. See the KurrentDB documentation for the full list of limitations - // before choosing V2. - ProjectionEngineVersionV2 ProjectionEngineVersion = 2 -) - type CreateProjectionOptions struct { // Asks for authenticated request. Authenticated *Credentials @@ -30,17 +13,8 @@ type CreateProjectionOptions struct { TrackEmittedStreams bool // If the projection should be able to write events. Emit bool - // EngineVersion selects the projection engine version. Defaults to V1 - // when unset. - EngineVersion ProjectionEngineVersion - // Metadata is caller-supplied metadata stamped onto the projection - // definition event. It does not affect the projection engine and is - // intended for deployment tooling to annotate projections (for example - // with a deployment identifier or the name of the managing tool). Values - // must be JSON-compatible: string, bool, number, nil, or nested - // []interface{} and map[string]interface{} of those. Ignored by servers - // that don't support it. - Metadata map[string]interface{} + // Annotations are caller-supplied string values attached to the projection definition. + Annotations map[string]string } func (o *CreateProjectionOptions) kind() operationKind { @@ -71,14 +45,8 @@ type UpdateProjectionOptions struct { RequiresLeader bool // If the projection should be able to write events. Emit *bool - // Metadata is caller-supplied metadata stamped onto the projection - // definition event. It does not affect the projection engine and is - // intended for deployment tooling to annotate projections (for example - // with a deployment identifier or the name of the managing tool). Values - // must be JSON-compatible: string, bool, number, nil, or nested - // []interface{} and map[string]interface{} of those. Ignored by servers - // that don't support it. - Metadata map[string]interface{} + // Annotations are caller-supplied string values attached to the projection definition. + Annotations map[string]string } func (o *UpdateProjectionOptions) kind() operationKind { diff --git a/kurrentdb/protobuf_utils.go b/trogoneventstore/protobuf_utils.go similarity index 93% rename from kurrentdb/protobuf_utils.go rename to trogoneventstore/protobuf_utils.go index 30b7198..84d71a3 100644 --- a/kurrentdb/protobuf_utils.go +++ b/trogoneventstore/protobuf_utils.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "encoding/binary" @@ -7,12 +7,12 @@ import ( "strconv" "time" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/persistent" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/persistent" "github.com/google/uuid" - "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/shared" - api "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/streams" + "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/shared" + api "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/streams" ) type SubscriptionFilterOptions struct { @@ -732,34 +732,18 @@ func updatePersistentSubscriptionSettingsProto( settings PersistentSubscriptionSettings, ) *persistent.UpdateReq_Settings { return &persistent.UpdateReq_Settings{ - ResolveLinks: settings.ResolveLinkTos, - ExtraStatistics: settings.ExtraStatistics, - MaxRetryCount: settings.MaxRetryCount, - MinCheckpointCount: settings.CheckpointLowerBound, - MaxCheckpointCount: settings.CheckpointUpperBound, - MaxSubscriberCount: settings.MaxSubscriberCount, - LiveBufferSize: settings.LiveBufferSize, - ReadBatchSize: settings.ReadBatchSize, - HistoryBufferSize: settings.HistoryBufferSize, - NamedConsumerStrategy: updatePersistentRequestConsumerStrategyProto(settings.ConsumerStrategyName), - MessageTimeout: updatePersistentRequestMessageTimeOutInMsProto(settings.MessageTimeout), - CheckpointAfter: updatePersistentRequestCheckpointAfterMsProto(settings.CheckpointAfter), - } -} - -func updatePersistentRequestConsumerStrategyProto( - strategy ConsumerStrategy, -) persistent.UpdateReq_ConsumerStrategy { - switch strategy { - case ConsumerStrategyDispatchToSingle: - return persistent.UpdateReq_DispatchToSingle - case ConsumerStrategyPinned: - return persistent.UpdateReq_Pinned - // FIXME: support Pinned by correlation case ConsumerStrategy_PinnedByCorrelation: - case ConsumerStrategyRoundRobin: - return persistent.UpdateReq_RoundRobin - default: - panic(fmt.Sprintf("Could not map strategy %v to proto", strategy)) + ResolveLinks: settings.ResolveLinkTos, + ExtraStatistics: settings.ExtraStatistics, + MaxRetryCount: settings.MaxRetryCount, + MinCheckpointCount: settings.CheckpointLowerBound, + MaxCheckpointCount: settings.CheckpointUpperBound, + MaxSubscriberCount: settings.MaxSubscriberCount, + LiveBufferSize: settings.LiveBufferSize, + ReadBatchSize: settings.ReadBatchSize, + HistoryBufferSize: settings.HistoryBufferSize, + ConsumerStrategy: string(settings.ConsumerStrategyName), + MessageTimeout: updatePersistentRequestMessageTimeOutInMsProto(settings.MessageTimeout), + CheckpointAfter: updatePersistentRequestCheckpointAfterMsProto(settings.CheckpointAfter), } } @@ -945,21 +929,6 @@ func createPersistentSubscriptionSettingsProto( } } -func consumerStrategyProto(strategy ConsumerStrategy) persistent.CreateReq_ConsumerStrategy { - switch strategy { - case ConsumerStrategyDispatchToSingle: - return persistent.CreateReq_DispatchToSingle - case ConsumerStrategyPinned: - return persistent.CreateReq_Pinned - case ConsumerStrategyRoundRobin: - return persistent.CreateReq_RoundRobin - case ConsumerStrategyPinnedByCorrelation: - panic(fmt.Sprintf("PinnedByCorrelation requires database version 21.10.1 or later")) - default: - panic(fmt.Sprintf("Could not map strategy %v to proto", strategy)) - } -} - func messageTimeOutInMsProto(timeout int32) *persistent.CreateReq_Settings_MessageTimeoutMs { return &persistent.CreateReq_Settings_MessageTimeoutMs{ MessageTimeoutMs: timeout, diff --git a/kurrentdb/read_options.go b/trogoneventstore/read_options.go similarity index 98% rename from kurrentdb/read_options.go rename to trogoneventstore/read_options.go index fbdf2e9..2ebced3 100644 --- a/kurrentdb/read_options.go +++ b/trogoneventstore/read_options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "time" diff --git a/kurrentdb/reads.go b/trogoneventstore/reads.go similarity index 93% rename from kurrentdb/reads.go rename to trogoneventstore/reads.go index ae5f9c0..196a8a4 100644 --- a/kurrentdb/reads.go +++ b/trogoneventstore/reads.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" @@ -8,7 +8,7 @@ import ( "sync" "sync/atomic" - api "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/streams" + api "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/streams" "google.golang.org/grpc/metadata" ) diff --git a/kurrentdb/recorded_event.go b/trogoneventstore/recorded_event.go similarity index 96% rename from kurrentdb/recorded_event.go rename to trogoneventstore/recorded_event.go index 86f87f5..70acac3 100644 --- a/kurrentdb/recorded_event.go +++ b/trogoneventstore/recorded_event.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "github.com/google/uuid" diff --git a/kurrentdb/resolved_event.go b/trogoneventstore/resolved_event.go similarity index 96% rename from kurrentdb/resolved_event.go rename to trogoneventstore/resolved_event.go index 7378c41..0b0a38c 100644 --- a/kurrentdb/resolved_event.go +++ b/trogoneventstore/resolved_event.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore // ResolvedEvent represents an event with a potential link. type ResolvedEvent struct { diff --git a/kurrentdb/revision.go b/trogoneventstore/revision.go similarity index 72% rename from kurrentdb/revision.go rename to trogoneventstore/revision.go index a9ff316..91de039 100644 --- a/kurrentdb/revision.go +++ b/trogoneventstore/revision.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore // Any means the write should not conflict with anything and should always succeed. type Any struct{} @@ -10,8 +10,8 @@ type StreamExists struct{} type NoStream struct{} // StreamState the use of expected revision can be a bit tricky especially when discussing guaranties given by -// KurrentDB server. The KurrentDB server will assure idempotency for all requests using any value in -// StreamState except Any. When using Any, the KurrentDB server will do its best to assure idempotency but +// TrogonEventStore server. The TrogonEventStore server will assure idempotency for all requests using any value in +// StreamState except Any. When using Any, the TrogonEventStore server will do its best to assure idempotency but // will not guarantee it. type StreamState interface { toRawInt64() int64 diff --git a/kurrentdb/subscribe_options.go b/trogoneventstore/subscribe_options.go similarity index 98% rename from kurrentdb/subscribe_options.go rename to trogoneventstore/subscribe_options.go index da018f1..e74ffda 100644 --- a/kurrentdb/subscribe_options.go +++ b/trogoneventstore/subscribe_options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "time" diff --git a/kurrentdb/subscription_event.go b/trogoneventstore/subscription_event.go similarity index 82% rename from kurrentdb/subscription_event.go rename to trogoneventstore/subscription_event.go index 821e6d8..ae4a9e1 100644 --- a/kurrentdb/subscription_event.go +++ b/trogoneventstore/subscription_event.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "time" @@ -6,7 +6,7 @@ import ( // SubscriptionEvent used to handle catch-up subscription notifications raised throughout its lifecycle. type SubscriptionEvent struct { - // When KurrentDB sends an event to the subscription. + // When TrogonEventStore sends an event to the subscription. EventAppeared *ResolvedEvent // When the subscription is dropped. SubscriptionDropped *SubscriptionDropped @@ -32,7 +32,7 @@ type FellBehind struct { // PersistentSubscriptionEvent used to handle persistent subscription notifications raised throughout its lifecycle. type PersistentSubscriptionEvent struct { - // When KurrentDB sends an event to the subscription. + // When TrogonEventStore sends an event to the subscription. EventAppeared *EventAppeared // When the subscription is dropped. SubscriptionDropped *SubscriptionDropped @@ -46,9 +46,9 @@ type SubscriptionDropped struct { Error error } -// EventAppeared when KurrentDB sends an event to a persistent subscription. +// EventAppeared when TrogonEventStore sends an event to a persistent subscription. type EventAppeared struct { - // Event sent by KurrentDB. + // Event sent by TrogonEventStore. Event *ResolvedEvent // How many times that event was sent to the persistent subscription. RetryCount int diff --git a/kurrentdb/subscriptions.go b/trogoneventstore/subscriptions.go similarity index 96% rename from kurrentdb/subscriptions.go rename to trogoneventstore/subscriptions.go index 6f017a0..f67867b 100644 --- a/kurrentdb/subscriptions.go +++ b/trogoneventstore/subscriptions.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import ( "context" @@ -6,7 +6,7 @@ import ( "sync" "sync/atomic" - api "github.com/kurrent-io/KurrentDB-Client-Go/protos/kurrentdb/protocols/v1/streams" + api "github.com/TrogonStack/TrogonEventStore-Client-Go/protos/trogoneventstore/protocols/v1/streams" ) // Subscription is a subscription's handle. diff --git a/kurrentdb/tombstone_options.go b/trogoneventstore/tombstone_options.go similarity index 97% rename from kurrentdb/tombstone_options.go rename to trogoneventstore/tombstone_options.go index da3a3e7..f85e039 100644 --- a/kurrentdb/tombstone_options.go +++ b/trogoneventstore/tombstone_options.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore import "time" diff --git a/kurrentdb/types.go b/trogoneventstore/types.go similarity index 95% rename from kurrentdb/types.go rename to trogoneventstore/types.go index 1691e27..7de3b5d 100644 --- a/kurrentdb/types.go +++ b/trogoneventstore/types.go @@ -1,9 +1,8 @@ -package kurrentdb +package trogoneventstore import ( "encoding/json" "fmt" - "iter" "strings" "time" ) @@ -23,7 +22,7 @@ const ( ConsumerStrategyDispatchToSingle ConsumerStrategy = "DispatchToSingle" // ConsumerStrategyPinned For use with an indexing projection such as the system '$by_category' projection. - // KurrentDB inspects event for its source stream id, hashing the id to one of 1024 buckets assigned to + // TrogonEventStore inspects event for its source stream id, hashing the id to one of 1024 buckets assigned to // individual clients. When a client disconnects, its buckets are assigned to other clients. When a client connects, // it is assigned some existing buckets. This naively attempts to maintain a balanced workload. The main goal of // this strategy is to decrease the likelihood of concurrency and ordering issues while maintaining load balancing. @@ -545,7 +544,7 @@ func streamMetadataFromMap(props map[string]interface{}) (*StreamMetadata, error return &meta, nil } -// FilterType represents the type filters supported by KurrentDB. +// FilterType represents the type filters supported by TrogonEventStore. type FilterType int const ( @@ -690,35 +689,3 @@ type PersistentSubscriptionMeasurement struct { // Metric value. Value int64 `json:"value"` } - -type AppendStreamRequest struct { - StreamName string - Events iter.Seq[EventData] - ExpectedStreamState StreamState -} - -type AppendResponse struct { - Stream string - StreamRevision int64 -} - -type AppendStreamErrorCase uint64 - -const ( - AppendStreamErrorCaseUnknown AppendStreamErrorCase = iota - AppendStreamErrorCaseStreamRevisionConflict - AppendStreamErrorCaseAccessDenied - AppendStreamErrorCaseStreamDeleted - AppendStreamErrorCaseTransactionMaxSizeExceeded -) - -// TODO: Deprecate MultiStreamAppendResponse in a future release in favor of AppendRecordsResponse. -type MultiStreamAppendResponse struct { - Position int64 - Responses []AppendResponse -} - -type AppendRecordsResponse struct { - Position int64 - Responses []AppendResponse -} diff --git a/kurrentdb/write_result.go b/trogoneventstore/write_result.go similarity index 84% rename from kurrentdb/write_result.go rename to trogoneventstore/write_result.go index 261f487..d3b53ad 100644 --- a/kurrentdb/write_result.go +++ b/trogoneventstore/write_result.go @@ -1,4 +1,4 @@ -package kurrentdb +package trogoneventstore // WriteResult ... type WriteResult struct {