test instance to connect to db

This commit is contained in:
Nicksname 2023-08-12 22:26:51 +02:00
parent a2536696ce
commit f1facae8a2
3 changed files with 98 additions and 1 deletions

View file

@ -6,10 +6,19 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
# rust
actix-web ="4" actix-web ="4"
actix-files = "*" actix-files = "*"
utoipa-swagger-ui = { version = "3", features = ["actix-web"] } utoipa-swagger-ui = { version = "3", features = ["actix-web"] }
# db-connection
sqlx = { version = "0.6.2", features = ["runtime-tokio-native-tls", "sqlite"]}
tokio = { version = "1.20.0", features = ["macros"]}
[[bin]] [[bin]]
name = "webserver" name = "webserver"
path = "main.rs" path = "src/main.rs"
[[bin]]
name = "db_access"
path = "src/main_db.rs"

88
backend/src/main_db.rs Normal file
View file

@ -0,0 +1,88 @@
use sqlx::{migrate::MigrateDatabase, FromRow, Row, Sqlite, SqlitePool};
use std::io;
const DB_URL: &str = "sqlite://db/test.db";
const COMMANDS :[(i32, &str, &str); 4] = [
(0, "createDB", "creates the database if not already."),
(1, "initDB", "initializes the data of the db with given file"),
(2, "connect", "connecting to the db."),
(3, "execute sql", "execute SQL that is entered"),
];
#[tokio::main]
async fn main() {
// game loop
let mut db: Option<SqlitePool> = None;
loop {
println!("What do you want to do?\n");
print_commands();
println!("");
let mut choice = String::new();
io::stdin()
.read_line(&mut choice)
.expect("Failed to read line");
let choice: u32 = choice
.trim()
.parse()
.expect("Please type a number!");
match choice {
0 => create_db().await,
1 => init_db(),
2 => db = connect_db().await,
3 => db = execute_sql(db).await,
_ => println!("This Command does not exists")
}
println!("");
}
}
fn print_commands() {
for command in COMMANDS {
let (num, name, desc) = command;
println!("{num}. {name} \t{desc}");
}
}
async fn create_db() {
// TODO
if !Sqlite::database_exists(DB_URL).await.unwrap_or(false) {
println!("Creating database {}", DB_URL);
match Sqlite::create_database(DB_URL).await {
Ok(_) => println!("Create db success"),
Err(error) => panic!("error: {}", error),
}
} else {
println!("database already exists");
}
}
fn init_db() {
println!("databases baby!");
}
async fn connect_db() -> Option<SqlitePool>{
return Some(
SqlitePool::connect(DB_URL).await.unwrap()
);
}
async fn execute_sql(db: Option<SqlitePool>) -> Option<SqlitePool> {
match db {
None => println!("WTF?!"),
_ => println!("uh yeah sql."),
}
return db;
}