From a1b03f6d6af693eeceacae5bcc8f1ba61be90173 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 3 Jul 2023 00:31:53 +0200 Subject: [PATCH] fix aws compilation --- .github/workflows/release.yml | 18 ++++++++++++++---- Cargo.lock | 6 +++--- Cargo.toml | 2 +- README.md | 5 +++-- src/webserver/http.rs | 6 ++---- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d66fa6bc..4c4dcb63 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,5 @@ on: + workflow_dispatch: {} push: # Sequence of patterns matched against refs/tags tags: @@ -38,13 +39,21 @@ jobs: with: name: sqlpage ${{ matrix.os }} path: ${{ matrix.binary_path }} + build-aws: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: docker build -t sqlpage-lambda-builder . -f lambda.Dockerfile --target builder + - run: docker run sqlpage-lambda-builder cat deploy.zip > sqlpage-aws-lambda.zip + - uses: actions/upload-artifact@v3 + with: + name: sqlpage aws lambda serverless image + path: sqlpage-aws-lambda.zip create_release: name: Create Release - needs: build + needs: [build, build-aws] runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v3 - uses: actions/download-artifact@v3 - run: | chmod +x sqlpage*/sqlpage; @@ -63,4 +72,5 @@ jobs: files: | sqlpage windows-latest/sqlpage-windows.zip sqlpage-linux.tgz - sqlpage-macos.tgz \ No newline at end of file + sqlpage-macos.tgz + sqlpage aws lambda serverless image/sqlpage-aws-lambda.zip \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 414a0cd1..6983ba1e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1864,9 +1864,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.1" +version = "0.38.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc6396159432b5c8490d4e301d8c705f61860b8b6c863bf79942ce5401968f3" +checksum = "aabcb0461ebd01d6b79945797c27f8529082226cb630a9865a71870ff63532a4" dependencies = [ "bitflags 2.3.3", "errno", @@ -2084,7 +2084,7 @@ dependencies = [ [[package]] name = "sqlpage" -version = "0.7.1" +version = "0.7.2" dependencies = [ "actix-web", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index bc06e2aa..346727b3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sqlpage" -version = "0.7.1" +version = "0.7.2" edition = "2021" description = "A SQL-only web application framework. Takes .sql files and formats the query result using pre-made configurable professional-looking components." keywords = ["web", "sql", "framework"] diff --git a/README.md b/README.md index f5027b44..b76e5a17 100644 --- a/README.md +++ b/README.md @@ -135,10 +135,11 @@ An easy way to do so is using the provided docker image: ```bash docker build -t sqlpage-lambda-builder . -f lambda.Dockerfile --target builder - docker run sqlpage-lambda-builder cat deploy.zip > deploy.zip + docker run sqlpage-lambda-builder cat deploy.zip > sqlpage-aws-lambda.zip ``` -You can then use `deploy.zip` as the source for an AWS Lambda, +You can then just add your own SQL files to `sqlpage-aws-lambda.zip`, +and [upload it to AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html#gettingstarted-package-zip), selecting *Custom runtime on Amazon Linux 2* as a runtime. ### Hosting sql files directly inside the database diff --git a/src/webserver/http.rs b/src/webserver/http.rs index 9f860485..b0d5573a 100644 --- a/src/webserver/http.rs +++ b/src/webserver/http.rs @@ -456,15 +456,13 @@ pub fn create_app( pub async fn run_server(config: Config, state: AppState) -> anyhow::Result<()> { let listen_on = config.listen_on; let state = web::Data::new(state); + let factory = move || create_app(web::Data::clone(&state)); #[cfg(feature = "lambda-web")] if lambda_web::is_running_on_lambda() { lambda_web::run_actix_on_lambda(factory).await?; return Ok(()); } - HttpServer::new(move || create_app(web::Data::clone(&state))) - .bind(listen_on)? - .run() - .await?; + HttpServer::new(factory).bind(listen_on)?.run().await?; Ok(()) }