-
Notifications
You must be signed in to change notification settings - Fork 3
[2/N Status & List APIs] feat(storage): add request read-model schema #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: wua/status-list-api-rfc
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| // Copyright (c) 2025 Uber Technologies, Inc. | ||
| // | ||
| // 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. | ||
|
|
||
| package entity | ||
|
|
||
| // RequestSummary is the gateway-owned materialized current view of a request. | ||
| // RequestID is exposed as sqid by the gateway API. | ||
| type RequestSummary struct { | ||
| // RequestID is the globally unique request identifier. | ||
| RequestID string | ||
| // Queue is the queue supplied at receipt. | ||
| Queue string | ||
| // ChangeURIs are the change URIs supplied at receipt in caller order. | ||
| ChangeURIs []string | ||
| // ReceivedAtMs is the immutable receipt timestamp in Unix milliseconds. | ||
| ReceivedAtMs int64 | ||
| // Status is the current customer-facing request status. | ||
| Status RequestStatus | ||
| // RequestVersion is the orchestrator request version carried by the winning log entry, or zero when unavailable. | ||
| RequestVersion int32 | ||
| // StatusTimestampMs is the timestamp of the winning log entry in Unix milliseconds. | ||
| StatusTimestampMs int64 | ||
| // ProjectionVersion is the optimistic-lock version of this materialized view. | ||
| ProjectionVersion int32 | ||
| // LastError is the error associated with the current status, or empty when absent. | ||
| LastError string | ||
| // Metadata is display and debugging metadata associated with the current status. | ||
| Metadata map[string]string | ||
| } | ||
|
|
||
| // RequestQueueSummary is the queue-ordered projection returned by List. | ||
| type RequestQueueSummary struct { | ||
| // RequestID is the globally unique request identifier. | ||
| RequestID string | ||
| // Queue is the queue supplied at receipt. | ||
| Queue string | ||
| // ChangeURIs are the change URIs supplied at receipt in caller order. | ||
| ChangeURIs []string | ||
| // ReceivedAtMs is the immutable receipt timestamp in Unix milliseconds. | ||
| ReceivedAtMs int64 | ||
| // Status is the current customer-facing request status. | ||
| Status RequestStatus | ||
| // ProjectionVersion is copied from the authoritative RequestSummary and guards stale projection writers. | ||
| ProjectionVersion int32 | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Version? |
||
| // LastError is the error associated with the current status, or empty when absent. | ||
| LastError string | ||
| // Metadata is display and debugging metadata associated with the current status. | ||
| Metadata map[string]string | ||
| } | ||
|
|
||
| // RequestURI maps one change URI to one received request. | ||
| type RequestURI struct { | ||
| // ChangeURI is the exact canonical URI supplied at receipt. | ||
| ChangeURI string | ||
| // ReceivedAtMs is the immutable receipt timestamp in Unix milliseconds. | ||
| ReceivedAtMs int64 | ||
| // RequestID is the globally unique request identifier. | ||
| RequestID string | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| CREATE TABLE IF NOT EXISTS request_by_change_uri ( | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. change_uri_request_mapping? |
||
| change_uri VARCHAR(255) NOT NULL, | ||
| received_at_ms BIGINT NOT NULL, | ||
| request_id VARCHAR(255) NOT NULL, | ||
| PRIMARY KEY (change_uri, received_at_ms, request_id) | ||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| CREATE TABLE IF NOT EXISTS request_summary ( | ||
| request_id VARCHAR(255) NOT NULL, | ||
| queue VARCHAR(255) NOT NULL, | ||
| change_uris JSON NOT NULL, | ||
| received_at_ms BIGINT NOT NULL, | ||
| status VARCHAR(64) NOT NULL, | ||
| request_version INT NOT NULL, | ||
| status_timestamp_ms BIGINT NOT NULL, | ||
| projection_version INT NOT NULL, | ||
| last_error TEXT NOT NULL, | ||
| metadata JSON NOT NULL, | ||
| PRIMARY KEY (request_id) | ||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| CREATE TABLE IF NOT EXISTS request_summary_by_queue ( | ||
| queue VARCHAR(255) NOT NULL, | ||
| received_at_ms BIGINT NOT NULL, | ||
| request_id VARCHAR(255) NOT NULL, | ||
| change_uris JSON NOT NULL, | ||
| status VARCHAR(64) NOT NULL, | ||
| projection_version INT NOT NULL, | ||
| last_error TEXT NOT NULL, | ||
| metadata JSON NOT NULL, | ||
| PRIMARY KEY (queue, received_at_ms, request_id) | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should request_id be part of it? |
||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we want to call just Version for this one