mi/backend/src/bin/import_blogposts.rs

39 lines
984 B
Rust

#[macro_use]
extern crate tracing;
use color_eyre::eyre::Result;
use diesel::{prelude::*, SqliteConnection};
use std::env;
use mi::{api::posse::*, *};
fn main() -> Result<()> {
color_eyre::install()?;
tracing_subscriber::fmt::init();
info!("{} blogpost importer starting up", mi::APPLICATION_NAME);
let conn = establish_connection();
let feed = read_jsonfeed(BLOG_FEED_URL.to_string())?;
let posts: Vec<models::Blogpost> = feed
.items
.into_iter()
.map(|item| {
let post: models::Blogpost = item.into();
post
})
.collect();
diesel::insert_into(schema::blogposts::table)
.values(&posts)
.execute(&conn)?;
Ok(())
}
pub fn establish_connection() -> SqliteConnection {
let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set");
SqliteConnection::establish(&database_url)
.expect(&format!("Error connecting to {}", database_url))
}