summaryrefslogtreecommitdiffstats
path: root/src/models/model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/model.rs')
-rw-r--r--src/models/model.rs51
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)
+ }
}