|
|
|
|
@ -3,8 +3,6 @@ use actix_web::{get, put, Responder};
|
|
|
|
|
use actix_web::{web, HttpResponse};
|
|
|
|
|
use serde::Deserialize;
|
|
|
|
|
|
|
|
|
|
use std::fs;
|
|
|
|
|
|
|
|
|
|
use askama_actix::Template;
|
|
|
|
|
use askama_actix::TemplateToResponse;
|
|
|
|
|
|
|
|
|
|
@ -25,37 +23,25 @@ struct QueryParams {
|
|
|
|
|
pub data: Option<String>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async fn get_data(data: & web::Data<AppData>, pagename: String) -> String {
|
|
|
|
|
let fut_page_datas = db::get_page_by_name(&data.pool, pagename.to_owned());
|
|
|
|
|
async fn get_data(data: & web::Data<AppData>, domain: String, page_name: String) -> String {
|
|
|
|
|
let fut_page_datas = db::get_page_by_name(&data.pool, domain.to_owned(), page_name.to_owned());
|
|
|
|
|
let page_datas = fut_page_datas.await.unwrap();
|
|
|
|
|
let md;
|
|
|
|
|
match page_datas.first() {
|
|
|
|
|
None => {
|
|
|
|
|
let filename = String::from("pages/") + pagename.as_str() + ".md";
|
|
|
|
|
md = match fs::read_to_string(filename) {
|
|
|
|
|
Ok(txt) => {
|
|
|
|
|
db::update_page(&data.pool, pagename.to_owned(), txt.to_owned())
|
|
|
|
|
.await
|
|
|
|
|
.unwrap();
|
|
|
|
|
txt
|
|
|
|
|
}
|
|
|
|
|
Err(_) => String::from("# ") + pagename.replace("_", " ").as_str(),
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
Some(dat) => md = (*dat.page_text).to_string(),
|
|
|
|
|
None => String::from("# ") + page_name.replace("_", " ").as_str(),
|
|
|
|
|
Some(dat) => (*dat.page_text).to_string(),
|
|
|
|
|
}
|
|
|
|
|
md
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[get("/page/{page}")]
|
|
|
|
|
#[get("/{domain}/{page}")]
|
|
|
|
|
async fn page(
|
|
|
|
|
path: web::Path<(String,)>,
|
|
|
|
|
path: web::Path<(String, String,)>,
|
|
|
|
|
data: web::Data<AppData>,
|
|
|
|
|
params: web::Query<QueryParams>,
|
|
|
|
|
) -> impl Responder {
|
|
|
|
|
let pagename = &path.0;
|
|
|
|
|
let domain = &path.0;
|
|
|
|
|
let page_name = &path.1;
|
|
|
|
|
|
|
|
|
|
let md = get_data(&data, pagename.to_owned()).await;
|
|
|
|
|
let md = get_data(&data, domain.to_owned(), page_name.to_owned()).await;
|
|
|
|
|
|
|
|
|
|
match ¶ms.data {
|
|
|
|
|
Some(_) => {
|
|
|
|
|
@ -66,7 +52,7 @@ async fn page(
|
|
|
|
|
None => {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let name = data.name.to_owned() + " - " + pagename.as_str();
|
|
|
|
|
let name = data.name.to_owned() + " - " + page_name.as_str();
|
|
|
|
|
let root = data.root.to_owned();
|
|
|
|
|
//let init = String::from("init();");
|
|
|
|
|
let init = format!("init();");
|
|
|
|
|
@ -79,17 +65,18 @@ async fn page(
|
|
|
|
|
.to_response()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[put("/page/{page}")]
|
|
|
|
|
#[put("/{domain}/{page}")]
|
|
|
|
|
async fn save_page(
|
|
|
|
|
body: String,
|
|
|
|
|
path: web::Path<(String,)>,
|
|
|
|
|
path: web::Path<(String, String)>,
|
|
|
|
|
data: web::Data<AppData>,
|
|
|
|
|
) -> impl Responder {
|
|
|
|
|
let pagename = &path.0;
|
|
|
|
|
let domain = &path.0;
|
|
|
|
|
let pagename = &path.1;
|
|
|
|
|
if pagename == "index" {
|
|
|
|
|
return HttpResponse::Ok();
|
|
|
|
|
}
|
|
|
|
|
db::update_page(&data.pool, pagename.to_owned(), body)
|
|
|
|
|
db::update_page(&data.pool, domain.to_owned(), pagename.to_owned(), body)
|
|
|
|
|
.await
|
|
|
|
|
.unwrap();
|
|
|
|
|
HttpResponse::Ok()
|
|
|
|
|
|