db working, reorganize minecraft socket code

This commit is contained in:
2026-05-30 00:31:12 +02:00
parent 6e7285507d
commit 2303f06fea
14 changed files with 381 additions and 314 deletions

View File

@ -1,42 +1,55 @@
//use tokio::net::TcpListener;
use std::io;
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.rs :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tomoron <tomoron@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2026/05/29 21:22:17 by tomoron #+# #+# */
/* Updated: 2026/05/29 21:31:39 by tomoron ### ########.fr */
/* */
/* ************************************************************************** */
use bollard::{
query_parameters::{
ListImagesOptionsBuilder,
ListContainersOptionsBuilder,
CreateContainerOptionsBuilder
},
models::{
ContainerCreateBody
},
Docker
};
use tokio::net::TcpListener;
use tokio::io;
//use bollard::{
// query_parameters::{
// ListImagesOptionsBuilder,
// ListContainersOptionsBuilder,
// CreateContainerOptionsBuilder
// },
// models::{
// ContainerCreateBody
// },
// Docker
//};
//mod minecraft;
//use minecraft::process_mc_socket;
mod minecraft;
use minecraft::process_mc_socket;
//mod rpc;
//use rpc::process_rpc_socket;
mod rpc;
use rpc::process_rpc_socket;
use diesel::{prelude::*, r2d2::{ConnectionManager, Pool}};
mod models;
//mod models;
use dockermcmgr::schema;
//use dockermcmgr::schema;
use crate::models::{ Servers, CreateServer };
//use crate::models::{ Servers, CreateServer };
use std::env;
pub mod status;
//pub mod status;
use status::ServerStatus;
//use status::ServerStatus;
//
pub type DbPool = Pool<ConnectionManager<PgConnection>>;
fn get_connection_pool() -> Pool<ConnectionManager<PgConnection>> {
fn get_connection_pool() -> DbPool {
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
let manager = ConnectionManager::<PgConnection>::new(&database_url);
@ -47,13 +60,37 @@ fn get_connection_pool() -> Pool<ConnectionManager<PgConnection>> {
#[tokio::main(flavor = "current_thread")]
async fn main() -> io::Result<()> {
// let conn = DB_CONN.get().expect("failed to get the connection from the pool");
let pool = get_connection_pool();
let mc_listener = TcpListener::bind("0.0.0.0:25565").await?;
let rpc_listener = TcpListener::bind("0.0.0.0:8080").await?;
loop {
tokio::select! {
Ok((socket, _)) = mc_listener.accept() => {
let cloned = pool.clone();
tokio::spawn(async move {
if let Err(e) = process_mc_socket(socket, cloned).await {
eprintln!("mc error: {:?}", e);
}
});
}
Ok((socket, _)) = rpc_listener.accept() => {
let cloned = pool.clone();
tokio::spawn(async move {
if let Err(e) = process_rpc_socket(socket, cloned).await {
eprintln!("rpc error: {:?}", e);
}
});
}
}
}
/*
let conn = &mut pool.get().unwrap();
let servers = schema::servers::table.select(Servers::as_select()).load(conn);
println!("servers : {:?}", servers);
let new_server = CreateServer {
name: "potato",
@ -64,7 +101,24 @@ async fn main() -> io::Result<()> {
redirect_ip: None
};
match diesel::insert_into(schema::servers::table)
.values(&new_server)
.execute(conn) {
Ok(a) => { println!("{:?}", a); },
Err(reason) => {println!("got an error : {:?}", reason) }
}
let start = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
let servers = schema::servers::table.select(Servers::as_select()).load(conn).unwrap();
let end = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
println!("servers : {:?}", servers);
println!("retreived in {:?}", end - start);
println!("server id : {}",servers[0].id);
Ok(())
*/
/*
println!("{:?}", docker);
let options = ListImagesOptionsBuilder::default()
@ -95,27 +149,5 @@ async fn main() -> io::Result<()> {
let start_res = docker.start_container("rust-created-container", None).await;
*/
/*
let mc_listener = TcpListener::bind("0.0.0.0:25565").await?;
let rpc_listener = TcpListener::bind("0.0.0.0:8080").await?;
loop {
tokio::select! {
Ok((socket, _)) = mc_listener.accept() => {
tokio::spawn(async move {
if let Err(e) = process_mc_socket(socket).await {
eprintln!("mc error: {:?}", e);
}
});
}
Ok((socket, _)) = rpc_listener.accept() => {
tokio::spawn(async move {
if let Err(e) = process_rpc_socket(socket).await {
eprintln!("rpc error: {:?}", e);
}
});
}
}
}
*/
}