diff --git a/scripts/webserver.sh b/scripts/webserver.sh index 07eb6e1..2330de1 100755 --- a/scripts/webserver.sh +++ b/scripts/webserver.sh @@ -2,4 +2,4 @@ cd ../server/ui yarn yarn build cd ../service -cargo run +cargo run --release diff --git a/server/service/src/main.rs b/server/service/src/main.rs index f4382d7..d316a63 100644 --- a/server/service/src/main.rs +++ b/server/service/src/main.rs @@ -9,7 +9,7 @@ use actix_web::{fs, http, server, App, HttpResponse, Query}; use std::error::Error; -use grep::regex::RegexMatcher; +use grep::regex::RegexMatcherBuilder; use grep::searcher::sinks::Lossy; use grep::searcher::{BinaryDetection, SearcherBuilder}; use std::fs::File; @@ -47,23 +47,30 @@ fn search(query: Query) -> HttpResponse { fn ripgrep(query: Query) -> String { let page = query.page.unwrap_or(1); let size = query.size.unwrap_or(10); - let offset = size * (page - 1) + 1; + let offset = size * (page - 1); let csv_file = File::open("../../torrents.csv"); - println!( - "query = {} , page = {}, size = {}, offset = {}", - query.q, page, size, offset - ); + println!("query = {} , page = {}, size = {}", query.q, page, size); let results = search_file(csv_file.unwrap(), &query.q).unwrap(); - results[offset - 1..offset + size].join("") + let last: usize = if offset + size < results.len() { + offset + size + } else { + results.len() + }; + + results[offset..last].join("") } fn search_file(file: File, query: &str) -> Result, Box> { let pattern = query.replace(" ", ".*"); - let matcher = RegexMatcher::new_line_matcher(&pattern)?; + let matcher = RegexMatcherBuilder::new() + .case_insensitive(true) + .build(&pattern) + .unwrap(); + let mut matches: Vec = vec![]; let mut searcher = SearcherBuilder::new() diff --git a/server/ui/src/index.tsx b/server/ui/src/index.tsx index 9f2e1c5..95bbb96 100644 --- a/server/ui/src/index.tsx +++ b/server/ui/src/index.tsx @@ -1,5 +1,5 @@ import { render, Component, linkEvent } from 'inferno'; -import moment from 'moment'; +import * as moment from 'moment'; import { endpoint } from './env'; import { SearchParams, Results, State } from './interfaces';