Support specifying a region when creating servers (#3709)

* Support specifying a region when creating servers

* Remove hardcoded default server region
This commit is contained in:
François-Xavier Talbot
2025-05-26 17:21:52 -04:00
committed by GitHub
parent 74cf3f076e
commit f52d020a3c

View File

@@ -997,6 +997,7 @@ pub enum ChargeRequestType {
pub enum PaymentRequestMetadata { pub enum PaymentRequestMetadata {
Pyro { Pyro {
server_name: Option<String>, server_name: Option<String>,
server_region: Option<String>,
source: serde_json::Value, source: serde_json::Value,
}, },
} }
@@ -1789,33 +1790,39 @@ pub async fn stripe_webhook(
.await? .await?
.error_for_status()?; .error_for_status()?;
} else { } else {
let (server_name, source) = if let Some( let (server_name, server_region, source) =
PaymentRequestMetadata::Pyro { if let Some(
ref server_name, PaymentRequestMetadata::Pyro {
ref source, ref server_name,
}, ref server_region,
) = ref source,
metadata.payment_metadata },
{ ) = metadata.payment_metadata
(server_name.clone(), source.clone()) {
} else { (
// Create a server with the latest version of Minecraft server_name.clone(),
let minecraft_versions = crate::database::models::legacy_loader_fields::MinecraftGameVersion::list( server_region.clone(),
Some("release"), source.clone(),
None, )
&**pool, } else {
&redis, // Create a server with the latest version of Minecraft
).await?; let minecraft_versions = crate::database::models::legacy_loader_fields::MinecraftGameVersion::list(
Some("release"),
None,
&**pool,
&redis,
).await?;
( (
None, None,
serde_json::json!({ None,
"loader": "Vanilla", serde_json::json!({
"game_version": minecraft_versions.first().map(|x| x.version.clone()), "loader": "Vanilla",
"loader_version": "" "game_version": minecraft_versions.first().map(|x| x.version.clone()),
}), "loader_version": ""
) }),
}; )
};
let server_name = server_name let server_name = server_name
.unwrap_or_else(|| { .unwrap_or_else(|| {
@@ -1845,6 +1852,7 @@ pub async fn stripe_webhook(
"swap_mb": swap, "swap_mb": swap,
"storage_mb": storage, "storage_mb": storage,
}, },
"region": server_region,
"source": source, "source": source,
"payment_interval": metadata.charge_item.subscription_interval.map(|x| match x { "payment_interval": metadata.charge_item.subscription_interval.map(|x| match x {
PriceDuration::Monthly => 1, PriceDuration::Monthly => 1,