Last minute fixes
This commit is contained in:
parent
194210ec89
commit
2c350a043b
@ -1,3 +1 @@
|
||||
INSERT INTO folders(parent_folder_id, owner_id, folder_name)
|
||||
SELECT $1, owner_id, $2 FROM folders WHERE parent_folder_id = $1
|
||||
RETURNING folder_id
|
||||
INSERT INTO folders(parent_folder_id, owner_id, folder_name, folder_id) VALUES ($1, $2, $3, $4)
|
@ -8,7 +8,7 @@ WITH
|
||||
user_id = $1
|
||||
)
|
||||
SELECT
|
||||
folder_id
|
||||
folder_id, owner_id, folder_name, created_at
|
||||
FROM
|
||||
folders
|
||||
WHERE
|
||||
|
@ -89,10 +89,24 @@ pub async fn name_exists(parent_folder_id: Uuid, name: &str, pool: &Pool) -> sql
|
||||
|
||||
/// Creates a folder in the database. Do not use this function to create the ROOT folder
|
||||
pub async fn insert(parent_folder_id: Uuid, folder_name: &str, pool: &Pool) -> sqlx::Result<Uuid> {
|
||||
sqlx::query_file!("sql/create_folder.sql", parent_folder_id, folder_name)
|
||||
.fetch_one(pool)
|
||||
.await
|
||||
.map(|record| record.folder_id)
|
||||
let folder_id = Uuid::now_v7();
|
||||
let owner_id = get_by_id(parent_folder_id, pool)
|
||||
.await?
|
||||
.ok_or(sqlx::Error::RowNotFound)?
|
||||
.owner_id;
|
||||
let result = sqlx::query_file!(
|
||||
"sql/create_folder.sql",
|
||||
parent_folder_id,
|
||||
owner_id,
|
||||
folder_name,
|
||||
folder_id
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
if result.rows_affected() == 0 {
|
||||
return Err(sqlx::Error::RowNotFound);
|
||||
}
|
||||
Ok(folder_id)
|
||||
}
|
||||
|
||||
pub fn delete(folder_id: Uuid, pool: &Pool) -> impl Stream<Item = sqlx::Result<Uuid>> + '_ {
|
||||
|
@ -1,5 +1,7 @@
|
||||
use std::{borrow::Cow, collections::HashMap};
|
||||
|
||||
use db::folder::FolderWithoutParentId;
|
||||
|
||||
use crate::prelude::*;
|
||||
|
||||
#[derive(sqlx::Type, Debug, Serialize, Deserialize)]
|
||||
@ -135,10 +137,16 @@ pub async fn delete_for_folder(folder_id: Uuid, user_id: i32, pool: &Pool) -> sq
|
||||
.map(|_| ())
|
||||
}
|
||||
|
||||
pub async fn get_top_level_permitted_folders(user_id: i32, pool: &Pool) -> sqlx::Result<Vec<Uuid>> {
|
||||
sqlx::query_file!("sql/get_top_level_folder.sql", user_id)
|
||||
pub async fn get_top_level_permitted_folders(
|
||||
user_id: i32,
|
||||
pool: &Pool,
|
||||
) -> sqlx::Result<Vec<FolderWithoutParentId>> {
|
||||
sqlx::query_file_as!(
|
||||
FolderWithoutParentId,
|
||||
"sql/get_top_level_folder.sql",
|
||||
user_id
|
||||
)
|
||||
.fetch(pool)
|
||||
.map_ok(|record| record.folder_id)
|
||||
.try_collect()
|
||||
.await
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ pub async fn create_user(
|
||||
pool: &Pool,
|
||||
) -> sqlx::Result<Option<i32>> {
|
||||
let Some(record) = sqlx::query!(
|
||||
"INSERT INTO users(username, email, hashed_password) VALUES ($1, $2, $3) RETURNING user_id",
|
||||
"INSERT INTO users(username, email, hashed_password) VALUES ($1, $2, $3) ON CONFLICT DO NOTHING RETURNING user_id",
|
||||
user_name,
|
||||
user_email,
|
||||
hashed_password
|
||||
|
@ -1,9 +1,11 @@
|
||||
use db::folder::FolderWithoutParentId;
|
||||
|
||||
use crate::prelude::*;
|
||||
|
||||
pub async fn get_top_level(
|
||||
State(pool): State<Pool>,
|
||||
claims: Claims,
|
||||
) -> GeneralResult<Json<Vec<Uuid>>> {
|
||||
) -> GeneralResult<Json<Vec<FolderWithoutParentId>>> {
|
||||
let folders = db::permissions::get_top_level_permitted_folders(claims.user_id, &pool)
|
||||
.await
|
||||
.handle_internal("Error reading from the database")?;
|
||||
|
Reference in New Issue
Block a user