summaryrefslogtreecommitdiffstats
path: root/src/models
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2022-09-20 13:44:46 +0000
committerSanto Cariotti <santo@dcariotti.me>2022-09-20 13:44:46 +0000
commit224b7e52c7a7a02d36a82c070925a2e506b7b2f4 (patch)
tree1235a14e37866c088b3e826b2b58f8d77bd70c83 /src/models
parente0d034dc818c699f4e6ecdd5a027ff7377421acd (diff)
Delete model
Diffstat (limited to 'src/models')
-rw-r--r--src/models/model.rs51
-rw-r--r--src/models/user.rs2
2 files changed, 51 insertions, 2 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)
+ }
}
diff --git a/src/models/user.rs b/src/models/user.rs
index 964a57c..c4debf5 100644
--- a/src/models/user.rs
+++ b/src/models/user.rs
@@ -27,7 +27,7 @@ pub struct UserList {
pub id: i32,
email: String,
username: String,
- is_staff: Option<bool>,
+ pub is_staff: Option<bool>,
#[serde_as(as = "NoneAsEmptyString")]
pub avatar: Option<String>,
}