pipeline {
    agent any

    environment {
        APP_NAME = 'impulse-jail'
    }

    triggers {
        GenericTrigger(token: 'impulse-jail-deploy')
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Build Docker Image') {
            steps {
                sh "docker build -t ${APP_NAME}:${BUILD_NUMBER} -t ${APP_NAME}:latest ."
            }
        }

        stage('Deploy') {
            steps {
                sh """
                    docker rm -f ${APP_NAME} || true
                    mkdir -p /data/${APP_NAME}
                    chown 1001:1001 /data/${APP_NAME}
                    docker run -d \
                        --name ${APP_NAME} \
                        --network nginx \
                        -p 3002:3000 \
                        -v /data/${APP_NAME}:/app/data \
                        -e DATABASE_URL=file:/app/data/prod.db \
                        --restart unless-stopped \
                        ${APP_NAME}:latest
                """
            }
        }
    }

    post {
        success {
            echo "Deployed ${APP_NAME} build #${BUILD_NUMBER} successfully"
        }
        failure {
            echo "Build #${BUILD_NUMBER} failed"
        }
    }
}
