parent
6822b5eab5
commit
ec35f66a88
|
@ -2,7 +2,7 @@ version: "3.7"
|
|||
services:
|
||||
postgres:
|
||||
container_name: "rss-postgres"
|
||||
image: "postgres:latest"
|
||||
image: "postgres:15"
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
|
|
|
@ -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/") {
|
||||
|
|
|
@ -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),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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<JsonUser>) -> impl Responder {
|
||||
let mut connection: diesel::PgConnection = establish_connection();
|
||||
|
||||
let feed: Vec<Feed> = feed::table.load::<Feed>(&mut connection).unwrap();
|
||||
let req_user_id = data.user_id.parse::<i32>().unwrap();
|
||||
log::info!("{:?}", req_user_id);
|
||||
|
||||
let feed: Vec<Feed> = feed::table
|
||||
.filter(user_id.eq(req_user_id))
|
||||
.load::<Feed>(&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
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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(() => {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<h1>Feeds</h1>
|
||||
<h1>Feeds</h1> <button @click="sync">{{ buttonText }}</button>
|
||||
<div id='aricle'>
|
||||
<template v-for="feed in feeds">
|
||||
<h2>{{ feed.title }}</h2>
|
||||
|
|
|
@ -28,6 +28,12 @@ export default defineConfig({
|
|||
secure: false,
|
||||
rewrite: (path) => path.replace(/^\/feeds\/get/, ''),
|
||||
},
|
||||
'/feeds/sync': {
|
||||
target: 'http://localhost:8001/api/v1/article/sync',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
rewrite: (path) => path.replace(/^\/feeds\/sync/, ''),
|
||||
},
|
||||
},
|
||||
cors: false
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue