From 60f122c8df84c8b2387385a0e8e142fd37e92892 Mon Sep 17 00:00:00 2001 From: APTX Date: Mon, 23 Jul 2012 21:20:10 +0200 Subject: [PATCH] Add entry_added field --- localmylist/database.cpp | 149 ++++++++++++++-------------- localmylist/database.h | 3 + localmylist/scriptable.cpp | 42 ++++++++ localmylist/scriptable.h | 12 +++ localmylist/share/schema/schema.sql | 3 + 5 files changed, 136 insertions(+), 73 deletions(-) diff --git a/localmylist/database.cpp b/localmylist/database.cpp index cfd540e..e0c1bbc 100644 --- a/localmylist/database.cpp +++ b/localmylist/database.cpp @@ -444,7 +444,7 @@ Anime Database::getAnime(int aid) Anime a; QSqlQuery &q = prepare( - "SELECT aid, anidb_update, entry_update, my_update, title_english, " + "SELECT aid, entry_added, anidb_update, entry_update, my_update, title_english, " " title_romaji, title_kanji, description, year, start_date, end_date, " " type, rating, votes, temp_rating, temp_votes, my_vote, my_vote_date, " " my_temp_vote, my_temp_vote_date " @@ -463,25 +463,26 @@ Anime Database::getAnime(int aid) } a.aid = q.value(0).toInt(); - a.anidbUpdate = q.value(1).toDateTime(); - a.entryUpdate = q.value(2).toDateTime(); - a.myUpdate = q.value(3).toDateTime(); - a.titleEnglish = q.value(4).toString(); - a.titleRomaji = q.value(5).toString(); - a.titleKanji = q.value(6).toString(); - a.description = q.value(7).toString(); - a.year = q.value(8).toString(); - a.startDate = q.value(9).toDateTime(); - a.endDate = q.value(10).toDateTime(); - a.type = q.value(11).toString(); - a.rating = q.value(12).toDouble(); - a.votes = q.value(13).toInt(); - a.tempRating = q.value(14).toDouble(); - a.tempVotes = q.value(15).toInt(); - a.myVote = q.value(16).toDouble(); - a.myVoteDate = q.value(17).toDateTime(); - a.myTempVote = q.value(18).toDouble(); - a.myTempVoteDate = q.value(19).toDateTime(); + a.entryAdded = q.value(1).toDateTime(); + a.anidbUpdate = q.value(2).toDateTime(); + a.entryUpdate = q.value(3).toDateTime(); + a.myUpdate = q.value(4).toDateTime(); + a.titleEnglish = q.value(5).toString(); + a.titleRomaji = q.value(6).toString(); + a.titleKanji = q.value(7).toString(); + a.description = q.value(8).toString(); + a.year = q.value(9).toString(); + a.startDate = q.value(10).toDateTime(); + a.endDate = q.value(11).toDateTime(); + a.type = q.value(12).toString(); + a.rating = q.value(13).toDouble(); + a.votes = q.value(14).toInt(); + a.tempRating = q.value(15).toDouble(); + a.tempVotes = q.value(16).toInt(); + a.myVote = q.value(17).toDouble(); + a.myVoteDate = q.value(18).toDateTime(); + a.myTempVote = q.value(19).toDouble(); + a.myTempVoteDate = q.value(20).toDateTime(); q.finish(); @@ -493,7 +494,7 @@ QList Database::getEpisodes(int aid) QList episodes; QSqlQuery &q = prepare( - "SELECT e.eid, e.aid, e.anidb_update, e.entry_update, e.my_update, e.epno, " + "SELECT e.eid, e.aid, e.entry_added, e.anidb_update, e.entry_update, e.my_update, e.epno, " " e.title_english, e.title_romaji, e.title_kanji, e.length, e.airdate, e.state, " " e.type, e.recap, e.rating, e.votes, e.my_vote, e.my_vote_date " " FROM episode e " @@ -520,7 +521,7 @@ Episode Database::getEpisode(int eid) Episode e; QSqlQuery &q = prepare( - "SELECT eid, aid, anidb_update, entry_update, my_update, epno, " + "SELECT eid, aid, entry_added, anidb_update, entry_update, my_update, epno, " " title_english, title_romaji, title_kanji, length, airdate, state, " " type, recap, rating, votes, my_vote, my_vote_date " " FROM episode " @@ -570,7 +571,7 @@ File Database::getFileByPath(const QString &path) File f; QSqlQuery &q = prepare( - "SELECT f.fid, f.eid, f.aid, f.gid, f.anidb_update, f.entry_update, f.my_update, " + "SELECT f.fid, f.eid, f.aid, f.gid, f.entry_added, f.anidb_update, f.entry_update, f.my_update, " " f.ed2k, f.size, f.length, f.extension, f.group_name, f.group_name_short, f.crc, " " f.release_date, f.version, f.censored, f.type, f.quality_id, f.quality, f.resolution, " " f.video_codec, f.audio_codec, f.audio_language, f.subtitle_language, f.aspect_ratio, " @@ -596,7 +597,7 @@ File Database::getFileByTitle(const QString &title, int epno) File f; QSqlQuery &q = prepare( - "SELECT f.fid, f.eid, f.aid, f.gid, f.anidb_update, f.entry_update, f.my_update, " + "SELECT f.fid, f.eid, f.aid, f.gid, f.entry_added, f.anidb_update, f.entry_update, f.my_update, " " f.ed2k, f.size, f.length, f.extension, f.group_name, f.group_name_short, f.crc, " " f.release_date, f.version, f.censored, f.type, f.quality_id, f.quality, f.resolution, " " f.video_codec, f.audio_codec, f.audio_language, f.subtitle_language, f.aspect_ratio, " @@ -607,7 +608,7 @@ File Database::getFileByTitle(const QString &title, int epno) " WHERE lower(at.title) = :title " " AND e.epno = :epno " "UNION " - "SELECT f.fid, f.eid, f.aid, f.gid, f.anidb_update, f.entry_update, f.my_update, " + "SELECT f.fid, f.eid, f.aid, f.gid, f.entry_added, f.anidb_update, f.entry_update, f.my_update, " " f.ed2k, f.size, f.length, f.extension, f.group_name, f.group_name_short, f.crc, " " f.release_date, f.version, f.censored, f.type, f.quality_id, f.quality, f.resolution, " " f.video_codec, f.audio_codec, f.audio_language, f.subtitle_language, f.aspect_ratio, " @@ -618,7 +619,7 @@ File Database::getFileByTitle(const QString &title, int epno) " LEFT JOIN episode e ON f.eid = e.eid " " WHERE at.title ILIKE :fuzzyTitle " " AND e.epno = :epno " - "GROUP BY f.fid, f.eid, f.aid, f.gid, f.anidb_update, f.entry_update, f.my_update, " + "GROUP BY f.fid, f.eid, f.aid, f.gid, f.entry_added, f.anidb_update, f.entry_update, f.my_update, " " f.ed2k, f.size, f.length, f.extension, f.group_name, f.group_name_short, f.crc, " " f.release_date, f.version, f.censored, f.type, f.quality_id, f.quality, f.resolution, " " f.video_codec, f.audio_codec, f.audio_language, f.subtitle_language, f.aspect_ratio, " @@ -779,7 +780,7 @@ bool Database::addTitle(const AnimeTitle &title) bool Database::addAnime(const Anime &anime) { QSqlQuery &q = prepare( - "INSERT INTO anime VALUES(:aid, :anidbUpdate, :entryUpdate, :myUpdate, :titleEnglish, " + "INSERT INTO anime VALUES(:aid, DEFAULT, :anidbUpdate, :entryUpdate, :myUpdate, :titleEnglish, " " :titleRomaji, :titleKanji, :description, :year, :startDate, :endDate, :type, " " :rating, :votes, :tempRating, :tempVotes, :myVote, :myVoteDate, " " :myTempVote, :myTempVoteDate) "); @@ -811,7 +812,7 @@ bool Database::addAnime(const Anime &anime) bool Database::addEpisode(const Episode &episode) { QSqlQuery &q = prepare( - "INSERT INTO episode VALUES(:eid, :aid, :anidbUpdate, :entryUpdate, :myUpdate, :epno, " + "INSERT INTO episode VALUES(:eid, :aid, DEFAULT, :anidbUpdate, :entryUpdate, :myUpdate, :epno, " " :titleEnglish, :titleRomaji, :titleKanji, :length, :airdate, " " :state, :type, :recap, :rating, " " :votes, :myVote, :myVoteDate) "); @@ -841,7 +842,7 @@ bool Database::addEpisode(const Episode &episode) bool Database::addFile(const File &file) { QSqlQuery &q = prepare( - "INSERT INTO file VALUES(:fid, :eid, :aid, :gid, :anidbUpdate, :entryUpdate, :myUpdate, " + "INSERT INTO file VALUES(:fid, :eid, :aid, :gid, DEFAULT, :anidbUpdate, :entryUpdate, :myUpdate, " " :ed2k, :size, :length, :extension, :groupName, :groupNameShort, " " :crc, :releaseDate, :version, :censored, :source, :qualityId, " " :quality, :resolution, :vidoeCodec, :audioCodec, :audioLanguage, " @@ -1354,22 +1355,23 @@ Episode Database::readEpisode(QSqlQuery &q) Episode e; e.eid = q.value(0).toInt(); e.aid = q.value(1).toInt(); - e.anidbUpdate = q.value(2).toDateTime(); - e.entryUpdate = q.value(3).toDateTime(); - e.myUpdate = q.value(4).toDateTime(); - e.epno = q.value(5).toInt(); - e.titleEnglish = q.value(6).toString(); - e.titleRomaji = q.value(7).toString(); - e.titleKanji = q.value(8).toString(); - e.length = q.value(9).toInt(); - e.airdate = q.value(10).toDateTime(); - e.state = q.value(11).toInt(); - e.type = q.value(12).toString(); - e.recap = q.value(13).toBool(); - e.rating = q.value(14).toDouble(); - e.votes = q.value(15).toInt(); - e.myVote = q.value(16).toDouble(); - e.myVoteDate = q.value(17).toDateTime(); + e.entryAdded = q.value(2).toDateTime(); + e.anidbUpdate = q.value(3).toDateTime(); + e.entryUpdate = q.value(4).toDateTime(); + e.myUpdate = q.value(5).toDateTime(); + e.epno = q.value(6).toInt(); + e.titleEnglish = q.value(7).toString(); + e.titleRomaji = q.value(8).toString(); + e.titleKanji = q.value(9).toString(); + e.length = q.value(10).toInt(); + e.airdate = q.value(11).toDateTime(); + e.state = q.value(12).toInt(); + e.type = q.value(13).toString(); + e.recap = q.value(14).toBool(); + e.rating = q.value(15).toDouble(); + e.votes = q.value(16).toInt(); + e.myVote = q.value(17).toDouble(); + e.myVoteDate = q.value(18).toDateTime(); return e; } @@ -1381,34 +1383,35 @@ File Database::readFile(QSqlQuery &q) f.eid = q.value(1).toInt(); f.aid = q.value(2).toInt(); f.gid = q.value(3).toInt(); - f.anidbUpdate = q.value(4).toDateTime(); - f.entryUpdate = q.value(5).toDateTime(); - f.myUpdate = q.value(6).toDateTime(); - f.ed2k = q.value(7).toByteArray(); - f.size = q.value(8).toLongLong(); - f.length = q.value(9).toInt(); - f.extension = q.value(10).toString(); - f.groupName = q.value(11).toString(); - f.groupNameShort = q.value(12).toString(); - f.crc = q.value(13).toString(); - f.releaseDate = q.value(14).toDateTime(); - f.version = q.value(15).toInt(); - f.censored = q.value(16).toBool(); - f.source = q.value(17).toString(); - f.qualityId = q.value(18).toInt(); - f.quality = q.value(19).toString(); - f.resolution = q.value(20).toString(); - f.videoCodec = q.value(21).toString(); - f.audioCodec = q.value(22).toString(); - f.audioLanguage = q.value(23).toString(); - f.subtitleLanguage = q.value(24).toString(); - f.aspectRatio = q.value(25).toString(); - f.myWatched = q.value(26).toDateTime(); - f.myState = q.value(27).toInt(); - f.myFileState = q.value(28).toInt(); - f.myStorage = q.value(29).toString(); - f.mySource = q.value(30).toString(); - f.myOther = q.value(31).toString(); + f.entryAdded = q.value(4).toDateTime(); + f.anidbUpdate = q.value(5).toDateTime(); + f.entryUpdate = q.value(6).toDateTime(); + f.myUpdate = q.value(7).toDateTime(); + f.ed2k = q.value(8).toByteArray(); + f.size = q.value(9).toLongLong(); + f.length = q.value(10).toInt(); + f.extension = q.value(11).toString(); + f.groupName = q.value(12).toString(); + f.groupNameShort = q.value(13).toString(); + f.crc = q.value(14).toString(); + f.releaseDate = q.value(15).toDateTime(); + f.version = q.value(16).toInt(); + f.censored = q.value(17).toBool(); + f.source = q.value(18).toString(); + f.qualityId = q.value(19).toInt(); + f.quality = q.value(20).toString(); + f.resolution = q.value(21).toString(); + f.videoCodec = q.value(22).toString(); + f.audioCodec = q.value(23).toString(); + f.audioLanguage = q.value(24).toString(); + f.subtitleLanguage = q.value(25).toString(); + f.aspectRatio = q.value(26).toString(); + f.myWatched = q.value(27).toDateTime(); + f.myState = q.value(28).toInt(); + f.myFileState = q.value(29).toInt(); + f.myStorage = q.value(30).toString(); + f.mySource = q.value(31).toString(); + f.myOther = q.value(32).toString(); return f; } diff --git a/localmylist/database.h b/localmylist/database.h index 8db95df..9960d9b 100644 --- a/localmylist/database.h +++ b/localmylist/database.h @@ -30,6 +30,7 @@ struct LOCALMYLISTSHARED_EXPORT AnimeTitle struct LOCALMYLISTSHARED_EXPORT Anime { int aid; + QDateTime entryAdded; QDateTime anidbUpdate; QDateTime entryUpdate; QDateTime myUpdate; @@ -59,6 +60,7 @@ struct LOCALMYLISTSHARED_EXPORT Episode { int eid; int aid; + QDateTime entryAdded; QDateTime anidbUpdate; QDateTime entryUpdate; QDateTime myUpdate; @@ -85,6 +87,7 @@ struct LOCALMYLISTSHARED_EXPORT File int eid; int aid; int gid; + QDateTime entryAdded; QDateTime anidbUpdate; QDateTime entryUpdate; QDateTime myUpdate; diff --git a/localmylist/scriptable.cpp b/localmylist/scriptable.cpp index eb557e4..b80b2a3 100644 --- a/localmylist/scriptable.cpp +++ b/localmylist/scriptable.cpp @@ -274,6 +274,20 @@ void Anime::write_aid(int val) o->aid = val; } +QDateTime Anime::read_entryAdded() const +{ + auto o = thisObj(); + if (!o) return QDateTime(); + return o->entryAdded; +} + +void Anime::write_entryAdded(QDateTime val) +{ + auto o = thisObj(); + if (!o) return; + o->entryAdded = val; +} + QDateTime Anime::read_anidbUpdate() const { auto o = thisObj(); @@ -598,6 +612,20 @@ void Episode::write_aid(int val) o->aid = val; } +QDateTime Episode::read_entryAdded() const +{ + auto o = thisObj(); + if (!o) return QDateTime(); + return o->entryAdded; +} + +void Episode::write_entryAdded(QDateTime val) +{ + auto o = thisObj(); + if (!o) return; + o->entryAdded = val; +} + QDateTime Episode::read_anidbUpdate() const { auto o = thisObj(); @@ -880,6 +908,20 @@ void File::write_gid(int val) o->gid = val; } +QDateTime File::read_entryAdded() const +{ + auto o = thisObj(); + if (!o) return QDateTime(); + return o->entryAdded; +} + +void File::write_entryAdded(QDateTime val) +{ + auto o = thisObj(); + if (!o) return; + o->entryAdded = val; +} + QDateTime File::read_anidbUpdate() const { auto o = thisObj(); diff --git a/localmylist/scriptable.h b/localmylist/scriptable.h index ac140fe..5c3bcbf 100644 --- a/localmylist/scriptable.h +++ b/localmylist/scriptable.h @@ -59,6 +59,7 @@ class LOCALMYLISTSHARED_EXPORT Anime : public QObject, protected QScriptable { Q_OBJECT Q_PROPERTY(int aid READ read_aid WRITE write_aid) + Q_PROPERTY(QDateTime entryAdded READ read_entryAdded WRITE write_entryAdded) Q_PROPERTY(QDateTime anidbUpdate READ read_anidbUpdate WRITE write_anidbUpdate) Q_PROPERTY(QDateTime entryUpdate READ read_entryUpdate WRITE write_entryUpdate) Q_PROPERTY(QDateTime myUpdate READ read_myUpdate WRITE write_myUpdate) @@ -92,6 +93,9 @@ public: int read_aid() const; void write_aid(int val); + QDateTime read_entryAdded() const; + void write_entryAdded(QDateTime val); + QDateTime read_anidbUpdate() const; void write_anidbUpdate(QDateTime val); @@ -161,6 +165,7 @@ class LOCALMYLISTSHARED_EXPORT Episode : public QObject, protected QScriptable Q_OBJECT Q_PROPERTY(int eid READ read_eid WRITE write_eid) Q_PROPERTY(int aid READ read_aid WRITE write_aid) + Q_PROPERTY(QDateTime entryAdded READ read_entryAdded WRITE write_entryAdded) Q_PROPERTY(QDateTime anidbUpdate READ read_anidbUpdate WRITE write_anidbUpdate) Q_PROPERTY(QDateTime entryUpdate READ read_entryUpdate WRITE write_entryUpdate) Q_PROPERTY(QDateTime myUpdate READ read_myUpdate WRITE write_myUpdate) @@ -192,6 +197,9 @@ public: int read_aid() const; void write_aid(int val); + QDateTime read_entryAdded() const; + void write_entryAdded(QDateTime val); + QDateTime read_anidbUpdate() const; void write_anidbUpdate(QDateTime val); @@ -248,6 +256,7 @@ class LOCALMYLISTSHARED_EXPORT File : public QObject, protected QScriptable Q_PROPERTY(int eid READ read_eid WRITE write_eid) Q_PROPERTY(int aid READ read_aid WRITE write_aid) Q_PROPERTY(int gid READ read_gid WRITE write_gid) + Q_PROPERTY(QDateTime entryAdded READ read_entryAdded WRITE write_entryAdded) Q_PROPERTY(QDateTime anidbUpdate READ read_anidbUpdate WRITE write_anidbUpdate) Q_PROPERTY(QDateTime entryUpdate READ read_entryUpdate WRITE write_entryUpdate) Q_PROPERTY(QDateTime myUpdate READ read_myUpdate WRITE write_myUpdate) @@ -297,6 +306,9 @@ public: int read_gid() const; void write_gid(int val); + QDateTime read_entryAdded() const; + void write_entryAdded(QDateTime val); + QDateTime read_anidbUpdate() const; void write_anidbUpdate(QDateTime val); diff --git a/localmylist/share/schema/schema.sql b/localmylist/share/schema/schema.sql index e7fdc98..b372867 100644 --- a/localmylist/share/schema/schema.sql +++ b/localmylist/share/schema/schema.sql @@ -2,6 +2,7 @@ CREATE TYPE episode_type_enum AS ENUM ('', 'S', 'C', 'T', 'P', 'O', 'OP'); CREATE TABLE anime ( aid integer NOT NULL, + entry_added timestamp without time zone NOT NULL DEFAULT now(), anidb_update timestamp without time zone, entry_update timestamp without time zone, my_update timestamp without time zone, @@ -44,6 +45,7 @@ CREATE INDEX language_idx ON anime_title USING hash (language); CREATE TABLE episode ( eid integer NOT NULL, aid integer, + entry_added timestamp without time zone NOT NULL DEFAULT now(), anidb_update timestamp without time zone, entry_update timestamp without time zone, my_update timestamp without time zone, @@ -77,6 +79,7 @@ CREATE TABLE file ( eid integer, aid integer, gid integer, + entry_added timestamp without time zone NOT NULL DEFAULT now(), anidb_update timestamp without time zone, entry_update timestamp without time zone, my_update timestamp without time zone, -- 2.52.0