import * as core from "@terrascript/core"; export interface SortColumnsArgs extends core.SchemaArgs { column: string | core.StringOut; sortOrder: number | core.NumberOut; } export class SortColumns extends core.Schema { @core.attr(String) public column!: string | core.StringOut; @core.attr(Number) public sortOrder!: number | core.NumberOut; } export interface ColumnsArgs extends core.SchemaArgs { comment?: string | core.StringOut; name: string | core.StringOut; parameters?: core.Map | core.MapOut; type?: string | core.StringOut; } export class Columns extends core.Schema { @core.attr(String) public comment?: string | core.StringOut; @core.attr(String) public name!: string | core.StringOut; @core.attr(String, { kind: "map" }) public parameters?: core.Map | core.MapOut; @core.attr(String) public type?: string | core.StringOut; } export interface SkewedInfoArgs extends core.SchemaArgs { skewedColumnNames?: core.Array | core.ArrayOut; skewedColumnValueLocationMaps?: | core.Map | core.MapOut; skewedColumnValues?: core.Array | core.ArrayOut; } export class SkewedInfo extends core.Schema { @core.attr(String, { kind: "array" }) public skewedColumnNames?: core.Array | core.ArrayOut; @core.attr(String, { kind: "map" }) public skewedColumnValueLocationMaps?: | core.Map | core.MapOut; @core.attr(String, { kind: "array" }) public skewedColumnValues?: | core.Array | core.ArrayOut; } export interface SerDeInfoArgs extends core.SchemaArgs { name?: string | core.StringOut; parameters?: core.Map | core.MapOut; serializationLibrary?: string | core.StringOut; } export class SerDeInfo extends core.Schema { @core.attr(String) public name?: string | core.StringOut; @core.attr(String, { kind: "map" }) public parameters?: core.Map | core.MapOut; @core.attr(String) public serializationLibrary?: string | core.StringOut; } export interface SchemaIdArgs extends core.SchemaArgs { registryName?: string | core.StringOut; schemaArn?: string | core.StringOut; schemaName?: string | core.StringOut; } export class SchemaId extends core.Schema { @core.attr(String) public registryName?: string | core.StringOut; @core.attr(String) public schemaArn?: string | core.StringOut; @core.attr(String) public schemaName?: string | core.StringOut; } export interface SchemaReferenceArgs extends core.SchemaArgs { schemaId?: SchemaId; schemaVersionId?: string | core.StringOut; schemaVersionNumber: number | core.NumberOut; } export class SchemaReference extends core.Schema { @core.attr(SchemaId) public schemaId?: SchemaId; @core.attr(String) public schemaVersionId?: string | core.StringOut; @core.attr(Number) public schemaVersionNumber!: number | core.NumberOut; } export interface StorageDescriptorArgs extends core.SchemaArgs { bucketColumns?: core.Array | core.ArrayOut; columns?: core.Array | core.ArrayOut; compressed?: boolean | core.BooleanOut; inputFormat?: string | core.StringOut; location?: string | core.StringOut; numberOfBuckets?: number | core.NumberOut; outputFormat?: string | core.StringOut; parameters?: core.Map | core.MapOut; schemaReference?: SchemaReference; serDeInfo?: SerDeInfo; skewedInfo?: SkewedInfo; sortColumns?: core.Array | core.ArrayOut; storedAsSubDirectories?: boolean | core.BooleanOut; } export class StorageDescriptor extends core.Schema { @core.attr(String, { kind: "array" }) public bucketColumns?: core.Array | core.ArrayOut; @core.attr(Columns, { computed: true, kind: "array" }) public columns?: core.Array | core.ArrayOut; @core.attr(Boolean) public compressed?: boolean | core.BooleanOut; @core.attr(String) public inputFormat?: string | core.StringOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(Number) public numberOfBuckets?: number | core.NumberOut; @core.attr(String) public outputFormat?: string | core.StringOut; @core.attr(String, { kind: "map" }) public parameters?: core.Map | core.MapOut; @core.attr(SchemaReference) public schemaReference?: SchemaReference; @core.attr(SerDeInfo) public serDeInfo?: SerDeInfo; @core.attr(SkewedInfo) public skewedInfo?: SkewedInfo; @core.attr(SortColumns, { kind: "array" }) public sortColumns?: core.Array | core.ArrayOut; @core.attr(Boolean) public storedAsSubDirectories?: boolean | core.BooleanOut; } export interface TargetTableArgs extends core.SchemaArgs { catalogId: string | core.StringOut; databaseName: string | core.StringOut; name: string | core.StringOut; } export class TargetTable extends core.Schema { @core.attr(String) public catalogId!: string | core.StringOut; @core.attr(String) public databaseName!: string | core.StringOut; @core.attr(String) public name!: string | core.StringOut; } export interface PartitionIndexArgs extends core.SchemaArgs { indexName: string | core.StringOut; indexStatus: string | core.StringOut; keys: core.Array | core.ArrayOut; } export class PartitionIndex extends core.Schema { @core.attr(String) public indexName!: string | core.StringOut; @core.attr(String, { computed: true }) public indexStatus!: string | core.StringOut; @core.attr(String, { kind: "array" }) public keys!: core.Array | core.ArrayOut; } export interface PartitionKeysArgs extends core.SchemaArgs { comment?: string | core.StringOut; name: string | core.StringOut; type?: string | core.StringOut; } export class PartitionKeys extends core.Schema { @core.attr(String) public comment?: string | core.StringOut; @core.attr(String) public name!: string | core.StringOut; @core.attr(String) public type?: string | core.StringOut; } export interface CatalogTableArgs extends core.ResourceArgs { /** * (Optional) ID of the Glue Catalog and database to create the table in. If omitted, this defaults to * the AWS Account ID plus the database name. */ catalogId?: string | core.StringOut; /** * (Required) Name of the metadata database where the table metadata resides. For Hive compatibility, t * his must be all lowercase. */ databaseName: string | core.StringOut; /** * (Optional) Description of the table. */ description?: string | core.StringOut; /** * (Required) Name of the table. For Hive compatibility, this must be entirely lowercase. */ name: string | core.StringOut; /** * (Optional) Owner of the table. */ owner?: string | core.StringOut; /** * (Optional) Properties associated with this table, as a list of key-value pairs. */ parameters?: core.Map | core.MapOut; /** * (Optional) Configuration block for a maximum of 3 partition indexes. See [`partition_index`](#partit * ion_index) below. */ partitionIndex?: core.Array | core.ArrayOut; /** * (Optional) Configuration block of columns by which the table is partitioned. Only primitive types ar * e supported as partition keys. See [`partition_keys`](#partition_keys) below. */ partitionKeys?: core.Array | core.ArrayOut; /** * (Optional) Retention time for this table. */ retention?: number | core.NumberOut; /** * (Optional) Configuration block for information about the physical storage of this table. For more in * formation, refer to the [Glue Developer Guide](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-a * pi-catalog-tables.html#aws-glue-api-catalog-tables-StorageDescriptor). See [`storage_descriptor`](#s * torage_descriptor) below. */ storageDescriptor?: StorageDescriptor; /** * (Optional) Type of this table (EXTERNAL_TABLE, VIRTUAL_VIEW, etc.). While optional, some Athena DDL * queries such as `ALTER TABLE` and `SHOW CREATE TABLE` will fail if this argument is empty. */ tableType?: string | core.StringOut; /** * (Optional) Configuration block of a target table for resource linking. See [`target_table`](#target_ * table) below. */ targetTable?: TargetTable; /** * (Optional) If the table is a view, the expanded text of the view; otherwise null. */ viewExpandedText?: string | core.StringOut; /** * (Optional) If the table is a view, the original text of the view; otherwise null. */ viewOriginalText?: string | core.StringOut; } export class CatalogTable extends core.Resource { /** * The ARN of the Glue Table. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) ID of the Glue Catalog and database to create the table in. If omitted, this defaults to * the AWS Account ID plus the database name. */ @core.attr(String, { computed: true }) public catalogId?: string | core.StringOut; /** * (Required) Name of the metadata database where the table metadata resides. For Hive compatibility, t * his must be all lowercase. */ @core.attr(String) public databaseName!: string | core.StringOut; /** * (Optional) Description of the table. */ @core.attr(String) public description?: string | core.StringOut; /** * Catalog ID, Database name and of the name table. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) Name of the table. For Hive compatibility, this must be entirely lowercase. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) Owner of the table. */ @core.attr(String) public owner?: string | core.StringOut; /** * (Optional) Properties associated with this table, as a list of key-value pairs. */ @core.attr(String, { kind: "map" }) public parameters?: core.Map | core.MapOut; /** * (Optional) Configuration block for a maximum of 3 partition indexes. See [`partition_index`](#partit * ion_index) below. */ @core.attr(PartitionIndex, { computed: true, kind: "array" }) public partitionIndex?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block of columns by which the table is partitioned. Only primitive types ar * e supported as partition keys. See [`partition_keys`](#partition_keys) below. */ @core.attr(PartitionKeys, { kind: "array" }) public partitionKeys?: | core.Array | core.ArrayOut; /** * (Optional) Retention time for this table. */ @core.attr(Number) public retention?: number | core.NumberOut; /** * (Optional) Configuration block for information about the physical storage of this table. For more in * formation, refer to the [Glue Developer Guide](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-a * pi-catalog-tables.html#aws-glue-api-catalog-tables-StorageDescriptor). See [`storage_descriptor`](#s * torage_descriptor) below. */ @core.attr(StorageDescriptor) public storageDescriptor?: StorageDescriptor; /** * (Optional) Type of this table (EXTERNAL_TABLE, VIRTUAL_VIEW, etc.). While optional, some Athena DDL * queries such as `ALTER TABLE` and `SHOW CREATE TABLE` will fail if this argument is empty. */ @core.attr(String) public tableType?: string | core.StringOut; /** * (Optional) Configuration block of a target table for resource linking. See [`target_table`](#target_ * table) below. */ @core.attr(TargetTable) public targetTable?: TargetTable; /** * (Optional) If the table is a view, the expanded text of the view; otherwise null. */ @core.attr(String) public viewExpandedText?: string | core.StringOut; /** * (Optional) If the table is a view, the original text of the view; otherwise null. */ @core.attr(String) public viewOriginalText?: string | core.StringOut; constructor(name: string, args?: CatalogTableArgs) { super(name, "aws_glue_catalog_table", args); } public override getNamespace(): string { return "aws_glue"; } }