Skip to content
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

[Service Bus] Generic types for Responses for a cleaner API surface #10491

Merged
14 commits merged into from
Oct 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions sdk/servicebus/service-bus/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
- "label" renamed to "subject"
- `SqlRuleFilter` interface "sqlExpression" changed from optional to required
- `ServiceBusSender.scheduleMessages` method signature updated: `scheduledEnqueueTimeUtc` and `messages` parameters are swapped.
- Interfaces corresponding to the returned responses from the methods under the `ServiceBusAdministrationClient` such as `NamespacePropertiesResponse`, `QueueResponse`, `TopicRuntimePropertiesResponse` have been removed in favor of using generic type `WithResponse<T>` for a cleaner API surface.
[PR 10491](https://github.com/Azure/azure-sdk-for-js/pull/10491)

## 7.0.0-preview.7 (2020-10-07)

Expand Down
87 changes: 27 additions & 60 deletions sdk/servicebus/service-bus/review/service-bus.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,7 @@ export { delay }
export { Delivery }

// @public
export interface EntitiesResponse<T> extends Array<T>, Pick<PageSettings, "continuationToken">, Response {
}
export type EntitiesResponse<T extends object> = WithResponse<Array<T>> & Pick<PageSettings, "continuationToken">;

// @public
export type EntityAvailabilityStatus = "Available" | "Limited" | "Renaming" | "Restoring" | "Unknown";
Expand Down Expand Up @@ -209,10 +208,6 @@ export interface NamespaceProperties {
namespaceType: string;
}

// @public
export interface NamespacePropertiesResponse extends NamespaceProperties, Response {
}

export { OperationOptions }

// @public
Expand Down Expand Up @@ -257,10 +252,6 @@ export interface QueueProperties {
userMetadata: string;
}

// @public
export interface QueueResponse extends QueueProperties, Response {
}

// @public
export interface QueueRuntimeProperties {
accessedAt: Date;
Expand All @@ -276,10 +267,6 @@ export interface QueueRuntimeProperties {
transferMessageCount: number;
}

// @public
export interface QueueRuntimePropertiesResponse extends QueueRuntimeProperties, Response {
}

// @public
export interface ReceiveMessagesOptions extends OperationOptionsBase {
maxWaitTimeInMs?: number;
Expand All @@ -288,11 +275,6 @@ export interface ReceiveMessagesOptions extends OperationOptionsBase {
// @public
export type ReceiveMode = "peekLock" | "receiveAndDelete";

// @public
export interface Response {
_response: HttpOperationResponse;
}

export { RetryOptions }

// @public
Expand All @@ -302,31 +284,27 @@ export interface RuleProperties {
readonly name: string;
}

// @public
export interface RuleResponse extends RuleProperties, Response {
}

// @public
export class ServiceBusAdministrationClient extends ServiceClient {
constructor(connectionString: string, options?: PipelineOptions);
constructor(fullyQualifiedNamespace: string, credential: TokenCredential, options?: PipelineOptions);
createQueue(queueName: string, options?: CreateQueueOptions): Promise<QueueResponse>;
createRule(topicName: string, subscriptionName: string, ruleName: string, ruleFilter: SqlRuleFilter | CorrelationRuleFilter, operationOptions?: OperationOptions): Promise<RuleResponse>;
createRule(topicName: string, subscriptionName: string, ruleName: string, ruleFilter: SqlRuleFilter | CorrelationRuleFilter, ruleAction: SqlRuleAction, operationOptions?: OperationOptions): Promise<RuleResponse>;
createSubscription(topicName: string, subscriptionName: string, options?: CreateSubscriptionOptions): Promise<SubscriptionResponse>;
createTopic(topicName: string, options?: CreateTopicOptions): Promise<TopicResponse>;
deleteQueue(queueName: string, operationOptions?: OperationOptions): Promise<Response>;
deleteRule(topicName: string, subscriptionName: string, ruleName: string, operationOptions?: OperationOptions): Promise<Response>;
deleteSubscription(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<Response>;
deleteTopic(topicName: string, operationOptions?: OperationOptions): Promise<Response>;
getNamespaceProperties(operationOptions?: OperationOptions): Promise<NamespacePropertiesResponse>;
getQueue(queueName: string, operationOptions?: OperationOptions): Promise<QueueResponse>;
getQueueRuntimeProperties(queueName: string, operationOptions?: OperationOptions): Promise<QueueRuntimePropertiesResponse>;
getRule(topicName: string, subscriptionName: string, ruleName: string, operationOptions?: OperationOptions): Promise<RuleResponse>;
getSubscription(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<SubscriptionResponse>;
getSubscriptionRuntimeProperties(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<SubscriptionRuntimePropertiesResponse>;
getTopic(topicName: string, operationOptions?: OperationOptions): Promise<TopicResponse>;
getTopicRuntimeProperties(topicName: string, operationOptions?: OperationOptions): Promise<TopicRuntimePropertiesResponse>;
createQueue(queueName: string, options?: CreateQueueOptions): Promise<WithResponse<QueueProperties>>;
createRule(topicName: string, subscriptionName: string, ruleName: string, ruleFilter: SqlRuleFilter | CorrelationRuleFilter, operationOptions?: OperationOptions): Promise<WithResponse<RuleProperties>>;
createRule(topicName: string, subscriptionName: string, ruleName: string, ruleFilter: SqlRuleFilter | CorrelationRuleFilter, ruleAction: SqlRuleAction, operationOptions?: OperationOptions): Promise<WithResponse<RuleProperties>>;
createSubscription(topicName: string, subscriptionName: string, options?: CreateSubscriptionOptions): Promise<WithResponse<SubscriptionProperties>>;
createTopic(topicName: string, options?: CreateTopicOptions): Promise<WithResponse<TopicProperties>>;
deleteQueue(queueName: string, operationOptions?: OperationOptions): Promise<WithResponse<{}>>;
deleteRule(topicName: string, subscriptionName: string, ruleName: string, operationOptions?: OperationOptions): Promise<WithResponse<{}>>;
deleteSubscription(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<WithResponse<{}>>;
deleteTopic(topicName: string, operationOptions?: OperationOptions): Promise<WithResponse<{}>>;
getNamespaceProperties(operationOptions?: OperationOptions): Promise<WithResponse<NamespaceProperties>>;
getQueue(queueName: string, operationOptions?: OperationOptions): Promise<WithResponse<QueueProperties>>;
getQueueRuntimeProperties(queueName: string, operationOptions?: OperationOptions): Promise<WithResponse<QueueRuntimeProperties>>;
getRule(topicName: string, subscriptionName: string, ruleName: string, operationOptions?: OperationOptions): Promise<WithResponse<RuleProperties>>;
getSubscription(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<WithResponse<SubscriptionProperties>>;
getSubscriptionRuntimeProperties(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<WithResponse<SubscriptionRuntimeProperties>>;
getTopic(topicName: string, operationOptions?: OperationOptions): Promise<WithResponse<TopicProperties>>;
getTopicRuntimeProperties(topicName: string, operationOptions?: OperationOptions): Promise<WithResponse<TopicRuntimeProperties>>;
listQueues(options?: OperationOptions): PagedAsyncIterableIterator<QueueProperties, EntitiesResponse<QueueProperties>>;
listQueuesRuntimeProperties(options?: OperationOptions): PagedAsyncIterableIterator<QueueRuntimeProperties, EntitiesResponse<QueueRuntimeProperties>>;
listRules(topicName: string, subscriptionName: string, options?: OperationOptions): PagedAsyncIterableIterator<RuleProperties, EntitiesResponse<RuleProperties>>;
Expand All @@ -338,10 +316,10 @@ export class ServiceBusAdministrationClient extends ServiceClient {
ruleExists(topicName: string, subscriptionName: string, ruleName: string, operationOptions?: OperationOptions): Promise<boolean>;
subscriptionExists(topicName: string, subscriptionName: string, operationOptions?: OperationOptions): Promise<boolean>;
topicExists(topicName: string, operationOptions?: OperationOptions): Promise<boolean>;
updateQueue(queue: QueueProperties, operationOptions?: OperationOptions): Promise<QueueResponse>;
updateRule(topicName: string, subscriptionName: string, rule: RuleProperties, operationOptions?: OperationOptions): Promise<RuleResponse>;
updateSubscription(subscription: SubscriptionProperties, operationOptions?: OperationOptions): Promise<SubscriptionResponse>;
updateTopic(topic: TopicProperties, operationOptions?: OperationOptions): Promise<TopicResponse>;
updateQueue(queue: QueueProperties, operationOptions?: OperationOptions): Promise<WithResponse<QueueProperties>>;
updateRule(topicName: string, subscriptionName: string, rule: RuleProperties, operationOptions?: OperationOptions): Promise<WithResponse<RuleProperties>>;
updateSubscription(subscription: SubscriptionProperties, operationOptions?: OperationOptions): Promise<WithResponse<SubscriptionProperties>>;
updateTopic(topic: TopicProperties, operationOptions?: OperationOptions): Promise<WithResponse<TopicProperties>>;
}

// @public
Expand Down Expand Up @@ -524,10 +502,6 @@ export interface SubscriptionProperties {
userMetadata: string;
}

// @public
export interface SubscriptionResponse extends SubscriptionProperties, Response {
}

// @public
export interface SubscriptionRuntimeProperties {
accessedAt: Date;
Expand All @@ -542,10 +516,6 @@ export interface SubscriptionRuntimeProperties {
transferMessageCount: number;
}

// @public
export interface SubscriptionRuntimePropertiesResponse extends SubscriptionRuntimeProperties, Response {
}

export { TokenCredential }

export { TokenType }
Expand All @@ -568,10 +538,6 @@ export interface TopicProperties {
userMetadata: string;
}

// @public
export interface TopicResponse extends TopicProperties, Response {
}

// @public
export interface TopicRuntimeProperties {
accessedAt: Date;
Expand All @@ -583,10 +549,6 @@ export interface TopicRuntimeProperties {
subscriptionCount?: number;
}

// @public
export interface TopicRuntimePropertiesResponse extends TopicRuntimeProperties, Response {
}

// @public
export interface TryAddOptions {
parentSpan?: Span | SpanContext | null;
Expand All @@ -596,6 +558,11 @@ export { WebSocketImpl }

export { WebSocketOptions }

// @public
export type WithResponse<T extends object> = T & {
_response: HttpOperationResponse;
};


// (No @packageDocumentation comment for this package)

Expand Down
12 changes: 2 additions & 10 deletions sdk/servicebus/service-bus/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,8 @@ export {
} from "./serializers/topicResourceSerializer";
export {
EntitiesResponse,
NamespacePropertiesResponse,
QueueResponse,
QueueRuntimePropertiesResponse,
Response,
RuleResponse,
ServiceBusAdministrationClient,
SubscriptionResponse,
SubscriptionRuntimePropertiesResponse,
TopicResponse,
TopicRuntimePropertiesResponse
WithResponse,
ServiceBusAdministrationClient
} from "./serviceBusAtomManagementClient";
export { ServiceBusClient } from "./serviceBusClient";
export {
Expand Down