Compare commits
2 Commits
9c79881c4b
...
ec126bbdc4
| Author | SHA1 | Date | |
|---|---|---|---|
| ec126bbdc4 | |||
| 0fe13b6ce7 |
@@ -3,3 +3,9 @@
|
||||
assets="./assets"
|
||||
# Set bind address
|
||||
bind="127.0.0.1:8080"
|
||||
|
||||
[database]
|
||||
address="127.0.0.1:5432"
|
||||
user="web"
|
||||
password="apassword"
|
||||
database_name="website"
|
||||
@@ -163,8 +163,18 @@ impl BasePageBuilder {
|
||||
.classes(vec!["name"])
|
||||
.text("AINDUSTRIES")
|
||||
.build();
|
||||
let home = Anchor::builder().id("home").classes(vec!["nav-button"]).href("/").text("Home").build();
|
||||
let projects = Anchor::builder().id("projects").classes(vec!["nav-button"]).href("/projects").text("Projects").build();
|
||||
let home = Anchor::builder()
|
||||
.id("home")
|
||||
.classes(vec!["nav-button"])
|
||||
.href("/")
|
||||
.text("Home")
|
||||
.build();
|
||||
let projects = Anchor::builder()
|
||||
.id("projects")
|
||||
.classes(vec!["nav-button"])
|
||||
.href("/projects")
|
||||
.text("Projects")
|
||||
.build();
|
||||
let buttons = Division::builder()
|
||||
.classes(vec!["nav-buttons"])
|
||||
.elements(boxed_vec![home, projects])
|
||||
|
||||
28
src/main.rs
28
src/main.rs
@@ -5,6 +5,7 @@ mod pages;
|
||||
use actix_web::{App, HttpServer, web};
|
||||
use clap::Parser;
|
||||
use serde::Deserialize;
|
||||
use sqlx::PgPool;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::process::exit;
|
||||
@@ -32,6 +33,7 @@ struct Cli {
|
||||
#[derive(Deserialize)]
|
||||
struct Config {
|
||||
server: ServerConfig,
|
||||
database: DatabaseConfig,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
@@ -40,8 +42,17 @@ struct ServerConfig {
|
||||
bind: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct DatabaseConfig {
|
||||
address: String,
|
||||
user: String,
|
||||
password: String,
|
||||
database_name: String,
|
||||
}
|
||||
|
||||
struct AppState {
|
||||
assets: String,
|
||||
pool: PgPool,
|
||||
}
|
||||
|
||||
#[actix_web::main]
|
||||
@@ -71,7 +82,22 @@ async fn main() {
|
||||
};
|
||||
let bind_address = config.server.bind;
|
||||
let assets = config.server.assets;
|
||||
let data = web::Data::new(AppState { assets });
|
||||
let database_address = format!(
|
||||
"postgres://{}:{}@{}/{}",
|
||||
config.database.user,
|
||||
config.database.password,
|
||||
config.database.address,
|
||||
config.database.database_name
|
||||
);
|
||||
let pool = match PgPool::connect(&database_address).await {
|
||||
Ok(pool) => pool,
|
||||
Err(e) => {
|
||||
eprintln!("Could not connect to database: {e}");
|
||||
exit(1);
|
||||
}
|
||||
};
|
||||
let assets = assets.replace("~", "/home/conta/Code/aindustries.be/assets");
|
||||
let data = web::Data::new(AppState { assets, pool });
|
||||
if let Ok(server) = HttpServer::new(move || {
|
||||
App::new().app_data(data.clone()).service(file).service(
|
||||
web::scope("")
|
||||
|
||||
@@ -19,7 +19,11 @@ async fn projects() -> impl Responder {
|
||||
.classes(vec!["project-desc"])
|
||||
.text("This project is the website you currently are on.")
|
||||
.build();
|
||||
let view = Anchor::builder().classes(vec!["project-view"]).href("/projects/website").text("Learn More").build();
|
||||
let view = Anchor::builder()
|
||||
.classes(vec!["project-view"])
|
||||
.href("/projects/website")
|
||||
.text("Learn More")
|
||||
.build();
|
||||
let info = Division::builder()
|
||||
.classes(vec!["project-info"])
|
||||
.elements(boxed_vec![website_desc, view])
|
||||
@@ -53,7 +57,10 @@ async fn project(project: web::Path<String>) -> impl Responder {
|
||||
match project.as_str() {
|
||||
"website" => {
|
||||
let title = Heading::builder().text("Website").build();
|
||||
let gitea = Anchor::builder().href("https://git.aindustries.be/AINDUSTRIES/aindustries.be").text("aindustries-be").build();
|
||||
let gitea = Anchor::builder()
|
||||
.href("https://git.aindustries.be/AINDUSTRIES/aindustries.be")
|
||||
.text("aindustries-be")
|
||||
.build();
|
||||
let desc = Paragraph::builder().classes(vec!["description"]).text(
|
||||
format!("This project, the website you are on, \
|
||||
is made in Rust such that all the pages are generated by code.<br>\
|
||||
|
||||
Reference in New Issue
Block a user