add CD, fix warnings
This commit is contained in:
@ -1,2 +1,2 @@
|
||||
mod component;
|
||||
pub use component::*;
|
||||
//mod component;
|
||||
//pub use component::*;
|
||||
|
||||
@ -12,9 +12,11 @@ use crate::config::ClientConfig;
|
||||
|
||||
use std::time::Duration;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use std::fs;
|
||||
use std::fs::File;
|
||||
#[cfg(feature = "server")]
|
||||
use std::io::Write;
|
||||
#[cfg(feature = "server")]
|
||||
use futures::StreamExt;
|
||||
|
||||
|
||||
@ -44,7 +46,7 @@ async fn upload_file(mut upload: FileStream) -> Result<String, HttpError> {
|
||||
|
||||
let filename: String = loop {
|
||||
let cur = random_string::generate(20, "ABCDEFGHIJKLMNOPQRTSTUVWXYZ0123456789");
|
||||
if (!fs::exists(s_config.upload_folder.clone() + &cur).expect("can't check if file exists")) {
|
||||
if !fs::exists(s_config.upload_folder.clone() + &cur).expect("can't check if file exists") {
|
||||
break cur;
|
||||
}
|
||||
};
|
||||
@ -74,7 +76,7 @@ async fn upload_file(mut upload: FileStream) -> Result<String, HttpError> {
|
||||
break;
|
||||
}
|
||||
|
||||
if file.write(&bytes).is_err() { error == Some("failed write"); break; };
|
||||
if file.write(&bytes).is_err() { error = Some("failed write"); break; };
|
||||
},
|
||||
Err(_) => { error = Some("unknown"); break; }
|
||||
}
|
||||
@ -82,8 +84,8 @@ async fn upload_file(mut upload: FileStream) -> Result<String, HttpError> {
|
||||
|
||||
match error {
|
||||
Some(err)=> {
|
||||
file.sync_data();
|
||||
fs::remove_file(s_config.upload_folder.clone() + &filename);
|
||||
let _ = file.sync_data();
|
||||
let _ = fs::remove_file(s_config.upload_folder.clone() + &filename);
|
||||
HttpError::internal_server_error(err)?
|
||||
}
|
||||
None => {
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
use std::fs::create_dir;
|
||||
|
||||
use dioxus::prelude::*;
|
||||
use dioxus::fullstack::FileStream;
|
||||
#[cfg(feature = "server")]
|
||||
use httpserver::models::GetFile;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::prelude::*;
|
||||
#[cfg(feature = "server")]
|
||||
@ -15,6 +12,7 @@ use httpserver::schema;
|
||||
#[cfg(feature = "server")]
|
||||
use crate::config::ServerConfig;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use std::path::Path;
|
||||
|
||||
|
||||
@ -39,10 +37,10 @@ async fn download_file(id: String) -> Result<FileStream, HttpError> {
|
||||
use schema::file;
|
||||
let s_config = ServerConfig::load();
|
||||
|
||||
let result = DB.with(|pool| schema::file::table.select((file::filename))
|
||||
let result = DB.with(|pool| schema::file::table.select(file::filename)
|
||||
.filter(file::stored_filename.eq(id.clone()))
|
||||
.filter(file::deleted.eq(false))
|
||||
.load::<(String)>(&mut pool.get().unwrap()));
|
||||
.load::<String>(&mut pool.get().unwrap()));
|
||||
|
||||
if let Err(_) = result {
|
||||
return HttpError::internal_server_error("Database request failed");
|
||||
|
||||
@ -1,20 +1,17 @@
|
||||
use std::time::SystemTime;
|
||||
|
||||
use chrono::DateTime;
|
||||
use chrono::Utc;
|
||||
|
||||
use dioxus::fullstack::httperror;
|
||||
use dioxus::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use httpserver::utils::byte_to_human_size;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use httpserver::models::GetFile;
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::prelude::*;
|
||||
#[cfg(feature = "server")]
|
||||
use httpserver::DB;
|
||||
#[cfg(feature = "server")]
|
||||
use std::time::SystemTime;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use httpserver::schema;
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use httpserver::models::GetFile;
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::prelude::*;
|
||||
#[cfg(feature = "server")]
|
||||
@ -9,17 +7,14 @@ use httpserver::DB;
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::dsl;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use httpserver::schema;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use crate::config::ServerConfig;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use bigdecimal::{BigDecimal, ToPrimitive};
|
||||
|
||||
use httpserver::utils::byte_to_human_size;
|
||||
#[derive(Deserialize, Serialize)]
|
||||
struct UploadServerStats {
|
||||
total_limit_soft: u64,
|
||||
@ -43,8 +38,8 @@ async fn get_upload_stats() -> Result<UploadServerStats, HttpError> {
|
||||
_ => return HttpError::internal_server_error("wth ?")
|
||||
};
|
||||
|
||||
let total_files = match DB.with(|pool| file::table.select((dsl::count(file::id)))
|
||||
.first::<(i64)>(&mut pool.get().unwrap())) {
|
||||
let total_files = match DB.with(|pool| file::table.select(dsl::count(file::id))
|
||||
.first::<i64>(&mut pool.get().unwrap())) {
|
||||
Ok(val) => val,
|
||||
_ => return HttpError::internal_server_error("wth ?")
|
||||
};
|
||||
|
||||
@ -12,7 +12,7 @@ impl ServerConfig {
|
||||
pub fn load() -> Self {
|
||||
Self {
|
||||
upload_folder: "./test/".to_string(),
|
||||
db_url: std::env::var("DATABASE_URL").expect("missing DATABASE_URL"),
|
||||
db_url: std::env::var("HTTPSERVER_DATABASE_URL").expect("missing HTTPSERVER_DATABASE_URL"),
|
||||
|
||||
upload_storage_limit_soft: 1024 * 1024 * 1024 * 200,
|
||||
upload_storage_limit_hard: 1024 * 1024 * 1024 * 300,
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::pg::PgConnection;
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::prelude::*;
|
||||
|
||||
pub mod utils;
|
||||
|
||||
@ -18,17 +16,15 @@ pub mod schema;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::r2d2::{ConnectionManager, Pool};
|
||||
#[cfg(feature = "server")]
|
||||
use diesel::result::Error;
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
thread_local! {
|
||||
pub static DB: diesel::r2d2::Pool<ConnectionManager<PgConnection>> = {
|
||||
pub static DB: Pool<ConnectionManager<PgConnection>> = {
|
||||
let s_config = ServerConfig::load();
|
||||
let db_url = s_config.db_url.clone();
|
||||
|
||||
let manager = ConnectionManager::<PgConnection>::new(&db_url);
|
||||
diesel::r2d2::Pool::builder()
|
||||
Pool::builder()
|
||||
.build(manager)
|
||||
.unwrap_or_else(|_| panic!("Error creating pool for {}", db_url))
|
||||
};
|
||||
|
||||
@ -8,6 +8,9 @@ use crate::components::toast::ToastProvider;
|
||||
|
||||
use crate::views::{Upload, UploadInfo, Home};
|
||||
|
||||
#[cfg(feature = "server")]
|
||||
use crate::config::ServerConfig;
|
||||
|
||||
mod components;
|
||||
mod views;
|
||||
|
||||
@ -27,6 +30,9 @@ const FAVICON: Asset = asset!("/assets/favicon.ico");
|
||||
const TAILWIND_CSS: Asset = asset!("/assets/tailwind.css");
|
||||
|
||||
fn main() {
|
||||
#[cfg(feature = "server")]
|
||||
let _ = ServerConfig::load();
|
||||
|
||||
dioxus::logger::init(Level::INFO).expect("failed to init logger");
|
||||
dioxus::launch(App);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user