mirror of https://github.com/rwf2/Rocket.git
Merge pull request #1 from ELD/fix/diesel_async_examples
Fix CI for Rocket diesel async example
This commit is contained in:
commit
c93fb6140d
|
@ -4,6 +4,7 @@ on: [push, pull_request]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CARGO_TERM_COLOR: always
|
CARGO_TERM_COLOR: always
|
||||||
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
|
@ -63,15 +64,20 @@ jobs:
|
||||||
brew install mysql-client libpq sqlite coreutils
|
brew install mysql-client libpq sqlite coreutils
|
||||||
echo "/usr/local/opt/mysql-client/bin" >> "$GITHUB_PATH"
|
echo "/usr/local/opt/mysql-client/bin" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
|
- name: Export GitHub Actions cache environment variables (Windows, vcpkg)
|
||||||
|
if: matrix.platform.name == 'Windows'
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||||
|
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||||
|
|
||||||
# vcpkg --triplet x64-windows install libmysql libpq sqlite3 openssl
|
# vcpkg --triplet x64-windows install libmysql libpq sqlite3 openssl
|
||||||
# + vcpkg/installed/vcpkg (in particular, the status file)
|
# + vcpkg/installed/vcpkg (in particular, the status file)
|
||||||
- name: Install Native Dependencies (Windows)
|
- name: Install Native Dependencies (Windows)
|
||||||
if: matrix.platform.name == 'Windows'
|
if: matrix.platform.name == 'Windows'
|
||||||
run: |
|
run: |
|
||||||
curl -fsS -o vcpkg.7z https://rocket.rs/static/vcpkg-2019-07-05.7z
|
vcpkg --triplet x64-windows install libmysql libpq sqlite3 openssl
|
||||||
7z x vcpkg.7z -y -bb0
|
|
||||||
xcopy .\vcpkg $env:VCPKG_INSTALLATION_ROOT /s /e /h /y /q
|
|
||||||
vcpkg integrate install
|
|
||||||
echo "VCPKGRS_DYNAMIC=1" >> "$env:GITHUB_ENV"
|
echo "VCPKGRS_DYNAMIC=1" >> "$env:GITHUB_ENV"
|
||||||
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" >> "$env:GITHUB_ENV"
|
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" >> "$env:GITHUB_ENV"
|
||||||
echo "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\lib" >> "$env:GITHUB_PATH"
|
echo "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\lib" >> "$env:GITHUB_PATH"
|
||||||
|
@ -82,6 +88,39 @@ jobs:
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y libmysqlclient-dev libpq-dev libsqlite3-dev
|
sudo apt-get install -y libmysqlclient-dev libpq-dev libsqlite3-dev
|
||||||
|
|
||||||
|
- name: Start Postgres (macOS)
|
||||||
|
if: matrix.platform.name == 'macOS'
|
||||||
|
run: |
|
||||||
|
brew services start postgresql@14
|
||||||
|
RETRIES=5
|
||||||
|
until pg_isready > /dev/null 2>&1 || [[ $RETRIES -eq 0 ]]; do
|
||||||
|
echo "waiting for Postgres to start, $((RETRIES--)) remaining attempts"
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
psql postgres -c "CREATE ROLE rocket_runner PASSWORD 'password' SUPERUSER CREATEDB INHERIT LOGIN"
|
||||||
|
createdb -O rocket_runner epic_todo_database
|
||||||
|
|
||||||
|
- name: Start Postgres (Linux)
|
||||||
|
if: matrix.platform.name == 'Linux'
|
||||||
|
run: |
|
||||||
|
sudo systemctl start postgresql.service
|
||||||
|
RETRIES=5
|
||||||
|
until pg_isready > /dev/null 2>&1 || [[ $RETRIES -eq 0 ]]; do
|
||||||
|
echo "waiting for Postgres to start, $((RETRIES--)) remaining attempts"
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
sudo -u postgres psql -U postgres -c "CREATE ROLE rocket_runner PASSWORD 'password' SUPERUSER CREATEDB INHERIT LOGIN"
|
||||||
|
sudo -u postgres createdb -O rocket_runner epic_todo_database
|
||||||
|
|
||||||
|
- name: Start Postgres (Windows)
|
||||||
|
if: matrix.platform.name == 'Windows'
|
||||||
|
run: |
|
||||||
|
$pgService = Get-Service -Name postgresql*
|
||||||
|
Set-Service -InputObject $pgService -Status running -StartupType automatic
|
||||||
|
Start-Process -FilePath "$env:PGBIN\pg_isready" -Wait -PassThru
|
||||||
|
& $env:PGBIN\psql --command "CREATE ROLE rocket_runner PASSWORD 'password' SUPERUSER CREATEDB INHERIT LOGIN"
|
||||||
|
& $env:PGBIN\createdb -O rocket_runner epic_todo_database
|
||||||
|
|
||||||
- name: Install Rust
|
- name: Install Rust
|
||||||
uses: dtolnay/rust-toolchain@master
|
uses: dtolnay/rust-toolchain@master
|
||||||
id: toolchain
|
id: toolchain
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
template_dir = "static"
|
template_dir = "static"
|
||||||
|
|
||||||
[default.databases.epic_todo_database]
|
[default.databases.epic_todo_database]
|
||||||
url = "postgresql://postgres@localhost:5432/epic_todo_database"
|
url = "postgresql://rocket_runner:password@localhost:5432/epic_todo_database"
|
||||||
max_connections = 1
|
max_connections = 1
|
||||||
connect_timeout = 5
|
connect_timeout = 5
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
-- This file was automatically created by Diesel to setup helper functions
|
||||||
|
-- and other internal bookkeeping. This file is safe to edit, any future
|
||||||
|
-- changes will be added to existing projects as new migrations.
|
||||||
|
|
||||||
|
DROP FUNCTION IF EXISTS diesel_manage_updated_at(_tbl regclass);
|
||||||
|
DROP FUNCTION IF EXISTS diesel_set_updated_at();
|
|
@ -0,0 +1,36 @@
|
||||||
|
-- This file was automatically created by Diesel to setup helper functions
|
||||||
|
-- and other internal bookkeeping. This file is safe to edit, any future
|
||||||
|
-- changes will be added to existing projects as new migrations.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Sets up a trigger for the given table to automatically set a column called
|
||||||
|
-- `updated_at` whenever the row is modified (unless `updated_at` was included
|
||||||
|
-- in the modified columns)
|
||||||
|
--
|
||||||
|
-- # Example
|
||||||
|
--
|
||||||
|
-- ```sql
|
||||||
|
-- CREATE TABLE users (id SERIAL PRIMARY KEY, updated_at TIMESTAMP NOT NULL DEFAULT NOW());
|
||||||
|
--
|
||||||
|
-- SELECT diesel_manage_updated_at('users');
|
||||||
|
-- ```
|
||||||
|
CREATE OR REPLACE FUNCTION diesel_manage_updated_at(_tbl regclass) RETURNS VOID AS $$
|
||||||
|
BEGIN
|
||||||
|
EXECUTE format('CREATE TRIGGER set_updated_at BEFORE UPDATE ON %s
|
||||||
|
FOR EACH ROW EXECUTE PROCEDURE diesel_set_updated_at()', _tbl);
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION diesel_set_updated_at() RETURNS trigger AS $$
|
||||||
|
BEGIN
|
||||||
|
IF (
|
||||||
|
NEW IS DISTINCT FROM OLD AND
|
||||||
|
NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at
|
||||||
|
) THEN
|
||||||
|
NEW.updated_at := current_timestamp;
|
||||||
|
END IF;
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
|
@ -1,8 +1,8 @@
|
||||||
CREATE TABLE tasks (
|
CREATE TABLE tasks (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id SERIAL PRIMARY KEY,
|
||||||
description VARCHAR NOT NULL,
|
description VARCHAR NOT NULL,
|
||||||
completed BOOLEAN NOT NULL DEFAULT 0
|
completed BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO tasks (description) VALUES ("demo task");
|
INSERT INTO tasks (description) VALUES ('demo task');
|
||||||
INSERT INTO tasks (description) VALUES ("demo task2");
|
INSERT INTO tasks (description) VALUES ('demo task2');
|
||||||
|
|
|
@ -16,13 +16,13 @@ macro_rules! run_test {
|
||||||
let _lock = DB_LOCK.lock();
|
let _lock = DB_LOCK.lock();
|
||||||
|
|
||||||
rocket::async_test(async move {
|
rocket::async_test(async move {
|
||||||
let rocket = super::rocket();
|
let $client = Client::tracked(super::rocket()).await.expect("Rocket client");
|
||||||
|
let rocket = $client.rocket();
|
||||||
let mut $conn = super::Db::fetch(&rocket)
|
let mut $conn = super::Db::fetch(&rocket)
|
||||||
.expect("database")
|
.expect("database")
|
||||||
.get()
|
.get()
|
||||||
.await
|
.await
|
||||||
.expect("database connection");
|
.expect("database connection");
|
||||||
let $client = Client::tracked(rocket).await.expect("Rocket client");
|
|
||||||
Task::delete_all(&mut $conn).await.expect("failed to delete all tasks for testing");
|
Task::delete_all(&mut $conn).await.expect("failed to delete all tasks for testing");
|
||||||
|
|
||||||
$block
|
$block
|
||||||
|
|
Loading…
Reference in New Issue