Merge branch 'main' of gitea:jheuel/photos
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing

This commit is contained in:
Johannes Heuel
2022-08-23 17:50:50 +02:00
17 changed files with 77 additions and 60 deletions

View File

@@ -6,4 +6,6 @@ steps:
- name: pre-commit - name: pre-commit
image: iamthefij/drone-pre-commit:latest image: iamthefij/drone-pre-commit:latest
commands: commands:
- curl https://sh.rustup.rs -sSf | bash -s -- -y
- export PATH="/root/.cargo/bin:$${PATH}"
- pre-commit run --all-files - pre-commit run --all-files

33
.github/workflows/rust.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: pre-commit
on:
pull_request:
push:
branches: [main]
jobs:
pre-commit:
name: pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
- uses: pre-commit/action@v3.0.0
test:
name: tests
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test

13
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,13 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/doublify/pre-commit-rust
rev: v1.0
hooks:
- id: fmt
- id: cargo-check

View File

@@ -1,8 +1,8 @@
extern crate diesel; extern crate diesel;
use backend::models::*; use backend::models::*;
use diesel::prelude::*;
use backend::*; use backend::*;
use diesel::prelude::*;
type DbError = Box<dyn std::error::Error + Send + Sync>; type DbError = Box<dyn std::error::Error + Send + Sync>;

View File

@@ -1,7 +1,7 @@
extern crate diesel; extern crate diesel;
use backend::create_picture; use backend::create_picture;
use backend::models::NewPicture;
use backend::establish_connection; use backend::establish_connection;
use backend::models::NewPicture;
// use backend::*; // use backend::*;
use std::ffi::OsStr; use std::ffi::OsStr;
@@ -123,17 +123,18 @@ fn main() {
println!("pe = {}", serde_json::to_string_pretty(pe).unwrap()); println!("pe = {}", serde_json::to_string_pretty(pe).unwrap());
let created_at: Option<i32> = if let Some(c) = pe.created_at { let created_at: Option<i32> = if let Some(c) = pe.created_at {
Some(c) Some(c)
} else { } else {
let metadata = fs::metadata(&path.path()).unwrap(); let metadata = fs::metadata(&path.path()).unwrap();
if let Ok(time) = metadata.created() { if let Ok(time) = metadata.created() {
Some(time.duration_since(UNIX_EPOCH) Some(
time.duration_since(UNIX_EPOCH)
.unwrap() .unwrap()
.as_secs() .as_secs()
.try_into() .try_into()
.unwrap()) .unwrap(),
)
} else { } else {
println!("Not supported on this platform or filesystem"); println!("Not supported on this platform or filesystem");
None None
@@ -161,10 +162,7 @@ fn main() {
}; };
let pic = create_picture(&connection, new_picture); let pic = create_picture(&connection, new_picture);
println!( println!("Created picture with filepath={} and id={}", filepath, pic);
"Created picture with filepath={} and id={}",
filepath, pic
);
}); });
} }

View File

@@ -1,8 +1,8 @@
extern crate diesel; extern crate diesel;
use self::models::*; use self::models::*;
use diesel::prelude::*;
use backend::*; use backend::*;
use diesel::prelude::*;
fn main() { fn main() {
use self::schema::pictures::dsl::*; use self::schema::pictures::dsl::*;

View File

@@ -5,17 +5,16 @@ extern crate dotenv;
pub mod models; pub mod models;
pub mod schema; pub mod schema;
use self::models::{NewPicture}; use self::models::NewPicture;
use diesel::prelude::*;
use diesel::pg::PgConnection; use diesel::pg::PgConnection;
use diesel::prelude::*;
use dotenv::dotenv; use dotenv::dotenv;
use std::env; use std::env;
pub fn establish_connection() -> PgConnection { pub fn establish_connection() -> PgConnection {
dotenv().ok(); dotenv().ok();
let database_url = env::var("DATABASE_URL") let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
.expect("DATABASE_URL must be set");
PgConnection::establish(&database_url) PgConnection::establish(&database_url)
.unwrap_or_else(|_| panic!("Error connecting to {}", database_url)) .unwrap_or_else(|_| panic!("Error connecting to {}", database_url))
} }

View File

@@ -114,30 +114,3 @@ async fn main() -> std::io::Result<()> {
.run() .run()
.await .await
} }
#[cfg(test)]
mod tests {
use super::*;
use actix_web::test;
#[actix_web::test]
async fn user_routes() {
std::env::set_var("RUST_LOG", "actix_web=debug");
env_logger::init();
dotenv::dotenv().ok();
let connspec = std::env::var("DATABASE_URL").expect("DATABASE_URL");
let manager = ConnectionManager::<PgConnection>::new(connspec);
let pool = r2d2::Pool::builder()
.build(manager)
.expect("Failed to create pool.");
let _app = test::init_service(
App::new()
.app_data(web::Data::new(pool.clone()))
.wrap(middleware::Logger::default()), // .service(get_user)
// .service(add_user),
)
.await;
}
}

View File

@@ -1,6 +1,6 @@
use serde::{Serialize, Deserialize}; use serde::{Deserialize, Serialize};
#[derive(Serialize,Deserialize,Debug,Clone,PartialEq)] #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct OutputPicture { pub struct OutputPicture {
pub thumbnail: Option<String>, pub thumbnail: Option<String>,
pub width: u32, pub width: u32,

View File

@@ -2,7 +2,6 @@ use common::OutputPicture;
use pathfinding::prelude::dijkstra; use pathfinding::prelude::dijkstra;
use weblog::console_log; use weblog::console_log;
pub fn get_common_height(row: &[OutputPicture], container_width: u32, margin: u32) -> f32 { pub fn get_common_height(row: &[OutputPicture], container_width: u32, margin: u32) -> f32 {
let row_width: u32 = container_width - row.len() as u32 * (margin * 2); let row_width: u32 = container_width - row.len() as u32 * (margin * 2);
let total_aspect_ratio: f32 = row let total_aspect_ratio: f32 = row