mirror of
https://codeberg.org/icewind/haze.git
synced 2026-10-01 08:44:09 +02:00
allow running sql queries directly from cli
This commit is contained in:
parent
c734dede0e
commit
37849081be
4 changed files with 170 additions and 54 deletions
155
src/database.rs
155
src/database.rs
|
|
@ -265,53 +265,118 @@ impl Database {
|
|||
}
|
||||
}
|
||||
|
||||
pub async fn exec(&self, docker: &Docker, cloud_id: &str, root: bool) -> Result<ExitCode> {
|
||||
match self.family() {
|
||||
DatabaseFamily::Sqlite => {
|
||||
exec_tty(
|
||||
docker,
|
||||
cloud_id,
|
||||
"haze",
|
||||
vec!["sqlite3", "/var/www/html/data/haze.db"],
|
||||
Vec::<String>::default(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::MariaDB | DatabaseFamily::Mysql => {
|
||||
exec_tty(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"mysql",
|
||||
vec![
|
||||
"mysql",
|
||||
"-u",
|
||||
if root { "root" } else { "haze" },
|
||||
"-phaze",
|
||||
pub async fn exec(
|
||||
&self,
|
||||
docker: &Docker,
|
||||
cloud_id: &str,
|
||||
root: bool,
|
||||
command: &[String],
|
||||
) -> Result<ExitCode> {
|
||||
let command = command.join(" ");
|
||||
if command.is_empty() {
|
||||
match self.family() {
|
||||
DatabaseFamily::Sqlite => {
|
||||
exec_tty(
|
||||
docker,
|
||||
cloud_id,
|
||||
"haze",
|
||||
],
|
||||
Vec::<String>::default(),
|
||||
)
|
||||
.await
|
||||
vec!["sqlite3", "/var/www/html/data/haze.db"],
|
||||
Vec::<String>::default(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::MariaDB | DatabaseFamily::Mysql => {
|
||||
exec_tty(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"mysql",
|
||||
vec![
|
||||
"mysql",
|
||||
"-u",
|
||||
if root { "root" } else { "haze" },
|
||||
"-phaze",
|
||||
"haze",
|
||||
],
|
||||
Vec::<String>::default(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::Postgres => {
|
||||
exec_tty(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"root",
|
||||
vec!["psql", "haze", "haze"],
|
||||
vec!["PGPASSWORD=haze"],
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::Oracle => {
|
||||
exec_tty(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"root",
|
||||
vec!["sqlplus", "system/haze"],
|
||||
Vec::<String>::default(),
|
||||
)
|
||||
.await
|
||||
}
|
||||
}
|
||||
DatabaseFamily::Postgres => {
|
||||
exec_tty(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"root",
|
||||
vec!["psql", "haze", "haze"],
|
||||
vec!["PGPASSWORD=haze"],
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::Oracle => {
|
||||
exec_tty(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"root",
|
||||
vec!["sqlplus", "system/haze"],
|
||||
Vec::<String>::default(),
|
||||
)
|
||||
.await
|
||||
} else {
|
||||
let stdout = stdout();
|
||||
match self.family() {
|
||||
DatabaseFamily::Sqlite => {
|
||||
exec(
|
||||
docker,
|
||||
cloud_id,
|
||||
"haze",
|
||||
vec!["sqlite3", "/var/www/html/data/haze.db", "-cmd", &command],
|
||||
Vec::<String>::default(),
|
||||
Some(stdout),
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::MariaDB | DatabaseFamily::Mysql => {
|
||||
exec(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"mysql",
|
||||
vec![
|
||||
"mysql",
|
||||
"-u",
|
||||
if root { "root" } else { "haze" },
|
||||
"-phaze",
|
||||
"haze",
|
||||
"-e",
|
||||
&command,
|
||||
],
|
||||
Vec::<String>::default(),
|
||||
Some(stdout),
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::Postgres => {
|
||||
exec(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"root",
|
||||
vec!["psql", "haze", "haze", "-c", &command],
|
||||
vec!["PGPASSWORD=haze"],
|
||||
Some(stdout),
|
||||
)
|
||||
.await
|
||||
}
|
||||
DatabaseFamily::Oracle => {
|
||||
exec(
|
||||
docker,
|
||||
format!("{}-db", cloud_id),
|
||||
"root",
|
||||
vec!["sqlplus", "system/haze"],
|
||||
Vec::<String>::default(),
|
||||
Some(stdout),
|
||||
)
|
||||
.await
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue