summaryrefslogtreecommitdiff
path: root/src/repository/models.rs
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2021-03-16 11:19:53 +0100
committerSanto Cariotti <santo@dcariotti.me>2021-03-16 11:19:53 +0100
commit6350610ef5f7d73680853d39898094f2bf15febb (patch)
treeccfc5c2c26c56a496d0f34b3f4db0965c713e7bb /src/repository/models.rs
parent4048dd774c817462c0a692f0f94d979290e725ee (diff)
feat: make regex of url to check if it is valid
Currently it works only with GitHub
Diffstat (limited to 'src/repository/models.rs')
-rw-r--r--src/repository/models.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/repository/models.rs b/src/repository/models.rs
index 1fd1649..1cbf3bb 100644
--- a/src/repository/models.rs
+++ b/src/repository/models.rs
@@ -1,5 +1,6 @@
use crate::db::get_client;
use crate::errors::{AppError, AppErrorType};
+use crate::helpers::name_of_git_repository;
use chrono::NaiveDateTime;
use deadpool_postgres::{Client, Pool};
@@ -133,9 +134,20 @@ impl Repository {
) -> Result<Repository, AppError> {
let client = get_client(pool.clone()).await.unwrap();
+ let repo_name: String = match name_of_git_repository(&data.url) {
+ Some(path) => path,
+ None => {
+ return Err(AppError {
+ message: Some("Repository not found".to_string()),
+ cause: Some("".to_string()),
+ error_type: AppErrorType::NotFoundError,
+ });
+ }
+ };
+
// Search a repository that matches with that url, because if it's
// exists, the server do not create a clone
- let repo_search = Repository::search(&client, data.url.clone()).await;
+ let repo_search = Repository::search(&client, repo_name.clone()).await;
match repo_search {
Ok(_) => {
return Err(AppError {
@@ -168,7 +180,7 @@ impl Repository {
};
let repo = client
- .query(&statement, &[&uuid, &data.url, &user_ip])
+ .query(&statement, &[&uuid, &repo_name, &user_ip])
.await?
.iter()
.map(|row| Repository::from_row_ref(row).unwrap())