summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-02-02 11:29:37 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-02-02 11:29:37 -0500
commit18a27f62befb0c0d2e3b175f08f6088f10b25063 (patch)
tree1d8c0d00685f9374fdb3705062c08265d7e1fdb0 /src
parentadd caching header (diff)
downloadxssbook-18a27f62befb0c0d2e3b175f08f6088f10b25063.tar.gz
xssbook-18a27f62befb0c0d2e3b175f08f6088f10b25063.tar.bz2
xssbook-18a27f62befb0c0d2e3b175f08f6088f10b25063.zip
loading by offset on profile
Diffstat (limited to '')
-rw-r--r--src/api/mod.rs2
-rw-r--r--src/api/posts.rs3
-rw-r--r--src/database/posts.rs7
-rw-r--r--src/public/mod.rs2
-rw-r--r--src/types/post.rs4
5 files changed, 10 insertions, 8 deletions
diff --git a/src/api/mod.rs b/src/api/mod.rs
index 9efcefc..925aa4a 100644
--- a/src/api/mod.rs
+++ b/src/api/mod.rs
@@ -16,7 +16,7 @@ pub use auth::RegistrationRequet;
pub fn router() -> Router {
let governor_conf = Box::new(
GovernorConfigBuilder::default()
- .burst_size(10)
+ .burst_size(1000)
.per_second(1)
.key_extractor(SmartIpKeyExtractor)
.finish()
diff --git a/src/api/posts.rs b/src/api/posts.rs
index 3a2e507..d85fb98 100644
--- a/src/api/posts.rs
+++ b/src/api/posts.rs
@@ -72,6 +72,7 @@ async fn page(
#[derive(Deserialize)]
struct UsersPostsRequest {
user_id: u64,
+ page: u64
}
impl Check for UsersPostsRequest {
@@ -84,7 +85,7 @@ async fn user(
AuthorizedUser(_user): AuthorizedUser,
Json(body): Json<UsersPostsRequest>,
) -> Response {
- let Ok(posts) = Post::from_user_id(body.user_id) else {
+ let Ok(posts) = Post::from_user_post_page(body.user_id, body.page) else {
return ResponseCode::InternalServerError.text("Failed to fetch posts")
};
diff --git a/src/database/posts.rs b/src/database/posts.rs
index 6c0a27e..a81d6a7 100644
--- a/src/database/posts.rs
+++ b/src/database/posts.rs
@@ -90,11 +90,12 @@ pub fn get_all_posts() -> Result<Vec<Post>, rusqlite::Error> {
}
#[instrument()]
-pub fn get_users_posts(user_id: u64) -> Result<Vec<Post>, rusqlite::Error> {
+pub fn get_users_post_page(user_id: u64, page: u64) -> Result<Vec<Post>, rusqlite::Error> {
tracing::trace!("Retrieving users posts");
+ let page_size = 10;
let conn = database::connect()?;
- let mut stmt = conn.prepare("SELECT * FROM posts WHERE user_id = ? ORDER BY post_id DESC")?;
- let row = stmt.query_map([user_id], |row| {
+ let mut stmt = conn.prepare("SELECT * FROM posts WHERE user_id = ? ORDER BY post_id DESC LIMIT ? OFFSET ?")?;
+ let row = stmt.query_map([user_id, page_size, page_size * page], |row| {
let row = post_from_row(row)?;
Ok(row)
})?;
diff --git a/src/public/mod.rs b/src/public/mod.rs
index eb846fb..7e5b382 100644
--- a/src/public/mod.rs
+++ b/src/public/mod.rs
@@ -24,7 +24,7 @@ pub mod pages;
pub fn router() -> Router {
let governor_conf = Box::new(
GovernorConfigBuilder::default()
- .burst_size(20)
+ .burst_size(20000)
.per_second(1)
.key_extractor(SmartIpKeyExtractor)
.finish()
diff --git a/src/types/post.rs b/src/types/post.rs
index 7397009..ea7cbbf 100644
--- a/src/types/post.rs
+++ b/src/types/post.rs
@@ -43,8 +43,8 @@ impl Post {
}
#[instrument()]
- pub fn from_user_id(user_id: u64) -> Result<Vec<Self>> {
- let Ok(posts) = database::posts::get_users_posts(user_id) else {
+ pub fn from_user_post_page(user_id: u64, page: u64) -> Result<Vec<Self>> {
+ let Ok(posts) = database::posts::get_users_post_page(user_id, page) else {
return Err(ResponseCode::BadRequest.text("Failed to fetch posts"))
};
Ok(posts)