import { Value } from '../../../cloudformation/Value';
import { PrincipalPrivilegesProps } from './PrincipalPrivilegesProps';
import { DatabaseIdentifierProps } from './DatabaseIdentifierProps';
import { FederatedDatabaseProps } from './FederatedDatabaseProps';
/**
  The structure used to create or update a database.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html">the AWS Docs</a>
*/
export interface DatabaseInputProps {
    /** <code>LocationUri</code>  <a name="cfn-glue-database-databaseinput-locationuri"></a>
  The location of the database (for example, an HDFS path).<br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>1024</code><br />
  
  Pattern: <code>[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    locationUri?: Value<string>;
    /** <code>CreateTableDefaultPermissions</code>  <a name="cfn-glue-database-databaseinput-createtabledefaultpermissions"></a>
  Creates a set of default permissions on the table for principals. Used by AWS Lake Formation. Not used in the normal course of AWS Glue operations.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    createTableDefaultPermissions?: PrincipalPrivilegesProps[];
    /** <code>Description</code>  <a name="cfn-glue-database-databaseinput-description"></a>
  A description of the database.<br />
  
  Required: No<br />
  
  Minimum: <code>0</code><br />
  
  Maximum: <code>2048</code><br />
  
  Pattern: <code>[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    description?: Value<string>;
    /** <code>Parameters</code>  <a name="cfn-glue-database-databaseinput-parameters"></a>
  These key-value pairs define parameters and properties of the database.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    parameters?: Value<any>;
    /** <code>TargetDatabase</code>  <a name="cfn-glue-database-databaseinput-targetdatabase"></a>
  A <code>DatabaseIdentifier</code> structure that describes a target database for resource linking.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    targetDatabase?: DatabaseIdentifierProps;
    /** <code>FederatedDatabase</code>  <a name="cfn-glue-database-databaseinput-federateddatabase"></a>
  A <code>FederatedDatabase</code> structure that references an entity outside the AWS Glue Data Catalog.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    federatedDatabase?: FederatedDatabaseProps;
    /** <code>Name</code>  <a name="cfn-glue-database-databaseinput-name"></a>
  The name of the database. For Hive compatibility, this is folded to lowercase when it is stored.<br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>255</code><br />
  
  Pattern: <code>[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t]*</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    name?: Value<string>;
}
