Adding fill functions
This commit is contained in:
parent
440e897edf
commit
162ba78430
3 changed files with 53 additions and 3 deletions
|
|
@ -32,6 +32,7 @@ CREATE TABLE items (
|
||||||
CREATE TABLE feeds (
|
CREATE TABLE feeds (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
user_id INTEGER NOT NULL,
|
user_id INTEGER NOT NULL,
|
||||||
|
title TEXT NOT NULL,
|
||||||
FOREIGN KEY (user_id) REFERENCES users(id)
|
FOREIGN KEY (user_id) REFERENCES users(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ impl FetchedRSSItem {
|
||||||
}
|
}
|
||||||
pub struct FetchedRSSChannel {
|
pub struct FetchedRSSChannel {
|
||||||
title: String,
|
title: String,
|
||||||
link: Url,
|
link: Url,
|
||||||
description: String,
|
description: String,
|
||||||
|
|
||||||
items: Vec<FetchedRSSItem>,
|
items: Vec<FetchedRSSItem>,
|
||||||
|
|
@ -96,6 +96,8 @@ pub struct Channel {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Channel {
|
impl Channel {
|
||||||
|
|
||||||
|
|
||||||
pub async fn get_all(pool: &SqlitePool) -> Result<Vec<Self>> {
|
pub async fn get_all(pool: &SqlitePool) -> Result<Vec<Self>> {
|
||||||
let channels: Result<Vec<Channel>> = sqlx::query_as!(
|
let channels: Result<Vec<Channel>> = sqlx::query_as!(
|
||||||
UnparsedChannel,
|
UnparsedChannel,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,11 @@ use crate::{
|
||||||
Result,
|
Result,
|
||||||
Item,
|
Item,
|
||||||
Channel,
|
Channel,
|
||||||
channel::UnparsedChannel,
|
channel::{
|
||||||
|
UnparsedChannel,
|
||||||
|
ChannelId,
|
||||||
|
},
|
||||||
|
user::UserId,
|
||||||
};
|
};
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
|
|
||||||
|
|
@ -10,11 +14,54 @@ pub struct FeedId(pub i64);
|
||||||
impl From<i64> for FeedId { fn from(id: i64) -> Self { FeedId(id) } }
|
impl From<i64> for FeedId { fn from(id: i64) -> Self { FeedId(id) } }
|
||||||
impl From<FeedId> for i64 { fn from(id: FeedId) -> Self { id.0 } }
|
impl From<FeedId> for i64 { fn from(id: FeedId) -> Self { id.0 } }
|
||||||
|
|
||||||
|
pub struct UnparsedFeed {
|
||||||
|
pub id: i64,
|
||||||
|
pub title: String,
|
||||||
|
pub user_id: i64
|
||||||
|
}
|
||||||
|
impl UnparsedFeed {
|
||||||
|
pub fn parse(self) -> Result<Feed> {
|
||||||
|
Ok(Feed {
|
||||||
|
id: FeedId(self.id),
|
||||||
|
title: self.title,
|
||||||
|
user_id: UserId(self.user_id),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Feed {
|
pub struct Feed {
|
||||||
pub id: FeedId,
|
pub id: FeedId,
|
||||||
|
pub title: String,
|
||||||
|
pub user_id: UserId,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Feed {
|
impl Feed {
|
||||||
|
pub async fn create(
|
||||||
|
pool: &SqlitePool, id: UserId, name: &str
|
||||||
|
) -> Result<Self> {
|
||||||
|
let new_feed = sqlx::query_as!(
|
||||||
|
UnparsedFeed,
|
||||||
|
"INSERT INTO feeds (user_id, title)
|
||||||
|
VALUES (?, ?)
|
||||||
|
RETURNING id as `id!`, user_id, title",
|
||||||
|
id.0, name
|
||||||
|
).fetch_one(pool).await?.parse();
|
||||||
|
|
||||||
|
new_feed
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn add_channel(
|
||||||
|
pool: &SqlitePool, id: FeedId, channel_id: ChannelId
|
||||||
|
) -> Result<()> {
|
||||||
|
sqlx::query!(
|
||||||
|
"INSERT INTO feed_channels (feed_id, channel_id)
|
||||||
|
VALUES (?, ?)",
|
||||||
|
id.0, channel_id.0
|
||||||
|
).execute(pool).await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn get_items(
|
pub async fn get_items(
|
||||||
pool: &SqlitePool, id: FeedId, limit: u8, offset: u32
|
pool: &SqlitePool, id: FeedId, limit: u8, offset: u32
|
||||||
) -> Result<Vec<Item>> {
|
) -> Result<Vec<Item>> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue