#!/bin/bash
# Runs inside the LocalStack container (ready.d). `awslocal` targets the in-container emulator (not real AWS).
# Same as: aws --endpoint-url=http://localhost:4566 ...
awslocal s3api create-bucket --bucket hu-multimedia-dev
awslocal ses verify-email-identity --email-address notify@test.humandhq.co
awslocal ses verify-email-identity --email-address notify@email.humandhq.co
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name events-queue-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name events-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name learning-paths-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name learning-sessions-queue.fifo
awslocal sqs create-queue --queue-name learning-scheduler-queue
awslocal sqs create-queue --queue-name learning-scheduler-queue-dlq
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name performance-review-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name performance-review-queue-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name analytics-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name insights-queue.fifo
awslocal sqs create-queue --queue-name notification-center-queue
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name worker-queue-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name time-off-queue-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name time-off-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name humand-webhooks-external.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name worker-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name files-uploaded-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name files-uploaded-queue-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name transcode-notifications.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name transcode-notifications-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name marty-commands.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name transcode-jobs.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name transcode-jobs-dlq.fifo
awslocal sqs create-queue --attributes "FifoQueue=true,DelaySeconds=5" --queue-name post-views-queue.fifo
awslocal sqs create-queue --attributes "FifoQueue=true" --queue-name post-views-queue-dlq.fifo
awslocal sqs create-queue --queue-name humand-cloud-messaging-queue
awslocal sqs create-queue --queue-name time-tracking-categorized-hours-queue
awslocal sqs create-queue --queue-name time-tracking-categorized-hours-dlq
awslocal sqs create-queue --queue-name time-tracking-face-assignments-queue
awslocal sqs create-queue --queue-name time-tracking-face-assignments-dlq
awslocal sqs create-queue --queue-name calls-queue
awslocal sqs create-queue --queue-name calls-dlq
awslocal sqs create-queue --queue-name goal-cycles-queue
awslocal sqs create-queue --queue-name goal-cycles-dlq
awslocal sqs create-queue --queue-name prode-points-calculation-queue
awslocal sqs create-queue --queue-name prode-points-calculation-dlq
awslocal sqs create-queue --queue-name prode-audiences-queue
awslocal events put-rule --name events --event-pattern "{\"source\":[\"worker\"]}"
awslocal sns create-topic --attributes "FifoTopic=true"  --name events-notification.fifo
awslocal sns create-topic --name notification-center-topic
EVENTS_SUBSCRIPTION_ARN=$(awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:000000000000:events-notification.fifo" --protocol sqs --notification-endpoint "arn:aws:sqs:us-east-1:000000000000:events-queue.fifo" --output text)
awslocal sns set-subscription-attributes --subscription-arn "$EVENTS_SUBSCRIPTION_ARN" --attribute-name RawMessageDelivery --attribute-value true
awslocal sns set-subscription-attributes --subscription-arn "$EVENTS_SUBSCRIPTION_ARN" --attribute-name FilterPolicy --attribute-value '{"Type":["USER_ITEMS_CHANGE","USER_CREATION","USER_DELETION","USER_ACTIVATION","USER_DEACTIVATION","SEGMENTATION_ITEM_USERS_CHANGE","SEGMENTATION_ITEM_DELETION","USER_GATHERING_CRITERIA_CHANGE","REFRESH_COURSE_USER_PROGRESS","REFRESH_COURSE_USER_DUE_DATES","REFRESH_COURSE_EVALUATION_TASKS","CALL_INITIALIZED","CALL_ENDED","AI_CHATBOT_CHAT_STARTED","AI_CHATBOT_CHAT_ENDED","AI_CHATBOT_USER_MESSAGE","AI_CHATBOT_AGENT_RESPONSE","AI_CHATBOT_KB_DOCUMENT_USED","AI_CHATBOT_USER_FEEDBACK"]}'
PERFORMANCE_REVIEW_SUBSCRIPTION_ARN=$(awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:000000000000:events-notification.fifo" --protocol sqs --notification-endpoint "arn:aws:sqs:us-east-1:000000000000:performance-review-queue.fifo" --output text)
awslocal sns set-subscription-attributes --subscription-arn "$PERFORMANCE_REVIEW_SUBSCRIPTION_ARN" --attribute-name RawMessageDelivery --attribute-value true
awslocal sns set-subscription-attributes --subscription-arn "$PERFORMANCE_REVIEW_SUBSCRIPTION_ARN" --attribute-name FilterPolicy --attribute-value '{"Type":["USER_CREATION","USER_DELETION","USER_ITEMS_CHANGE","SEGMENTATION_ITEM_USERS_CHANGE","SEGMENTATION_ITEM_DELETION"]}'
awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:000000000000:notification-center-topic" --protocol sqs --notification-endpoint "arn:aws:sqs:us-east-1:000000000000:notification-center-queue"
INSIGHTS_SUBSCRIPTION_ARN=$(awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:000000000000:events-notification.fifo" --protocol sqs --notification-endpoint "arn:aws:sqs:us-east-1:000000000000:insights-queue.fifo" --output text)
awslocal sns set-subscription-attributes --subscription-arn "$INSIGHTS_SUBSCRIPTION_ARN" --attribute-name FilterPolicy --attribute-value '{"Type":["USER_SEGMENTATION_ITEMS_UPDATE","SEGMENTATION_ITEM_CREATION","SEGMENTATION_ITEM_DELETION","SEGMENTATION_ITEM_UPDATE","SEGMENTATION_GROUP_CREATION","SEGMENTATION_GROUP_DELETION","SEGMENTATION_GROUP_UPDATE","MASSIVE_USER_SEGMENTATION_DELETION","USER_EMAIL_UPDATE","USER_EMPLOYEE_INTERNAL_ID_UPDATE","USER_LOGIN_WRONG_PASSWORD","USER_ACTIVATION","USER_DEACTIVATION","USER_CREATION","USER_DELETION","USER_REACTIVATION","USER_LOGIN_SEND_OTP","USER_LOGIN_VERIFY_OTP","DEPARTMENT_MEMBER_CREATION","DEPARTMENT_MEMBER_DELETION","USER_LOGIN","USER_LOGOUT", "MISSING_PERMISSIONS_LOGOUT", "USER_PASSWORD_CHANGED","POST_PUBLISHED","POST_DELETED","POST_EDITED","COMMENT_CREATED","COMMENT_DELETED","COMMENT_EDITED","REACTION_CREATED","REACTION_DELETED"]}'
ANALYTICS_SUBSCRIPTION_ARN=$(awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:000000000000:events-notification.fifo" --protocol sqs --notification-endpoint "arn:aws:sqs:us-east-1:000000000000:analytics-queue.fifo" --output text)
awslocal sns set-subscription-attributes --subscription-arn "$ANALYTICS_SUBSCRIPTION_ARN" --attribute-name RawMessageDelivery --attribute-value true
awslocal sns set-subscription-attributes --subscription-arn "$ANALYTICS_SUBSCRIPTION_ARN" --attribute-name FilterPolicy --attribute-value '{"Type":["WES_SURVEY_USER_MODIFIED", "WES_SURVEY_SUBMISSION"]}'   
awslocal s3api create-bucket --bucket hu-security-test
awslocal s3api put-object --bucket hu-security-test --key jwks.json --body /etc/localstack/init/ready.d/jwks.json --content-type application/json
awslocal s3api put-object-acl --bucket hu-security-test --key jwks.json --acl public-read
echo "Creating instance duplication resources..."
awslocal s3api create-bucket --bucket test-instance-duplication-bucket && echo "Created bucket: test-instance-duplication-bucket"
awslocal sns create-topic --name instance-duplication-topic && echo "Created SNS topic: instance-duplication-topic"
awslocal sqs create-queue --queue-name duplication-completion-queue && echo "Created SQS queue: duplication-completion-queue"
awslocal sns create-topic --name duplication-completion-topic && echo "Created SNS topic: duplication-completion-topic"
awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:000000000000:duplication-completion-topic" --protocol sqs --notification-endpoint "arn:aws:sqs:us-east-1:000000000000:duplication-completion-queue" && echo "Subscribed duplication-completion-queue to duplication-completion-topic"
echo "Instance duplication resources created successfully"
echo "Creating file assets scan resources..."
awslocal sqs create-queue --queue-name file-assets-scan-queue && echo "Created SQS queue: file-assets-scan-queue"
awslocal sqs create-queue --queue-name file-assets-scan-dlq && echo "Created SQS queue: file-assets-scan-dlq"
awslocal sns create-topic --name file-assets-scan-completed && echo "Created SNS topic: file-assets-scan-completed"
echo "File assets scan resources created successfully"
