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:
2025-08-18 01:06:03 -03:00
parent 5fe3878471
commit fcb1a786be
37 changed files with 294 additions and 26917 deletions
+16
View File
@@ -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
View File
@@ -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
View File
@@ -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!");