diff options
| author | Santo Cariotti <santo@dcariotti.me> | 2022-09-20 13:44:46 +0000 |
|---|---|---|
| committer | Santo Cariotti <santo@dcariotti.me> | 2022-09-20 13:44:46 +0000 |
| commit | 224b7e52c7a7a02d36a82c070925a2e506b7b2f4 (patch) | |
| tree | 1235a14e37866c088b3e826b2b58f8d77bd70c83 /src/models/model.rs | |
| parent | e0d034dc818c699f4e6ecdd5a027ff7377421acd (diff) | |
Delete model
Diffstat (limited to 'src/models/model.rs')
| -rw-r--r-- | src/models/model.rs | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/models/model.rs b/src/models/model.rs index 08bfe88..80eb5ad 100644 --- a/src/models/model.rs +++ b/src/models/model.rs @@ -144,7 +144,7 @@ impl Model { /// List all models pub async fn list(page: i64) -> Result<Vec<ModelUser>, AppError> { let pool = unsafe { get_client() }; - let rows: Vec<ModelUser>= sqlx::query_as( + let rows: Vec<ModelUser> = sqlx::query_as( r#" SELECT models.*, @@ -165,6 +165,22 @@ impl Model { Ok(rows) } + /// Delete a model + pub async fn delete(model_id: i32) -> Result<(), AppError> { + let pool = unsafe { get_client() }; + + sqlx::query( + r#" + DELETE FROM models WHERE id = $1 + "#, + ) + .bind(model_id) + .execute(pool) + .await?; + + Ok(()) + } + /// Return the number of models. pub async fn count() -> Result<i64, AppError> { let pool = unsafe { get_client() }; @@ -184,6 +200,23 @@ impl ModelUser { None => json!(0), } } + + pub async fn upload_paths(&self) -> Option<Vec<String>> { + if self.uploads.is_none() { + return None; + } + + let uploads = ModelUpload::find_by_model(self.id) + .await + .unwrap_or_default(); + + let paths = uploads + .iter() + .map(|x| x.filepath.clone()) + .collect::<Vec<String>>(); + + return Some(paths); + } } impl ModelUpload { @@ -216,4 +249,20 @@ impl ModelUpload { Ok(rec) } + + /// Find all paths of a model + pub async fn find_by_model(model_id: i32) -> Result<Vec<ModelUpload>, AppError> { + let pool = unsafe { get_client() }; + + let rec: Vec<ModelUpload> = sqlx::query_as( + r#" + SELECT * FROM uploads WHERE model_id = $1 + "#, + ) + .bind(model_id) + .fetch_all(pool) + .await?; + + Ok(rec) + } } |
