]> Some of my projects - localmylist.git/commitdiff
Add entry_added field
authorAPTX <marek321@gmail.com>
Mon, 23 Jul 2012 19:20:10 +0000 (21:20 +0200)
committerAPTX <marek321@gmail.com>
Mon, 23 Jul 2012 19:23:40 +0000 (21:23 +0200)
localmylist/database.cpp
localmylist/database.h
localmylist/scriptable.cpp
localmylist/scriptable.h
localmylist/share/schema/schema.sql

index cfd540e6707bca0303760a00993fd4eb301e284f..e0c1bbc5fee20d97d79fa351deafd3b2052dbe2e 100644 (file)
@@ -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<Episode> Database::getEpisodes(int aid)
        QList<Episode> 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;
 }
index 8db95df27e8869051fa6538a57286e91303a06fe..9960d9be7f54d0f6ef88e7c6e593ec86380b3e1c 100644 (file)
@@ -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;
index eb557e45bc4499117546707bd0ade41d51f2702f..b80b2a3d7e300152c90c5415aa3da5adb96e5af7 100644 (file)
@@ -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();
index ac140fe0cf2524d7d9924d86f3392a99832948f8..5c3bcbf9c5ab71dedb6767a5555fabb34606a6e2 100644 (file)
@@ -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);
 
index e7fdc98eb3b65e0082054eac2a661b7a4f9a1671..b3728678c2f27630c36a3010527fb0ca9d0afe5e 100644 (file)
@@ -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,