#!/usr/bin/env python3
import boto3
import argparse
def create_dynamodb_table(table_name, region_name, endpoint_url=None):
"""Create a DynamoDB table for Berghain events if it doesn't exist."""
# Configure DynamoDB client
dynamodb_kwargs = {'region_name': region_name}
if endpoint_url:
dynamodb_kwargs['endpoint_url'] = endpoint_url
print(f"Using local DynamoDB at: {endpoint_url}")
dynamodb = boto3.resource('dynamodb', **dynamodb_kwargs)
# Check if table already exists
existing_tables = [table.name for table in dynamodb.tables.all()]
if table_name in existing_tables:
print(f"Table '{table_name}' already exists")
return False
# Create the table
print(f"Creating table '{table_name}'...")
table = dynamodb.create_table(
TableName=table_name,
KeySchema=[
{
'AttributeName': 'id',
'KeyType': 'HASH' # Partition key
}
],
AttributeDefinitions=[
{
'AttributeName': 'id',
'AttributeType': 'S' # String
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
# Wait for the table to be created
print(f"Waiting for table '{table_name}' to be created...")
table.meta.client.get_waiter('table_exists').wait(TableName=table_name)
print(f"Table '{table_name}' created successfully!")
return True
def main():
parser = argparse.ArgumentParser(description='Create DynamoDB table for Berghain events')
parser.add_argument('--table', type=str, default='berghain',
help='DynamoDB table name')
parser.add_argument('--region', type=str, default='us-east-1',
help='AWS region')
parser.add_argument('--endpoint-url', type=str,
help='DynamoDB endpoint URL (for local development)')
args = parser.parse_args()
create_dynamodb_table(args.table, args.region, args.endpoint_url)
if __name__ == "__main__":
main()