Timezone and folder creation fixes
This commit is contained in:
parent
8d297fffdf
commit
8a4e2dc467
@ -16,7 +16,7 @@ CREATE TABLE
|
|||||||
parent_folder_id UUID REFERENCES folders (folder_id) ON DELETE CASCADE DEFAULT null,
|
parent_folder_id UUID REFERENCES folders (folder_id) ON DELETE CASCADE DEFAULT null,
|
||||||
owner_id INT REFERENCES users (user_id) ON DELETE CASCADE NOT NULL,
|
owner_id INT REFERENCES users (user_id) ON DELETE CASCADE NOT NULL,
|
||||||
folder_name VARCHAR(255) NOT NULL,
|
folder_name VARCHAR(255) NOT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE
|
CREATE TABLE
|
||||||
@ -26,8 +26,8 @@ CREATE TABLE
|
|||||||
file_name VARCHAR(255) NOT NULL,
|
file_name VARCHAR(255) NOT NULL,
|
||||||
file_size BIGINT NOT NULL,
|
file_size BIGINT NOT NULL,
|
||||||
sha512 BYTEA NOT NULL,
|
sha512 BYTEA NOT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
|
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TYPE permission AS ENUM ('read', 'write', 'manage');
|
CREATE TYPE permission AS ENUM ('read', 'write', 'manage');
|
||||||
|
3
sql/create_folder.sql
Normal file
3
sql/create_folder.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
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
|
@ -35,8 +35,8 @@ pub struct FileWithoutParentId {
|
|||||||
pub file_name: String,
|
pub file_name: String,
|
||||||
pub file_size: i64,
|
pub file_size: i64,
|
||||||
pub sha512: String,
|
pub sha512: String,
|
||||||
pub created_at: chrono::NaiveDateTime,
|
pub created_at: chrono::DateTime<chrono::Utc>,
|
||||||
pub updated_at: chrono::NaiveDateTime,
|
pub updated_at: chrono::DateTime<chrono::Utc>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_files(
|
pub fn get_files(
|
||||||
|
@ -45,7 +45,7 @@ pub struct FolderWithoutParentId {
|
|||||||
pub folder_id: Uuid,
|
pub folder_id: Uuid,
|
||||||
pub owner_id: i32,
|
pub owner_id: i32,
|
||||||
pub folder_name: String,
|
pub folder_name: String,
|
||||||
pub created_at: chrono::NaiveDateTime,
|
pub created_at: chrono::DateTime<chrono::Utc>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_by_id(
|
pub async fn get_by_id(
|
||||||
@ -87,17 +87,9 @@ pub async fn name_exists(parent_folder_id: Uuid, name: &str, pool: &Pool) -> sql
|
|||||||
.map(|row| row.exists.unwrap_or(false))
|
.map(|row| row.exists.unwrap_or(false))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn insert(
|
/// Creates a folder in the database. Do not use this function to create the ROOT folder
|
||||||
parent_folder_id: Uuid,
|
pub async fn insert(parent_folder_id: Uuid, folder_name: &str, pool: &Pool) -> sqlx::Result<Uuid> {
|
||||||
user_id: i32,
|
sqlx::query_file!("sql/create_folder.sql", parent_folder_id, folder_name)
|
||||||
folder_name: &str,
|
|
||||||
pool: &Pool,
|
|
||||||
) -> sqlx::Result<Uuid> {
|
|
||||||
sqlx::query!("INSERT INTO folders(parent_folder_id, owner_id, folder_name) VALUES ($1, $2, $3) RETURNING folder_id",
|
|
||||||
parent_folder_id,
|
|
||||||
user_id,
|
|
||||||
folder_name
|
|
||||||
)
|
|
||||||
.fetch_one(pool)
|
.fetch_one(pool)
|
||||||
.await
|
.await
|
||||||
.map(|record| record.folder_id)
|
.map(|record| record.folder_id)
|
||||||
|
@ -23,12 +23,7 @@ pub async fn create(
|
|||||||
return Err(StatusCode::CONFLICT);
|
return Err(StatusCode::CONFLICT);
|
||||||
}
|
}
|
||||||
|
|
||||||
let id = db::folder::insert(
|
let id = db::folder::insert(params.parent_folder_id, ¶ms.folder_name, &pool)
|
||||||
params.parent_folder_id,
|
|
||||||
claims.user_id,
|
|
||||||
¶ms.folder_name,
|
|
||||||
&pool,
|
|
||||||
)
|
|
||||||
.await
|
.await
|
||||||
.handle_internal()?;
|
.handle_internal()?;
|
||||||
|
|
||||||
|
@ -80,10 +80,8 @@ fn app(state: AppState) -> Router {
|
|||||||
};
|
};
|
||||||
use tower_http::ServiceBuilderExt as _;
|
use tower_http::ServiceBuilderExt as _;
|
||||||
|
|
||||||
let sensitive_headers = [header::AUTHORIZATION, header::COOKIE];
|
|
||||||
|
|
||||||
let middleware = tower::ServiceBuilder::new()
|
let middleware = tower::ServiceBuilder::new()
|
||||||
.sensitive_headers(sensitive_headers)
|
.sensitive_headers([header::AUTHORIZATION, header::COOKIE])
|
||||||
.trace_for_http()
|
.trace_for_http()
|
||||||
.compression();
|
.compression();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user