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)
|
INSERT INTO folders(parent_folder_id, owner_id, folder_name, folder_id) VALUES ($1, $2, $3, $4)
|
||||||
SELECT $1, owner_id, $2 FROM folders WHERE parent_folder_id = $1
|
|
||||||
RETURNING folder_id
|
|
@ -8,7 +8,7 @@ WITH
|
|||||||
user_id = $1
|
user_id = $1
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
folder_id
|
folder_id, owner_id, folder_name, created_at
|
||||||
FROM
|
FROM
|
||||||
folders
|
folders
|
||||||
WHERE
|
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
|
/// 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> {
|
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)
|
let folder_id = Uuid::now_v7();
|
||||||
.fetch_one(pool)
|
let owner_id = get_by_id(parent_folder_id, pool)
|
||||||
.await
|
.await?
|
||||||
.map(|record| record.folder_id)
|
.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>> + '_ {
|
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 std::{borrow::Cow, collections::HashMap};
|
||||||
|
|
||||||
|
use db::folder::FolderWithoutParentId;
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
#[derive(sqlx::Type, Debug, Serialize, Deserialize)]
|
#[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(|_| ())
|
.map(|_| ())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_top_level_permitted_folders(user_id: i32, pool: &Pool) -> sqlx::Result<Vec<Uuid>> {
|
pub async fn get_top_level_permitted_folders(
|
||||||
sqlx::query_file!("sql/get_top_level_folder.sql", user_id)
|
user_id: i32,
|
||||||
|
pool: &Pool,
|
||||||
|
) -> sqlx::Result<Vec<FolderWithoutParentId>> {
|
||||||
|
sqlx::query_file_as!(
|
||||||
|
FolderWithoutParentId,
|
||||||
|
"sql/get_top_level_folder.sql",
|
||||||
|
user_id
|
||||||
|
)
|
||||||
.fetch(pool)
|
.fetch(pool)
|
||||||
.map_ok(|record| record.folder_id)
|
|
||||||
.try_collect()
|
.try_collect()
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ pub async fn create_user(
|
|||||||
pool: &Pool,
|
pool: &Pool,
|
||||||
) -> sqlx::Result<Option<i32>> {
|
) -> sqlx::Result<Option<i32>> {
|
||||||
let Some(record) = sqlx::query!(
|
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_name,
|
||||||
user_email,
|
user_email,
|
||||||
hashed_password
|
hashed_password
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
|
use db::folder::FolderWithoutParentId;
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
pub async fn get_top_level(
|
pub async fn get_top_level(
|
||||||
State(pool): State<Pool>,
|
State(pool): State<Pool>,
|
||||||
claims: Claims,
|
claims: Claims,
|
||||||
) -> GeneralResult<Json<Vec<Uuid>>> {
|
) -> GeneralResult<Json<Vec<FolderWithoutParentId>>> {
|
||||||
let folders = db::permissions::get_top_level_permitted_folders(claims.user_id, &pool)
|
let folders = db::permissions::get_top_level_permitted_folders(claims.user_id, &pool)
|
||||||
.await
|
.await
|
||||||
.handle_internal("Error reading from the database")?;
|
.handle_internal("Error reading from the database")?;
|
||||||
|
Reference in New Issue
Block a user