AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Weekly EMEA tenant metrics report task.

Parameters:
  TargetDBHost:
    Type: String
    Default: placeholder
  TargetDatabaseURL:
    Type: String
    NoEcho: true
    Default: ""
  TargetDBPort:
    Type: String
    Default: "3306"
  TargetDBUser:
    Type: String
    Default: placeholder
  TargetDBPassword:
    Type: String
    NoEcho: true
    Default: placeholder
  TargetDBName:
    Type: String
    Default: placeholder
  FeishuWebhookURL:
    Type: String
    NoEcho: true
    Default: placeholder

Globals:
  Function:
    Runtime: python3.12
    Architectures:
      - x86_64
    Timeout: 120
    MemorySize: 256
    Tracing: Active
    Environment:
      Variables:
        TARGET_DB_HOST: !Ref TargetDBHost
        TARGET_DATABASE_URL: !Ref TargetDatabaseURL
        TARGET_DB_PORT: !Ref TargetDBPort
        TARGET_DB_USER: !Ref TargetDBUser
        TARGET_DB_PASSWORD: !Ref TargetDBPassword
        TARGET_DB_NAME: !Ref TargetDBName
        FEISHU_WEBHOOK_URL: !Ref FeishuWebhookURL

Resources:
  EMEAWeeklyTenantMetricsTask:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: EMEA-Weekly-Tenant-Metrics-Task
      CodeUri: .
      Handler: weekly_metrics_function.lambda_handler
      Description: Weekly task to report EMEA tenant metrics to Feishu.
      Policies:
        - AWSLambdaBasicExecutionRole
      Events:
        WeeklySchedule:
          Type: Schedule
          Properties:
            Name: EMEA-Weekly-Tenant-Metrics-Task-Weekly
            Description: Run EMEA weekly tenant metrics every Monday at 15:00 Asia/Shanghai.
            Schedule: cron(0 7 ? * MON *)
            Enabled: true

Outputs:
  FunctionName:
    Description: Lambda function name.
    Value: !Ref EMEAWeeklyTenantMetricsTask
  FunctionArn:
    Description: Lambda function ARN.
    Value: !GetAtt EMEAWeeklyTenantMetricsTask.Arn
