Use source_id as the unique identifieble field for the podcast table.
This commit is contained in:
@@ -4,36 +4,36 @@
|
||||
-- in order to change the db schema.
|
||||
|
||||
CREATE TABLE `source` (
|
||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
`uri` TEXT NOT NULL UNIQUE,
|
||||
`last_modified` TEXT,
|
||||
`http_etag` TEXT
|
||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
`uri` TEXT NOT NULL UNIQUE,
|
||||
`last_modified` TEXT,
|
||||
`http_etag` TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE `episode` (
|
||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
`title` TEXT,
|
||||
`uri` TEXT NOT NULL UNIQUE,
|
||||
`local_uri` TEXT,
|
||||
`description` TEXT,
|
||||
`published_date` TEXT,
|
||||
`epoch` INTEGER NOT NULL DEFAULT 0,
|
||||
`length` INTEGER,
|
||||
`guid` TEXT,
|
||||
`played` INTEGER,
|
||||
`favorite` INTEGER NOT NULL DEFAULT 0,
|
||||
`archive` INTEGER NOT NULL DEFAULT 0,
|
||||
`podcast_id` INTEGER NOT NULL
|
||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
`title` TEXT,
|
||||
`uri` TEXT NOT NULL UNIQUE,
|
||||
`local_uri` TEXT,
|
||||
`description` TEXT,
|
||||
`published_date` TEXT,
|
||||
`epoch` INTEGER NOT NULL DEFAULT 0,
|
||||
`length` INTEGER,
|
||||
`guid` TEXT,
|
||||
`played` INTEGER,
|
||||
`favorite` INTEGER NOT NULL DEFAULT 0,
|
||||
`archive` INTEGER NOT NULL DEFAULT 0,
|
||||
`podcast_id` INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE `podcast` (
|
||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
`title` TEXT NOT NULL UNIQUE,
|
||||
`link` TEXT NOT NULL,
|
||||
`description` TEXT NOT NULL,
|
||||
`image_uri` TEXT,
|
||||
`favorite` INTEGER NOT NULL DEFAULT 0,
|
||||
`archive` INTEGER NOT NULL DEFAULT 0,
|
||||
`always_dl` INTEGER NOT NULL DEFAULT 0,
|
||||
`source_id` INTEGER NOT NULL
|
||||
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||
`title` TEXT NOT NULL,
|
||||
`link` TEXT NOT NULL,
|
||||
`description` TEXT NOT NULL,
|
||||
`image_uri` TEXT,
|
||||
`favorite` INTEGER NOT NULL DEFAULT 0,
|
||||
`archive` INTEGER NOT NULL DEFAULT 0,
|
||||
`always_dl` INTEGER NOT NULL DEFAULT 0,
|
||||
`source_id` INTEGER NOT NULL UNIQUE
|
||||
);
|
||||
@@ -133,13 +133,23 @@ pub fn get_source_from_uri(uri_: &str) -> QueryResult<Source> {
|
||||
source.filter(uri.eq(uri_)).get_result::<Source>(&*con)
|
||||
}
|
||||
|
||||
pub fn get_podcast_from_title(title_: &str) -> QueryResult<Podcast> {
|
||||
// pub fn get_podcast_from_title(title_: &str) -> QueryResult<Podcast> {
|
||||
// use schema::podcast::dsl::*;
|
||||
|
||||
// let db = connection();
|
||||
// let con = db.get().unwrap();
|
||||
// podcast
|
||||
// .filter(title.eq(title_))
|
||||
// .get_result::<Podcast>(&*con)
|
||||
// }
|
||||
|
||||
pub fn get_podcast_from_source_id(sid: i32) -> QueryResult<Podcast> {
|
||||
use schema::podcast::dsl::*;
|
||||
|
||||
let db = connection();
|
||||
let con = db.get().unwrap();
|
||||
podcast
|
||||
.filter(title.eq(title_))
|
||||
.filter(source_id.eq(sid))
|
||||
.get_result::<Podcast>(&*con)
|
||||
}
|
||||
|
||||
|
||||
@@ -105,11 +105,11 @@ impl NewPodcast {
|
||||
// Look out for when tryinto lands into stable.
|
||||
pub fn into_podcast(self) -> Result<Podcast> {
|
||||
self.index()?;
|
||||
Ok(dbqueries::get_podcast_from_title(&self.title)?)
|
||||
Ok(dbqueries::get_podcast_from_source_id(self.source_id)?)
|
||||
}
|
||||
|
||||
pub fn index(&self) -> QueryResult<()> {
|
||||
let pd = dbqueries::get_podcast_from_title(&self.title);
|
||||
let pd = dbqueries::get_podcast_from_source_id(self.source_id);
|
||||
|
||||
let db = connection();
|
||||
let con = db.get().unwrap();
|
||||
@@ -119,7 +119,9 @@ impl NewPodcast {
|
||||
error!("NPD sid: {}, PD sid: {}", self.source_id, foo.source_id());
|
||||
};
|
||||
|
||||
if foo.link() != self.link {
|
||||
if (foo.link() != self.link) || (foo.title() != self.title)
|
||||
|| (foo.image_uri() != self.image_uri.as_ref().map(|x| x.as_str()))
|
||||
{
|
||||
dbqueries::replace_podcast(&con, self)?;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user