AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  Simpleflow

  SAM Template for Simpleflow

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 30
    MemorySize: 1024
    Handler: app.lambdaHandler
    Runtime: nodejs20.x
    Architectures:
    - x86_64
    # VpcConfig:
    #   SecurityGroupIds:
    #     - sg-0a538f29be2b53340 # lambda vpc security group ( needs to be created )
    #   SubnetIds:
    #     - subnet-0c093a542188a6495 # private subnet
    #     - subnet-00f6da152554fe00e # private subnet

    # You can add LoggingConfig parameters such as the Logformat, Log Group, and SystemLogLevel or ApplicationLogLevel. Learn more here https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-loggingconfig.
    LoggingConfig:
      LogFormat: JSON
Resources:
  SendMailFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: send-mail/  
      Policies:
        - AmazonSESFullAccess
      Events:
        SendMail:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /sendmail
            Method: post
        SendMailOptions:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /sendmail
            Method: options
  SendQueFunction:
    Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: send-que/  
      Policies:
        - AmazonSESFullAccess
        - Version: "2012-10-17"
          Statement:
            - Effect: Allow
              Action:
                - ssm:GetParameter
              Resource: 
                - arn:aws:ssm:eu-west-1:021891581915:parameter/intersectcloud-supabase/url
                - arn:aws:ssm:eu-west-1:021891581915:parameter/intersectcloud-ses/password
                - arn:aws:ssm:eu-west-1:021891581915:parameter/intersectcloud-ses/username
                - arn:aws:ssm:eu-west-1:021891581915:parameter/intersectcloud-supabase-deployment/JwtSecret/ServiceRoleKey
                - arn:aws:ssm:eu-west-1:021891581915:parameter/intersectcloud-ses/no-reply-email
      Events:
        SendQue:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /sendque
            Method: post
        SendQueOptions:
          Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /sendque
            Method: options
        SendQueScheduler: # Added scheduler event
          Type: Schedule
          Properties:
            Schedule: rate(1 minute) # Trigger every minute
            Input: '{}' # You can provide input JSON for the event here if needed

Outputs:
  # ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
  # Find out more about other implicit resources you can reference within SAM
  # https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
  SimpleflowApi:
    Description: API Gateway endpoint URL for Prod stage for SendMail function
    Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/sendmail/"
