Skip to content

Commit 5411424

Browse files
minor fixes
1 parent 2b5191b commit 5411424

5 files changed

Lines changed: 37 additions & 132 deletions

File tree

backend/migrations/20251220091551_custom_rating_categories.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
-- Add migration script here
2-
31
-- campaign_rating_categories (NEW TABLE)
42
CREATE TABLE campaign_rating_categories (
53
id BIGINT PRIMARY KEY,
@@ -14,7 +12,6 @@ CREATE TABLE campaign_rating_categories (
1412

1513
CREATE INDEX IDX_campaign_rating_categories_campaign ON campaign_rating_categories(campaign_id);
1614

17-
1815
-- application_ratings (EXISTING TABLE)
1916
ALTER TABLE application_ratings DROP COLUMN rating;
2017

backend/server/src/handler/application.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,7 @@ impl ApplicationHandler {
309309
) -> Result<impl IntoResponse, ChaosError> {
310310
// First create the application_rating with comment
311311
let application_rating_id = Rating::create_application_rating(
312-
NewApplicationRating {
313-
comment: new_rating.comment,
314-
},
312+
new_rating.comment,
315313
application_id,
316314
admin.user_id,
317315
&mut state.snowflake_generator,
@@ -352,9 +350,7 @@ impl ApplicationHandler {
352350
// Update the comment
353351
Rating::update_application_rating(
354352
rating.id,
355-
NewApplicationRating {
356-
comment: updated_rating.comment,
357-
},
353+
updated_rating.comment,
358354
&mut transaction.tx,
359355
)
360356
.await?;

backend/server/src/handler/rating.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ impl RatingHandler {
4040
Json(data): Json<NewCategoryRating>,
4141
) -> Result<impl IntoResponse, ChaosError> {
4242
let category = Rating::create_category(
43-
data,
43+
data.name,
4444
campaign_id,
4545
&mut state.snowflake_generator,
4646
&mut transaction.tx,
@@ -86,7 +86,7 @@ impl RatingHandler {
8686
mut transaction: DBTransaction<'_>,
8787
Json(data): Json<NewCategoryRating>,
8888
) -> Result<impl IntoResponse, ChaosError> {
89-
Rating::update_category(category_id, data, &mut transaction.tx).await?;
89+
Rating::update_category(category_id, data.name, &mut transaction.tx).await?;
9090

9191
transaction.tx.commit().await?;
9292

@@ -134,9 +134,7 @@ impl RatingHandler {
134134
Json(new_rating): Json<NewRating>,
135135
) -> Result<impl IntoResponse, ChaosError> {
136136
let application_rating_id = Rating::create_application_rating(
137-
NewApplicationRating {
138-
comment: new_rating.comment,
139-
},
137+
new_rating.comment,
140138
application_id,
141139
admin.user_id,
142140
&mut state.snowflake_generator,
@@ -211,7 +209,7 @@ impl RatingHandler {
211209
mut transaction: DBTransaction<'_>,
212210
Json(data): Json<NewApplicationRating>,
213211
) -> Result<impl IntoResponse, ChaosError> {
214-
Rating::update_application_rating(rating_id, data, &mut transaction.tx).await?;
212+
Rating::update_application_rating(rating_id, data.comment, &mut transaction.tx).await?;
215213

216214
transaction.tx.commit().await?;
217215

backend/server/src/models/app.rs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -271,23 +271,6 @@ pub async fn app() -> Result<Router, ChaosError> {
271271
"/api/v1/organisation/:organisation_id/users",
272272
get(OrganisationHandler::get_users)
273273
)
274-
// .route(
275-
// "/api/v1/rating/:rating_id",
276-
// get(RatingHandler::get)
277-
// .delete(RatingHandler::delete)
278-
// .put(RatingHandler::update),
279-
// )
280-
// .route(
281-
// "/api/v1/application/:application_id/rating",
282-
// get(ApplicationHandler::get_rating_by_current_user)
283-
// .post(ApplicationHandler::create_rating)
284-
// .put(ApplicationHandler::update_rating),
285-
// )
286-
// .route(
287-
// "/api/v1/application/:application_id/ratings",
288-
// get(ApplicationHandler::get_ratings),
289-
// )
290-
291274
// Campaign Rating Categories
292275
.route(
293276
"/api/v1/campaign/:campaign_id/rating_category",

backend/server/src/models/rating.rs

Lines changed: 31 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ pub struct ApplicationRating {
4646
/// ID of the application being rated
4747
#[serde(serialize_with = "crate::models::serde_string::serialize")]
4848
pub application_id: i64,
49+
/// ID of the user who created the rating
50+
#[serde(serialize_with = "crate::models::serde_string::serialize")]
51+
pub rater_user_id: i64,
4952
/// Optional comments about the application
5053
pub comment: Option<String>,
5154
/// When the rating was created
@@ -184,7 +187,7 @@ impl Rating {
184187
/// * `Err(ChaosError)` - An error if creation fails
185188
///
186189
pub async fn create_category(
187-
new_category: NewCategoryRating,
190+
name: String,
188191
campaign_id: i64,
189192
snowflake_generator: &mut SnowflakeIdGenerator,
190193
transaction: &mut Transaction<'_, Postgres>,
@@ -193,11 +196,11 @@ impl Rating {
193196

194197
sqlx::query!(
195198
"
196-
INSERT INTO campaign_rating_categories (id, name, campaign_id)
197-
VALUES ($1, $2, $3)
199+
INSERT INTO campaign_rating_categories (id, name, campaign_id)
200+
VALUES ($1, $2, $3)
198201
",
199202
id,
200-
new_category.name,
203+
name,
201204
campaign_id
202205
)
203206
.execute(transaction.deref_mut())
@@ -223,9 +226,9 @@ impl Rating {
223226
let categories = sqlx::query_as!(
224227
CategoryRating,
225228
"
226-
SELECT id, name, campaign_id
227-
FROM campaign_rating_categories
228-
WHERE campaign_id = $1
229+
SELECT id, name, campaign_id
230+
FROM campaign_rating_categories
231+
WHERE campaign_id = $1
229232
",
230233
campaign_id
231234
)
@@ -248,18 +251,16 @@ impl Rating {
248251
/// * `Err(ChaosError)` - An error if update fails
249252
pub async fn update_category(
250253
category_id: i64,
251-
updated_category: NewCategoryRating,
254+
name: String,
252255
transaction: &mut Transaction<'_, Postgres>,
253256
) -> Result<(), ChaosError> {
254-
let name = updated_category.name;
255-
256257
let _ = sqlx::query!(
257258
"
258-
UPDATE campaign_rating_categories
259-
SET name = $2
260-
WHERE id = $1
261-
RETURNING id
262-
",
259+
UPDATE campaign_rating_categories
260+
SET name = $2
261+
WHERE id = $1
262+
RETURNING id
263+
",
263264
category_id,
264265
name,
265266
)
@@ -276,8 +277,8 @@ impl Rating {
276277
) -> Result<(), ChaosError> {
277278
let _ = sqlx::query!(
278279
"
279-
DELETE FROM campaign_rating_categories WHERE id = $1
280-
RETURNING id
280+
DELETE FROM campaign_rating_categories WHERE id = $1
281+
RETURNING id
281282
",
282283
category_id
283284
)
@@ -304,20 +305,19 @@ impl Rating {
304305
/// * `Ok(())` - If the rating was created successfully
305306
/// * `Err(ChaosError)` - An error if creation fails
306307
pub async fn create_application_rating(
307-
new_rating: NewApplicationRating,
308+
comment: Option<String>,
308309
application_id: i64,
309310
rater_id: i64,
310311
snowflake_generator: &mut SnowflakeIdGenerator,
311312
transaction: &mut Transaction<'_, Postgres>,
312313
) -> Result<i64, ChaosError> {
313314
let rating_id = snowflake_generator.real_time_generate();
314-
let comment = new_rating.comment;
315315

316316
sqlx::query!(
317317
"
318-
INSERT INTO application_ratings (id, application_id, rater_id, comment)
319-
VALUES ($1, $2, $3, $4)
320-
",
318+
INSERT INTO application_ratings (id, application_id, rater_id, comment)
319+
VALUES ($1, $2, $3, $4)
320+
",
321321
rating_id,
322322
application_id,
323323
rater_id,
@@ -342,19 +342,18 @@ impl Rating {
342342
/// * `Err(ChaosError)` - An error if update fails
343343
pub async fn update_application_rating(
344344
rating_id: i64,
345-
updated_rating: NewApplicationRating,
345+
comment: Option<String>,
346346
transaction: &mut Transaction<'_, Postgres>,
347347
) -> Result<(), ChaosError> {
348-
let comment = updated_rating.comment;
349348
let current_time = Utc::now();
350349

351350
let _ = sqlx::query!(
352351
"
353-
UPDATE application_ratings
354-
SET comment = $2, updated_at = $3
355-
WHERE id = $1
356-
RETURNING id
357-
",
352+
UPDATE application_ratings
353+
SET comment = $2, updated_at = $3
354+
WHERE id = $1
355+
RETURNING id
356+
",
358357
rating_id,
359358
comment,
360359
current_time
@@ -382,9 +381,9 @@ impl Rating {
382381
// Throws error if rating id doesn't exist.
383382
let _ = sqlx::query!(
384383
"
385-
DELETE FROM application_ratings WHERE id = $1
386-
RETURNING id
387-
",
384+
DELETE FROM application_ratings WHERE id = $1
385+
RETURNING id
386+
",
388387
rating_id
389388
)
390389
.fetch_one(transaction.deref_mut())
@@ -393,74 +392,6 @@ impl Rating {
393392
Ok(())
394393
}
395394

396-
// /// -------------- GET requests for ApplicationRating: ONLY COMMENT ----------------------
397-
///// ============================ NOT NEEDED (COMMNET IS IN ANOTHER FUNCTION ALR)===================
398-
399-
// /// Retrieves a rating by its ID, able to see which application is being rated,
400-
// /// ONLY THE COMMENT IS VIEWED,
401-
// /// NOT Vector of numerical scores
402-
// ///
403-
// /// # Arguments
404-
// /// * `rating_id` - The ID of the rating to retrieve
405-
// /// * `transaction` - A mutable reference to the database transaction
406-
// ///
407-
// /// # Returns
408-
// /// Returns a `Result` containing either:
409-
// /// * `Ok(RatingDetails)` - The requested rating details
410-
// /// * `Err(ChaosError)` - An error if retrieval fails
411-
// pub async fn get_comment_rating(
412-
// rating_id: i64,
413-
// transaction: &mut Transaction<'_, Postgres>,
414-
// ) -> Result<RatingDetails, ChaosError> {
415-
// let rating = sqlx::query_as!(
416-
// RatingDetails,
417-
// "
418-
// SELECT r.id, rater_id, u.name as rater_name, r.comment, r.updated_at
419-
// FROM application_ratings r
420-
// JOIN users u ON u.id = r.rater_id
421-
// WHERE r.id = $1
422-
// ",
423-
// rating_id
424-
// )
425-
// .fetch_one(transaction.deref_mut())
426-
// .await?;
427-
428-
// Ok(rating)
429-
// }
430-
431-
// /// Retrieves a rating by application_ID. (UNCONFIRMED: Want it to be seperate?)
432-
// /// ONLY THE COMMENT IS VIEWED,
433-
// /// NOT Vector of numerical scores
434-
// ///
435-
// /// # Arguments
436-
// /// * `application_id` - The ID of the application the rating is for
437-
// /// * `rater_id` - The ID of the rater
438-
// /// * `transaction` - A mutable reference to the database transaction
439-
// ///
440-
// /// # Returns
441-
// /// Returns a `Result` containing either:
442-
// /// * `Ok(RatingDetails)` - The requested rating details
443-
// /// * `Err(ChaosError)` - An error if retrieval fails
444-
// pub async fn get_comment_rating_by_application_id(
445-
// application_id: i64,
446-
// transaction: &mut Transaction<'_, Postgres>,
447-
// ) -> Result<RatingDetails, ChaosError> {
448-
// let rating = sqlx::query_as!(
449-
// RatingDetails,
450-
// "
451-
// SELECT r.id, rater_id, u.name as rater_name, r.comment, r.updated_at
452-
// FROM application_ratings r
453-
// JOIN users u ON u.id = r.rater_id
454-
// WHERE r.application_id = $1
455-
// ",
456-
// application_id,
457-
// )
458-
// .fetch_one(transaction.deref_mut())
459-
// .await?;
460-
461-
// Ok(rating)
462-
// }
463-
464395
// ------------------- GET requests for ApplicationRating: Get Rating Details -------------------
465396

466397
/// Retrieves detailed rating information with

0 commit comments

Comments
 (0)