fix: implement Hash for Category manually

This commit is contained in:
Matouš Volf 2024-09-05 20:42:55 +02:00
parent 8e895b4f89
commit 0fe8ee503d
2 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,4 @@
use std::hash::Hash;
use crate::schema::tasks;
use chrono::{Duration, NaiveDate, NaiveTime};
use diesel::deserialize::FromSql;
@ -11,7 +12,7 @@ use serde_with::DurationSeconds;
use std::io::Write;
#[serde_with::serde_as]
#[derive(AsExpression, FromSqlRow, Serialize, Deserialize, Hash, Clone, Debug)]
#[derive(AsExpression, FromSqlRow, Serialize, Deserialize, Clone, Debug)]
#[diesel(sql_type = Jsonb)]
pub enum Category {
Inbox,
@ -45,6 +46,12 @@ impl Category {
}
}
impl Hash for Category {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
std::mem::discriminant(self).hash(state);
}
}
impl PartialEq for Category {
fn eq(&self, other: &Self) -> bool {
std::mem::discriminant(self) == std::mem::discriminant(other)

View File

@ -13,7 +13,7 @@ pub(crate) fn use_tasks_in_category_query(category: Category)
async fn fetch_tasks_in_category(keys: Vec<QueryKey>) -> QueryResult<QueryValue, QueryErrors> {
if let Some(QueryKey::TasksInCategory(category)) = keys.first() {
match get_tasks_in_category(category.clone()).await {
match get_tasks_in_category(category.clone()).await {
Ok(tasks) => Ok(QueryValue::Tasks(tasks)),
Err(ServerFnError::WrappedServerError(errors)) => Err(QueryErrors::Error(errors)),
Err(error) => panic!("Unexpected error: {:?}", error)