Multiple things
Remove ArgoCD and Helm dependencies, add everything unnecessary to .dockerignore, add support for DB authentication in Payphone's CLI, make Scylla be fully managed by Ansible, add Payphone deployment ansible file
This commit is contained in:
+16
@@ -195,6 +195,22 @@ pub enum Commands {
|
||||
]
|
||||
database_addr: String,
|
||||
|
||||
/// The username to use when connecting to the database.
|
||||
#[arg(
|
||||
long,
|
||||
env = "PAYPHONE_DATABASE_USERNAME",
|
||||
value_name = "USERNAME"
|
||||
)]
|
||||
database_username: Option<String>,
|
||||
|
||||
/// The password to use when connecting to the database.
|
||||
#[arg(
|
||||
long,
|
||||
env = "PAYPHONE_DATABASE_PASSWORD",
|
||||
value_name = "PASSWORD"
|
||||
)]
|
||||
database_password: Option<String>,
|
||||
|
||||
#[arg(
|
||||
long,
|
||||
short,
|
||||
|
||||
+21
-7
@@ -22,13 +22,27 @@ pub enum DatabaseError {
|
||||
|
||||
static MIGRATIONS: Dir = include_dir!("$CARGO_MANIFEST_DIR/src/database/migrations");
|
||||
|
||||
pub async fn init(uri: impl ToString) -> Result<Session, DatabaseError> {
|
||||
let session = SessionBuilder::new()
|
||||
.known_node(uri.to_string())
|
||||
.build()
|
||||
.await
|
||||
.inspect_err(|e| log::error!("Could not connect to the database! {e:?}"))
|
||||
.map_err(|_| DatabaseError::ConnectionFailed)?;
|
||||
pub async fn init(
|
||||
uri: impl ToString,
|
||||
username: Option<String>,
|
||||
password: Option<String>,
|
||||
) -> Result<Session, DatabaseError> {
|
||||
let session = if let Some((username, password)) = username.zip(password) {
|
||||
SessionBuilder::new()
|
||||
.known_node(uri.to_string())
|
||||
.user(username, password)
|
||||
.build()
|
||||
.await
|
||||
.inspect_err(|e| log::error!("Could not connect to the database! {e:?}"))
|
||||
.map_err(|_| DatabaseError::ConnectionFailed)?
|
||||
} else {
|
||||
SessionBuilder::new()
|
||||
.known_node(uri.to_string())
|
||||
.build()
|
||||
.await
|
||||
.inspect_err(|e| log::error!("Could not connect to the database! {e:?}"))
|
||||
.map_err(|_| DatabaseError::ConnectionFailed)?
|
||||
};
|
||||
|
||||
execute_file(
|
||||
&session,
|
||||
|
||||
+18
-5
@@ -165,9 +165,18 @@ pub async fn main() {
|
||||
Commands::Start {
|
||||
token,
|
||||
database_addr,
|
||||
database_username,
|
||||
database_password,
|
||||
shard,
|
||||
} => {
|
||||
start(token, database_addr, shard.into()).await;
|
||||
start(
|
||||
token,
|
||||
database_addr,
|
||||
database_username,
|
||||
database_password,
|
||||
shard.into(),
|
||||
)
|
||||
.await;
|
||||
}
|
||||
Commands::Docs { bind, open } => {
|
||||
docs(bind, open).await;
|
||||
@@ -201,16 +210,20 @@ impl PrefixGetter<State> for ServerPrefixOrPayphoneMention {
|
||||
}
|
||||
|
||||
/// Starts a Payphone shard.
|
||||
///
|
||||
/// TODO: Support multiple shards.
|
||||
async fn start(token: String, database_addr: String, shard: ShardId) {
|
||||
async fn start(
|
||||
token: String,
|
||||
database_addr: String,
|
||||
database_username: Option<String>,
|
||||
database_password: Option<String>,
|
||||
shard: ShardId,
|
||||
) {
|
||||
log::info!("Welcome to Payphone, Nyeki!");
|
||||
log::info!(
|
||||
"Payphone is running on version v{}",
|
||||
env!("CARGO_PKG_VERSION")
|
||||
);
|
||||
|
||||
let db = database::init(database_addr)
|
||||
let db = database::init(database_addr, database_username, database_password)
|
||||
.await
|
||||
.expect("Could not connect to the database!");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user