backend, mark item as read

This commit is contained in:
2023-10-30 19:52:51 +01:00
parent abf9a1b818
commit 579fa1f7ca
3 changed files with 36 additions and 6 deletions
+2 -2
View File
@@ -1,8 +1,8 @@
use crate::models::feed::rss_feed::Feed;
use crate::schema::feed_item;
use chrono::NaiveDateTime;
use diesel::{Associations, Identifiable, Queryable};
#[derive(Clone, Identifiable, Queryable, Associations)]
use diesel::{Associations, Identifiable, Queryable, Selectable};
#[derive(Clone, Identifiable, Selectable, Queryable, Associations)]
#[diesel(belongs_to(Feed))]
#[diesel(table_name=feed_item)]
pub struct FeedItem {
+25 -2
View File
@@ -1,8 +1,31 @@
use crate::schema::feed_item::{id, read};
use crate::{
database::establish_connection, json_serialization::read_feed_item::ReadItem,
models::feed_item::rss_feed_item::FeedItem, schema::feed_item,
};
use actix_web::{web, HttpRequest, HttpResponse, Responder};
use crate::json_serialization::read_feed_item::ReadItem;
use diesel::RunQueryDsl;
use diesel::{ExpressionMethods, QueryDsl};
pub async fn mark_read(_req: HttpRequest, path: web::Path<ReadItem>) -> impl Responder {
let mut connection = establish_connection();
log::info!("Id: {}", path.id);
let feed_items: Vec<FeedItem> = feed_item::table
.filter(id.eq(path.id))
.load::<FeedItem>(&mut connection)
.unwrap();
if feed_items.len() != 1 {
return HttpResponse::NotFound();
}
let feed_item: &FeedItem = feed_items.first().unwrap();
let result: Result<usize, diesel::result::Error> = diesel::update(feed_item)
.set(read.eq(true))
.execute(&mut connection);
log::info!("Mark as read: {:?}", result);
HttpResponse::Ok()
}