diff --git a/db/db-migrations/.gitignore b/db/db-migrations/.gitignore new file mode 100644 index 00000000..4fffb2f8 --- /dev/null +++ b/db/db-migrations/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/db/db-migrations/Cargo.toml b/db/db-migrations/Cargo.toml new file mode 100644 index 00000000..d3b9552e --- /dev/null +++ b/db/db-migrations/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "db-migrations" +version = "0.1.0" +edition = "2021" +homepage = "https://mcaptcha.org" +repository = "https://github.com/mCaptcha/mCaptcha" +documentation = "https://mcaptcha.org/docs/" +license = "AGPLv3 or later version" +authors = ["realaravinth "] + +[dependencies] +actix-rt = "2" +sqlx = { version = "0.5.13", features = [ "runtime-actix-rustls", "postgres", "time", "offline" ] } diff --git a/db/db-migrations/src/main.rs b/db/db-migrations/src/main.rs new file mode 100644 index 00000000..461174aa --- /dev/null +++ b/db/db-migrations/src/main.rs @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2022 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ diff --git a/src/tests-migrate.rs b/src/tests-migrate.rs deleted file mode 100644 index 27e08557..00000000 --- a/src/tests-migrate.rs +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2022 Aravinth Manivannan - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -use std::env; - -use lazy_static::lazy_static; -use sqlx::postgres::PgPoolOptions; - -mod settings; - -pub use settings::Settings; - -#[cfg(not(tarpaulin_include))] -lazy_static! { - #[cfg(not(tarpaulin_include))] - pub static ref SETTINGS: Settings = Settings::new().unwrap(); -} - -#[cfg(not(tarpaulin_include))] -#[actix_rt::main] -async fn main() { - let db = PgPoolOptions::new() - .max_connections(SETTINGS.database.pool) - .connect(&SETTINGS.database.url) - .await - .expect("Unable to form database pool"); - - for arg in env::args() { - if arg == "--build" { - println!("Building cache buster config"); - build(); - } - } - - sqlx::migrate!("./migrations/").run(&db).await.unwrap(); -} - -fn build() { - use std::process::Command; - - // note: add error checking yourself. - let output = Command::new("git") - .args(&["rev-parse", "HEAD"]) - .output() - .unwrap(); - let git_hash = String::from_utf8(output.stdout).unwrap(); - println!("cargo:rustc-env=GIT_HASH={}", git_hash); - - cache_bust(); -} - -fn cache_bust() { - use cache_buster::BusterBuilder; - let types = vec![ - mime::IMAGE_PNG, - mime::IMAGE_SVG, - mime::IMAGE_JPEG, - mime::IMAGE_GIF, - mime::APPLICATION_JAVASCRIPT, - mime::TEXT_CSS, - ]; - - let config = BusterBuilder::default() - .source("./static/cache") - .result("./assets") - .mime_types(types) - .follow_links(true) - .build() - .unwrap(); - - config.process().unwrap(); -}