type awsDynamoDbTableAttributes
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id
  name: String @search(by: [hash, regexp])
  type: String @search(by: [hash, regexp])
}

type awsDynamoDbTableIndexProjection
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  type: String @search(by: [hash, regexp])
  nonKeyAttributes: [String] @search(by: [hash, regexp])
}

type awsDynamoDbTableIndexKeySchema
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id
  attributeName: String @search(by: [hash, regexp])
  keyType: String @search(by: [hash, regexp])
}

type awsDynamoDbTableLocalSecondaryIndexDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id
  name: String! @search(by: [hash, regexp])
  arn: String! @search(by: [hash, regexp])
  itemCount: Int @search
  keySchema: [awsDynamoDbTableIndexKeySchema]
  projection: awsDynamoDbTableIndexProjection
  sizeInBytes: Int64 @search
}

type awsDynamoDbTableProvisionedThroughputDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  lastIncreaseDateTime: String @search(by: [hash, regexp])
  lastDecreaseDateTime: String @search(by: [hash, regexp])
  numberOfDecreasesToday: Int @search
  readCapacityUnits: Int @search
  writeCapacityUnits: Int @search
}

type awsDynamoDbTableGlobalSecondaryIndexDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id @search(by: [hash])
  name: String! @search(by: [hash, regexp])
  arn: String! @search(by: [hash, regexp])
  itemCount: Int @search
  keySchema: [awsDynamoDbTableIndexKeySchema]
  projection: awsDynamoDbTableIndexProjection
  sizeInBytes: Int64 @search
  status: String @search(by: [hash, regexp])
  backfilling: Boolean @search
  provisionedThroughput: awsDynamoDbTableProvisionedThroughputDescription
}

type awsDynamoDbTableStreamSpecification
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  streamsEnabled: Boolean @search
  streamViewType: String @search(by: [hash, regexp])
}

type awsDynamoDbTableBillingSummary
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  billingMode: String @search(by: [hash, regexp])
  lastUpdateToPayPerRequestDateTime: String @search(by: [hash, regexp])
}

type awsDynamoDbTableReplicaGlobalSecondaryIndexDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id
  name: String @search(by: [hash, regexp])
  readCapacityUnits: Int @search
}

type awsDynamoDbTableAutoScalingPolicyDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id
  policyName: String @search(by: [hash, regexp])
  disableScaleIn: Boolean @search
  scaleInCooldown: Int @search
  scaleOutCooldown: Int @search
  targetValue: Int @search
}

type awsDynamoDbTableAutoScalingSettingsDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  minimumUnits: Int @search
  maximumUnits: Int @search
  autoScalingDisabled: Boolean @search
  autoScalingRoleArn: String @search(by: [hash, regexp])
  scalingPolicies: [awsDynamoDbTableAutoScalingPolicyDescription]
}

type awsDynamoDbTableReplicaDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  id: String! @id
  regionName: String @search(by: [hash, regexp])
  status: String @search(by: [hash, regexp])
  statusDescription: String @search(by: [hash, regexp])
  statusPercentProgress: String @search(by: [hash, regexp])
  kmsMasterKeyId: String @search(by: [hash, regexp])
  readCapacityUnits: Int @search
  globalSecondaryIndexes: [awsDynamoDbTableReplicaGlobalSecondaryIndexDescription]
  replicaInaccessibleDateTime: String @search(by: [hash, regexp])
  provisionedReadCapacityAutoScalingSettings: awsDynamoDbTableAutoScalingSettingsDescription
  provisionedWriteCapacityAutoScalingSettings: awsDynamoDbTableAutoScalingSettingsDescription
}

type awsDynamoDbTableRestoreSummary
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  sourceBackupArn: String @search(by: [hash, regexp])
  sourceTableArn: String @search(by: [hash, regexp])
  restoreDateTime: String @search(by: [hash, regexp])
  restoreInProgress: String @search(by: [hash, regexp])
}

type awsDynamoDbTableSseDescription
  @generate(
    query: { get: false, query: true, aggregate: false }
    mutation: { add: false, delete: false }
    subscription: false
  ) {
  status: String @search(by: [hash, regexp])
  sseType: String @search(by: [hash, regexp])
  kmsMasterKeyArn: String @search(by: [hash, regexp])
  inaccessibleEncryptionDateTime: String @search(by: [hash, regexp])
}

type awsDynamoDbTable implements awsBaseService @key(fields: "arn") {
  attributes: [awsDynamoDbTableAttributes]
  billingModeSummary: awsDynamoDbTableBillingSummary
  creationDate: String! @search(by: [hash, regexp])
  globalIndexes: [awsDynamoDbTableGlobalSecondaryIndexDescription]
  globalTableVersion: String @search(by: [hash, regexp])
  itemCount: Int @search
  keySchema: [awsDynamoDbTableIndexKeySchema]
  latestStreamArn: String @search(by: [hash, regexp])
  latestStreamLabel: String @search(by: [hash, regexp])
  localIndexes: [awsDynamoDbTableLocalSecondaryIndexDescription]
  name: String @search(by: [hash, regexp])
  pointInTimeRecoveryEnabled: Boolean
  provisionedThroughput: awsDynamoDbTableProvisionedThroughputDescription
  replicas: [awsDynamoDbTableReplicaDescription]
  restoreSummary: awsDynamoDbTableRestoreSummary
  sizeInBytes: Int64 @search
  sseDescription: awsDynamoDbTableSseDescription
  status: String @search(by: [hash, regexp])
  streamSpecification: awsDynamoDbTableStreamSpecification
  tags: [awsRawTag]
  ttlEnabled: Boolean @search
  appSync: [awsAppSync] @hasInverse(field: dynamodb)
  kms: [awsKms] @hasInverse(field: dynamodb)
  iamRoles: [awsIamRole] @hasInverse(field: dynamodb)
}
