cosmos-explorer/src/Contracts/DataModels.ts

618 lines
14 KiB
TypeScript
Raw Normal View History

import { ConnectionStatusType, ContainerStatusType } from "../Common/Constants";
export interface ArmEntity {
2021-01-20 15:15:01 +00:00
id: string;
name: string;
location: string;
type: string;
kind: string;
}
export interface DatabaseAccount extends ArmEntity {
2021-01-20 15:15:01 +00:00
properties: DatabaseAccountExtendedProperties;
systemData?: DatabaseAccountSystemData;
}
export interface DatabaseAccountSystemData {
createdAt: string;
2021-01-20 15:15:01 +00:00
}
export interface DatabaseAccountExtendedProperties {
2021-03-11 05:02:55 +00:00
documentEndpoint?: string;
disableLocalAuth?: boolean;
2021-03-11 05:02:55 +00:00
tableEndpoint?: string;
gremlinEndpoint?: string;
cassandraEndpoint?: string;
2021-01-20 15:15:01 +00:00
configurationOverrides?: ConfigurationOverrides;
capabilities?: Capability[];
enableMultipleWriteLocations?: boolean;
mongoEndpoint?: string;
readLocations?: DatabaseAccountResponseLocation[];
writeLocations?: DatabaseAccountResponseLocation[];
enableFreeTier?: boolean;
enableAnalyticalStorage?: boolean;
isVirtualNetworkFilterEnabled?: boolean;
ipRules?: IpRule[];
privateEndpointConnections?: unknown[];
capacity?: { totalThroughputLimit: number };
2021-11-05 17:23:21 +00:00
locations?: DatabaseAccountResponseLocation[];
postgresqlEndpoint?: string;
publicNetworkAccess?: string;
enablePriorityBasedExecution?: boolean;
vcoreMongoEndpoint?: string;
2021-01-20 15:15:01 +00:00
}
export interface DatabaseAccountResponseLocation {
documentEndpoint: string;
failoverPriority: number;
id: string;
locationId: string;
locationName: string;
provisioningState: string;
}
export interface IpRule {
ipAddressOrRange: string;
}
2021-01-20 15:15:01 +00:00
export interface ConfigurationOverrides {
EnableBsonSchema: string;
}
export interface Capability {
name: string;
description: string;
}
export interface AccessInputMetadata {
accountName: string;
apiEndpoint: string;
apiKind: number;
documentEndpoint: string;
expiryTimestamp: string;
mongoEndpoint?: string;
}
export enum ApiKind {
SQL = 0,
MongoDB,
Table,
Cassandra,
Graph,
MongoDBCompute,
}
export interface GenerateTokenResponse {
readWrite: string;
read: string;
}
export interface Subscription {
uniqueDisplayName?: string;
2021-01-20 15:15:01 +00:00
displayName: string;
subscriptionId: string;
tenantId?: string;
2021-01-20 15:15:01 +00:00
state: string;
subscriptionPolicies?: SubscriptionPolicies;
authorizationSource?: string;
2021-01-20 15:15:01 +00:00
}
export interface SubscriptionPolicies {
locationPlacementId: string;
quotaId: string;
spendingLimit?: string;
}
export interface Resource {
_rid: string;
_self: string;
_etag: string;
_ts: number | string;
id: string;
}
export interface IType {
name: string;
code: number;
}
export interface IDataField {
dataType: IType;
hasNulls: boolean;
isArray: boolean;
schemaType: IType;
name: string;
path: string;
maxRepetitionLevel: number;
maxDefinitionLevel: number;
}
export interface ISchema {
id: string;
accountName: string;
resource: string;
fields: IDataField[];
}
export interface ISchemaRequest {
id: string;
subscriptionId: string;
resourceGroup: string;
accountName: string;
resource: string;
status: string;
}
export interface Collection extends Resource {
// Only in Mongo collections loaded via ARM
shardKey?: {
[key: string]: string;
};
2021-01-20 15:15:01 +00:00
defaultTtl?: number;
indexingPolicy?: IndexingPolicy;
partitionKey?: PartitionKey;
statistics?: Statistic[];
uniqueKeyPolicy?: UniqueKeyPolicy;
conflictResolutionPolicy?: ConflictResolutionPolicy;
changeFeedPolicy?: ChangeFeedPolicy;
analyticalStorageTtl?: number;
geospatialConfig?: GeospatialConfig;
schema?: ISchema;
requestSchema?: () => void;
}
export interface CollectionsWithPagination {
continuationToken?: string;
collections?: Collection[];
}
2021-01-20 15:15:01 +00:00
export interface Database extends Resource {
collections?: Collection[];
}
export interface DocumentId extends Resource {}
export interface ConflictId extends Resource {
resourceId?: string;
resourceType?: string;
operationType?: string;
content?: string;
}
export interface AuthHeaders {
"x-ms-date": string;
authorization: string;
}
export interface KeyResource {
Token: string;
}
export interface IndexingPolicy {
automatic: boolean;
indexingMode: "consistent" | "lazy" | "none";
2021-01-20 15:15:01 +00:00
includedPaths: any;
excludedPaths: any;
compositeIndexes?: any;
spatialIndexes?: any;
}
export interface PartitionKey {
paths: string[];
kind: "Hash" | "Range" | "MultiHash";
2021-01-20 15:15:01 +00:00
version: number;
systemKey?: boolean;
}
export interface Statistic {
documentCount: number;
id: string;
partitionKeys: any[];
sizeInKB: number;
}
export interface QueryPreparationTimes {
queryCompilationTime: any;
logicalPlanBuildTime: any;
physicalPlanBuildTime: any;
queryOptimizationTime: any;
}
export interface RuntimeExecutionTimes {
queryEngineExecutionTime: any;
systemFunctionExecutionTime: any;
userDefinedFunctionExecutionTime: any;
}
export interface QueryMetrics {
clientSideMetrics: any;
documentLoadTime: any;
documentWriteTime: any;
indexHitDocumentCount: number;
indexLookupTime: any;
outputDocumentCount: number;
outputDocumentSize: number;
queryPreparationTimes: QueryPreparationTimes;
retrievedDocumentCount: number;
retrievedDocumentSize: number;
runtimeExecutionTimes: RuntimeExecutionTimes;
totalQueryExecutionTime: any;
vmExecutionTime: any;
}
export interface Offer {
id: string;
autoscaleMaxThroughput: number | undefined;
manualThroughput: number | undefined;
minimumThroughput: number | undefined;
offerDefinition?: SDKOfferDefinition;
offerReplacePending: boolean;
instantMaximumThroughput?: number;
softAllowedMaximumThroughput?: number;
2021-01-20 15:15:01 +00:00
}
export interface SDKOfferDefinition extends Resource {
offerVersion?: string;
offerType?: string;
content?: {
offerThroughput: number;
offerIsRUPerMinuteThroughputEnabled?: boolean;
collectionThroughputInfo?: OfferThroughputInfo;
offerAutopilotSettings?: AutoPilotOfferSettings;
};
resource?: string;
offerResourceId?: string;
}
export interface OfferThroughputInfo {
minimumRUForCollection: number;
numPhysicalPartitions: number;
}
export interface UniqueKeyPolicy {
uniqueKeys: UniqueKey[];
}
export interface UniqueKey {
paths: string[];
}
export interface CreateDatabaseAndCollectionRequest {
databaseId: string;
collectionId: string;
offerThroughput: number;
databaseLevelThroughput: boolean;
partitionKey?: PartitionKey;
indexingPolicy?: IndexingPolicy;
uniqueKeyPolicy?: UniqueKeyPolicy;
autoPilot?: AutoPilotCreationSettings;
analyticalStorageTtl?: number;
}
export interface AutoPilotCreationSettings {
maxThroughput?: number;
}
export interface Query {
id: string;
resourceId: string;
queryName: string;
query: string;
}
export interface AutoPilotOfferSettings {
maximumTierThroughput?: number;
maxThroughput?: number;
targetMaxThroughput?: number;
}
export interface CreateDatabaseParams {
autoPilotMaxThroughput?: number;
databaseId: string;
databaseLevelThroughput?: boolean;
offerThroughput?: number;
}
export interface CreateCollectionParams {
createNewDatabase: boolean;
collectionId: string;
databaseId: string;
databaseLevelThroughput: boolean;
offerThroughput?: number;
2021-01-20 15:15:01 +00:00
analyticalStorageTtl?: number;
autoPilotMaxThroughput?: number;
indexingPolicy?: IndexingPolicy;
partitionKey?: PartitionKey;
uniqueKeyPolicy?: UniqueKeyPolicy;
createMongoWildcardIndex?: boolean;
}
export interface ReadDatabaseOfferParams {
databaseId: string;
databaseResourceId?: string;
offerId?: string;
}
export interface ReadCollectionOfferParams {
collectionId: string;
databaseId: string;
collectionResourceId?: string;
offerId?: string;
}
export interface UpdateOfferParams {
currentOffer: Offer;
databaseId: string;
autopilotThroughput: number;
manualThroughput: number;
collectionId?: string;
migrateToAutoPilot?: boolean;
migrateToManual?: boolean;
}
export interface Notification {
id: string;
kind: string;
accountName: string;
action: any;
buttonValue?: any;
collectionName?: string;
databaseName?: string;
description: string;
endDateUtc: number;
seenAtUtc: number;
state: string;
type: string;
updatedAtUtc: string;
}
export enum ConflictResolutionMode {
Custom = "Custom",
LastWriterWins = "LastWriterWins",
}
/**
* Represents the conflict resolution policy configuration for specifying how to resolve conflicts
* in case writes from different regions result in conflicts on documents in the collection in the Azure Cosmos DB service.
*/
export interface ConflictResolutionPolicy {
/**
* Gets or sets the ConflictResolutionMode in the Azure Cosmos DB service. By default it is ConflictResolutionMode.LastWriterWins.
*/
mode?: keyof typeof ConflictResolutionMode;
/**
* Gets or sets the path which is present in each document in the Azure Cosmos DB service for last writer wins conflict-resolution.
* This path must be present in each document and must be an integer value.
* In case of a conflict occuring on a document, the document with the higher integer value in the specified path will be picked.
* If the path is unspecified, by default the timestamp path will be used.
*
* This value should only be set when using ConflictResolutionMode.LastWriterWins.
*
* ```typescript
* conflictResolutionPolicy.ConflictResolutionPath = "/name/first";
* ```
*
*/
conflictResolutionPath?: string;
/**
* Gets or sets the StoredProcedure which is used for conflict resolution in the Azure Cosmos DB service.
* This stored procedure may be created after the Container is created and can be changed as required.
*
* 1. This value should only be set when using ConflictResolutionMode.Custom.
* 2. In case the stored procedure fails or throws an exception, the conflict resolution will default to registering conflicts in the conflicts feed.
*
* ```typescript
* conflictResolutionPolicy.ConflictResolutionProcedure = "resolveConflict"
* ```
*/
conflictResolutionProcedure?: string;
}
export interface ChangeFeedPolicy {
retentionDuration: number;
}
export interface GeospatialConfig {
type: string;
}
export interface RegionEndpoint {
name: string;
documentAccountEndpoint: string;
}
export interface Tenant {
displayName: string;
id: string;
tenantId: string;
countryCode: string;
domains: Array<string>;
}
export interface AccountKeys {
primaryMasterKey: string;
secondaryMasterKey: string;
primaryReadonlyMasterKey: string;
secondaryReadonlyMasterKey: string;
}
export interface OperationStatus {
status: string;
id?: string;
name?: string; // operationId
properties?: any;
error?: { code: string; message: string };
}
export interface NotebookWorkspaceConnectionInfo {
authToken: string;
notebookServerEndpoint: string;
forwardingId: string;
}
export interface ContainerInfo {
durationLeftInMinutes: number;
phoenixServerInfo: NotebookWorkspaceConnectionInfo;
status: ContainerStatusType;
2021-01-20 15:15:01 +00:00
}
export interface IProvisionData {
cosmosEndpoint?: string;
2022-06-21 13:48:18 +01:00
poolId: string;
databaseId?: string;
containerId?: string;
mode?: string;
}
export interface IContainerData {
forwardingId: string;
}
export interface IDbAccountAllow {
status: number;
message?: string;
type?: string;
}
export interface IResponse<T> {
status: number;
data: T;
}
2022-05-23 11:58:45 +01:00
export interface IPhoenixError {
message: string;
type: string;
}
2022-05-23 11:58:45 +01:00
export interface IMaxAllocationTimeExceeded extends IPhoenixError {
earliestAllocationTimestamp: string;
maxAllocationTimePerDayPerUserInMinutes: string;
}
2022-05-23 11:58:45 +01:00
export interface IMaxDbAccountsPerUserExceeded extends IPhoenixError {
maxSimultaneousConnectionsPerUser: string;
}
2022-05-23 11:58:45 +01:00
export interface IMaxUsersPerDbAccountExceeded extends IPhoenixError {
maxSimultaneousUsersPerDbAccount: string;
}
export interface IPhoenixConnectionInfoResult {
readonly phoenixServiceInfo?: IPhoenixServiceInfo;
}
export interface IPhoenixServiceInfo {
readonly authToken?: string;
readonly phoenixServiceUrl?: string;
readonly forwardingId?: string;
}
2021-01-20 15:15:01 +00:00
export interface NotebookWorkspaceFeedResponse {
value: NotebookWorkspace[];
}
export interface NotebookWorkspace {
id: string;
name: string;
properties: {
status: string;
notebookServerEndpoint: string;
};
}
export interface NotebookConfigurationEndpoints {
path: string;
endpoints: NotebookConfigurationEndpointInfo[];
}
export interface NotebookConfigurationEndpointInfo {
type: string;
endpoint: string;
username: string;
password: string;
token: string;
}
export interface SparkClusterConnectionInfo {
userName: string;
password: string;
endpoints: SparkClusterEndpoint[];
}
export interface SparkClusterEndpoint {
kind: SparkClusterEndpointKind;
endpoint: string;
}
export enum SparkClusterEndpointKind {
SparkUI = "SparkUI",
HistoryServerUI = "HistoryServerUI",
Livy = "Livy",
}
export interface RpParameters {
db: string;
offerThroughput?: number;
st: Boolean;
sid: string;
rg: string;
dba: string;
partitionKeyVersion?: number;
}
export interface MongoParameters extends RpParameters {
pk?: string;
resourceUrl?: string;
coll?: string;
cd?: Boolean;
is?: Boolean;
rid?: string;
rtype?: string;
isAutoPilot?: Boolean;
autoPilotThroughput?: string;
analyticalStorageTtl?: number;
}
export interface MemoryUsageInfo {
freeKB: number;
totalKB: number;
}
export interface ContainerConnectionInfo {
status: ConnectionStatusType;
//need to add ram and rom info
}
export interface FirewallRule {
id: string;
name: string;
type: string;
properties: {
startIpAddress: string;
endIpAddress: string;
};
}
export enum PhoenixErrorType {
MaxAllocationTimeExceeded = "MaxAllocationTimeExceeded",
MaxDbAccountsPerUserExceeded = "MaxDbAccountsPerUserExceeded",
MaxUsersPerDbAccountExceeded = "MaxUsersPerDbAccountExceeded",
AllocationValidationResult = "AllocationValidationResult",
RegionNotServicable = "RegionNotServicable",
SubscriptionNotAllowed = "SubscriptionNotAllowed",
2022-05-23 11:58:45 +01:00
UnknownError = "UnknownError",
PhoenixFlightFallback = "PhoenixFlightFallback",
2022-07-27 17:05:56 +01:00
UserMissingPermissionsError = "UserMissingPermissionsError",
}
export interface CopilotEnabledConfiguration {
isEnabled: boolean;
}
export interface FeatureRegistration {
name: string;
properties: {
state: string;
};
}