Skip to content

Commit

Permalink
[SERVICE_TEMPLATE] Bump to new versions. Fix generation logic without…
Browse files Browse the repository at this point in the history
… database (#810)

* Fix service template

* Add dockerfile

* Fix service setup without database

* Make use of launcher DatabaseSettings struct

---------

Co-authored-by: sevenzing <[email protected]>
  • Loading branch information
rimrakhimov and sevenzing authored Mar 25, 2024
1 parent 36454ff commit ffeafb2
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 23 deletions.
3 changes: 3 additions & 0 deletions service-template/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ members = [
"{{project-name}}-proto",
"{{project-name}}-server",
]

[workspace.dependencies]
blockscout-service-launcher = "0.10.0"
8 changes: 4 additions & 4 deletions service-template/{{project-name}}-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ edition = "2021"
actix-web = "4.2"
anyhow = "1.0"
async-trait = "0.1"
blockscout-service-launcher = { version = "0.9.0", features = [ "database-0_12" ] }
config = "0.13"
blockscout-service-launcher = { workspace = true, features = [{% if database -%} "database-0_12" {% endif -%}] }
config = "0.14"
sea-orm = "0.12.2"
serde = "1.0"
serde_json = "1.0.96"
Expand All @@ -32,9 +32,9 @@ tracing = "0.1"


[dev-dependencies]
blockscout-service-launcher = { version = "*", features = [ "test-server", "test-database" ] }
blockscout-service-launcher = { workspace = true, features = [ "test-server",{% if database -%} "test-database"{% endif -%} ] }
pretty_assertions = "1.3"
reqwest = { version = "0.11", features = ["json"]}
reqwest = { version = "0.12", features = ["json"]}
# # Uncomment if needed
# mockall = "0.11"
# bytes = "1.5.0"
Expand Down
2 changes: 1 addition & 1 deletion service-template/{{project-name}}-server/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ pub async fn run(settings: Settings) -> Result<(), anyhow::Error> {

{% if database and migrations %}
let _db_connection = database::initialize_postgres::<Migrator>(
&settings.database.url,
&settings.database.connect.url(),
settings.database.create_database,
settings.database.run_migrations,
)
Expand Down
19 changes: 5 additions & 14 deletions service-template/{{project-name}}-server/src/settings.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use blockscout_service_launcher::{
database::{DatabaseConnectSettings, DatabaseSettings},
launcher::{ConfigSettings, MetricsSettings, ServerSettings},
tracing::{JaegerSettings, TracingSettings},
};
Expand All @@ -24,17 +25,7 @@ pub struct Settings {
impl ConfigSettings for Settings {
const SERVICE_NAME: &'static str = "{{PROJECT_NAME}}";
}
{% if database %}
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
#[serde(deny_unknown_fields)]
pub struct DatabaseSettings {
pub url: String,
#[serde(default)]
pub create_database: bool,
#[serde(default)]
pub run_migrations: bool,
}
{% endif %}

impl Settings {
pub fn default(
{% if database %}
Expand All @@ -48,9 +39,9 @@ impl Settings {
jaeger: Default::default(),
{% if database -%}
database: DatabaseSettings {
url: database_url,
create_database: false,
run_migrations: false,
connect: DatabaseConnectSettings::Url(database_url),
create_database: Default::default(),
run_migrations: Default::default(),
},{% endif %}
}
}
Expand Down
22 changes: 19 additions & 3 deletions service-template/{{project-name}}-server/tests/helpers/mod.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,34 @@
use blockscout_service_launcher::{test_database::TestDbGuard, test_server};
use blockscout_service_launcher::{
{% if database -%}
test_database::TestDbGuard,
{% endif -%}
test_server
};
use reqwest::Url;
use {{crate_name}}_server::Settings;

{% if database -%}
pub async fn init_db(db_prefix: &str, test_name: &str) -> TestDbGuard {
let db_name = format!("{db_prefix}_{test_name}");
TestDbGuard::new::<migration::Migrator>(db_name.as_str()).await
}
{% endif -%}

pub async fn init_{{crate_name}}_server<F>(db_url: String, settings_setup: F) -> Url
pub async fn init_{{crate_name}}_server<F>(
{% if database -%}
db_url: String,
{% endif -%}
settings_setup: F
) -> Url
where
F: Fn(Settings) -> Settings,
{
let (settings, base) = {
let mut settings = Settings::default(db_url);
let mut settings = Settings::default(
{% if database -%}
db_url
{% endif -%}
);
let (server_settings, base) = test_server::get_test_server_settings();
settings.server = server_settings;
settings.metrics.enabled = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,20 @@ use pretty_assertions::assert_eq;
#[tokio::test]
#[ignore = "Needs database to run"]
async fn test_startup_works() {
{% if database -%}
let db = helpers::init_db(
"test",
"startup_works",
)
.await;
let db_url = db.db_url();
let base = helpers::init_{{crate_name}}_server(db_url, |x| x).await;
{% endif -%}
let base = helpers::init_{{crate_name}}_server(
{% if database -%}
db_url,
{% endif -%}
|x| x
).await;
let response: serde_json::Value = test_server::send_get_request(&base, "/health")
.await;
assert_eq!(response, serde_json::json!({"status": "SERVING"}));
Expand Down

0 comments on commit ffeafb2

Please sign in to comment.