From ec35f66a889a85b280027843396546b69e37db2a Mon Sep 17 00:00:00 2001 From: mace Date: Sat, 7 Oct 2023 19:10:04 +0200 Subject: [PATCH] - Readme changes - docker fixed version postresql - sync [WIP] --- README.md | 2 +- docker-compose.yml | 2 +- src/main.rs | 2 +- src/reader/mod.rs | 2 +- src/reader/sync.rs | 26 +++++++++++++++++++++----- vue/src/components/RssFeeds.vue | 22 ++++++++++++++++++++-- vue/vite.config.js | 6 ++++++ 7 files changed, 51 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 089d9d3..2235ec0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## RSS-Reader +## RSS-Reader [WIP] # Diesel Setup diff --git a/docker-compose.yml b/docker-compose.yml index 4f196e2..189b9dd 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.7" services: postgres: container_name: "rss-postgres" - image: "postgres:latest" + image: "postgres:15" ports: - "5432:5432" environment: diff --git a/src/main.rs b/src/main.rs index 12d3ed6..1ee7fe9 100755 --- a/src/main.rs +++ b/src/main.rs @@ -20,7 +20,7 @@ async fn main() -> std::io::Result<()> { let app = App::new() .wrap_fn(|req, srv| { let mut passed: bool; - let request_url: String = String::from(req.uri().path().clone()); + let request_url: String = String::from(req.uri().path()); log::info!("Request Url: {}", request_url); if req.path().contains("/article/") { diff --git a/src/reader/mod.rs b/src/reader/mod.rs index c05bbe6..835e09a 100755 --- a/src/reader/mod.rs +++ b/src/reader/mod.rs @@ -22,6 +22,6 @@ pub fn feed_factory(app: &mut web::ServiceConfig) { ); app.route( &base_path.define(String::from("/sync")), - web::post().to(sync::sync), + actix_web::Route::to(web::post(), sync::sync), ); } diff --git a/src/reader/sync.rs b/src/reader/sync.rs index 1ac30c2..0025a1c 100644 --- a/src/reader/sync.rs +++ b/src/reader/sync.rs @@ -1,19 +1,35 @@ use super::feeds; -use crate::{database::establish_connection, models::feed::rss_feed::Feed, schema::feed}; -use actix_web::{HttpRequest, HttpResponse, Responder}; +use crate::{ + database::establish_connection, + models::feed::rss_feed::Feed, + schema::feed::{self, user_id}, +}; +use actix_web::{web, HttpRequest, HttpResponse, Responder}; use diesel::prelude::*; use futures::StreamExt; +use serde_derive::Deserialize; -pub async fn sync(req: HttpRequest) -> impl Responder { +#[derive(Deserialize)] +pub struct JsonUser { + user_id: String, +} + +pub async fn sync(_req: HttpRequest, data: web::Json) -> impl Responder { let mut connection: diesel::PgConnection = establish_connection(); - let feed: Vec = feed::table.load::(&mut connection).unwrap(); + let req_user_id = data.user_id.parse::().unwrap(); + log::info!("{:?}", req_user_id); + + let feed: Vec = feed::table + .filter(user_id.eq(req_user_id)) + .load::(&mut connection) + .unwrap(); // Create an asynchronous stream of Feed items let feed_stream = futures::stream::iter(feed.clone().into_iter()).map(|feed| { // Asynchronously fetch the feed_list for each feed async move { - let feed_list = feeds::get_feed(&feed.url).await.unwrap(); + let _feed_list = feeds::get_feed(&feed.url).await.unwrap(); // Process feed_list here } }); diff --git a/vue/src/components/RssFeeds.vue b/vue/src/components/RssFeeds.vue index 9aa506a..33d03e7 100644 --- a/vue/src/components/RssFeeds.vue +++ b/vue/src/components/RssFeeds.vue @@ -3,10 +3,11 @@ import { ref, onMounted } from 'vue'; import axios from 'axios'; const feeds = ref([]); +const buttonText = 'Sync' const fetchData = async () => { try { - const response = await axios.get('feeds', { + const response = await axios.get('feeds/get', { headers: { 'Content-Type': 'application/json', 'user-token': localStorage.getItem("user-token") @@ -18,6 +19,23 @@ const fetchData = async () => { } }; +async function sync() { + try { + const repsponse = await axios.post('feeds/sync', { + user_id: localStorage.getItem("user-id") + }, + { + headers: { + 'Content-Type': 'application/json', + 'user-token': localStorage.getItem("user-token") + } + }) + + } catch (error) { + console.error('Error sync', error) + } +} + onMounted(() => { fetchData(); }); @@ -26,7 +44,7 @@ onMounted(() => {