mirror of
https://github.com/YACReader/yacreader
synced 2025-07-18 13:04:28 -04:00
Add new fields to the DB and make then available to be used in the apps
This commit is contained in:
@ -64,23 +64,29 @@ static QString fields = "title,"
|
||||
//"coverSizeRatio," cover may have changed since the info was exported...
|
||||
//"originalCoverSize," // h/w
|
||||
// new 9.8 fields
|
||||
"manga";
|
||||
"manga,"
|
||||
// new 9.13 fields
|
||||
"added,"
|
||||
"type,"
|
||||
"editor,"
|
||||
"imprint,"
|
||||
"teams,"
|
||||
"locations,"
|
||||
"series,"
|
||||
"alternateSeries,"
|
||||
"alternateNumber,"
|
||||
"alternateCount,"
|
||||
"languageISO,"
|
||||
"seriesGroup,"
|
||||
"mainCharacterOrTeam,"
|
||||
"review,"
|
||||
"tags";
|
||||
|
||||
DataBaseManagement::DataBaseManagement()
|
||||
: QObject(), dataBasesList()
|
||||
{
|
||||
}
|
||||
|
||||
/*TreeModel * DataBaseManagement::newTreeModel(QString path)
|
||||
{
|
||||
//la consulta se ejecuta...
|
||||
QSqlQuery selectQuery(loadDatabase(path));
|
||||
selectQuery.setForwardOnly(true);
|
||||
selectQuery.exec("select * from folder order by parentId,name");
|
||||
//selectQuery.finish();
|
||||
return new TreeModel(selectQuery);
|
||||
}*/
|
||||
|
||||
QSqlDatabase DataBaseManagement::createDatabase(QString name, QString path)
|
||||
{
|
||||
return createDatabase(QDir::cleanPath(path) + "/" + name + ".ydb");
|
||||
@ -106,8 +112,6 @@ QSqlDatabase DataBaseManagement::createDatabase(QString dest)
|
||||
"VALUES (1,'root', '/')",
|
||||
db);
|
||||
}
|
||||
// query.finish();
|
||||
// db.close();
|
||||
|
||||
return db;
|
||||
}
|
||||
@ -156,13 +160,13 @@ bool DataBaseManagement::createTables(QSqlDatabase &database)
|
||||
"coverPage INTEGER DEFAULT 1,"
|
||||
"numPages INTEGER,"
|
||||
|
||||
"number INTEGER,"
|
||||
"number TEXT," // changed to text from INTEGER (9.13)
|
||||
"isBis BOOLEAN,"
|
||||
"count INTEGER,"
|
||||
|
||||
"volume TEXT,"
|
||||
"storyArc TEXT,"
|
||||
"arcNumber INTEGER,"
|
||||
"arcNumber TEXT," // changed to text from INTEGER (9.13)
|
||||
"arcCount INTEGER,"
|
||||
|
||||
"genere TEXT,"
|
||||
@ -174,7 +178,7 @@ bool DataBaseManagement::createTables(QSqlDatabase &database)
|
||||
"letterer TEXT,"
|
||||
"coverArtist TEXT,"
|
||||
|
||||
"date TEXT," // dd/mm/yyyy --> se mostrará en 3 campos diferentes
|
||||
"date TEXT," // publication date dd/mm/yyyy --> se mostrará en 3 campos diferentes
|
||||
"publisher TEXT,"
|
||||
"format TEXT,"
|
||||
"color BOOLEAN,"
|
||||
@ -190,7 +194,7 @@ bool DataBaseManagement::createTables(QSqlDatabase &database)
|
||||
// new 7.0 fields
|
||||
|
||||
"hasBeenOpened BOOLEAN DEFAULT 0,"
|
||||
"rating INTEGER DEFAULT 0,"
|
||||
"rating INTEGER DEFAULT 0," // TODO_METADATA change type to REAL with two decimals
|
||||
"currentPage INTEGER DEFAULT 1, "
|
||||
"bookmark1 INTEGER DEFAULT -1, "
|
||||
"bookmark2 INTEGER DEFAULT -1, "
|
||||
@ -205,8 +209,23 @@ bool DataBaseManagement::createTables(QSqlDatabase &database)
|
||||
"coverSizeRatio REAL,"
|
||||
"originalCoverSize STRING," // h/w
|
||||
// new 9.8 fields
|
||||
"manga BOOLEAN DEFAULT 0"
|
||||
|
||||
"manga BOOLEAN DEFAULT 0," // deprecated 9.13
|
||||
// new 9.13 fields
|
||||
"added INTEGER,"
|
||||
"type INTEGER DEFAULT 0," // 0 = comic, 1 = manga, 2 = manga left to right, 3 = webcomic, 4 = 4koma
|
||||
"editor TEXT,"
|
||||
"imprint TEXT,"
|
||||
"teams TEXT,"
|
||||
"locations TEXT,"
|
||||
"series TEXT,"
|
||||
"alternateSeries TEXT,"
|
||||
"alternateNumber TEXT,"
|
||||
"alternateCount INTEGER,"
|
||||
"languageISO TEXT,"
|
||||
"seriesGroup TEXT,"
|
||||
"mainCharacterOrTeam TEXT,"
|
||||
"review TEXT,"
|
||||
"tags TEXT"
|
||||
")");
|
||||
success = success && queryComicInfo.exec();
|
||||
// queryComicInfo.finish();
|
||||
@ -226,7 +245,11 @@ bool DataBaseManagement::createTables(QSqlDatabase &database)
|
||||
"firstChildHash TEXT,"
|
||||
"customImage TEXT,"
|
||||
// new 9.8 fields
|
||||
"manga BOOLEAN DEFAULT 0,"
|
||||
"manga BOOLEAN DEFAULT 0," // deprecated 9.13
|
||||
// new 9.13 fields
|
||||
"type INTEGER DEFAULT 0," // 0 = comic, 1 = manga, 2 = manga left to right, 3 = webcomic, 4 = 4koma
|
||||
"added INTEGER,"
|
||||
"updated INTEGER," // updated when the folder gets new content
|
||||
"FOREIGN KEY(parentId) REFERENCES folder(id) ON DELETE CASCADE)");
|
||||
success = success && queryFolder.exec();
|
||||
|
||||
@ -460,7 +483,25 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
|
||||
//--
|
||||
|
||||
// new 9.8 fields
|
||||
"manga = :manga"
|
||||
"manga = :manga,"
|
||||
|
||||
// new 9.13 fields
|
||||
"added = :added,"
|
||||
"type = :type," // 0 = comic, 1 = manga, 2 = manga left to right, 3 = webcomic,
|
||||
"editor = :editor,"
|
||||
"imprint = :imprint,"
|
||||
"teams = :teams,"
|
||||
"locations = :locations,"
|
||||
"series = :series,"
|
||||
"alternateSeries = :alternateSeries,"
|
||||
"alternateNumber = :alternateNumber,"
|
||||
"alternateCount = :alternateCount,"
|
||||
"languageISO = :languageISO,"
|
||||
"seriesGroup = :seriesGroup,"
|
||||
"mainCharacterOrTeam = :mainCharacterOrTeam,"
|
||||
"review = :review,"
|
||||
"tags = :tags"
|
||||
|
||||
//--
|
||||
" WHERE hash = :hash ");
|
||||
|
||||
@ -496,6 +537,21 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
|
||||
"comicVineID,"
|
||||
"lastTimeOpened,"
|
||||
"coverSizeRatio,"
|
||||
"manga,"
|
||||
"added,"
|
||||
"type,"
|
||||
"editor,"
|
||||
"imprint,"
|
||||
"teams,"
|
||||
"locations,"
|
||||
"series,"
|
||||
"alternateSeries,"
|
||||
"alternateNumber,"
|
||||
"alternateCount,"
|
||||
"languageISO,"
|
||||
"seriesGroup,"
|
||||
"mainCharacterOrTeam,"
|
||||
"review,"
|
||||
"hash)"
|
||||
|
||||
"VALUES (:title,"
|
||||
@ -539,6 +595,23 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
|
||||
":coverSizeRatio,"
|
||||
":originalCoverSize,"
|
||||
|
||||
":manga,"
|
||||
":added,"
|
||||
":type,"
|
||||
":editor,"
|
||||
":imprint,"
|
||||
":teams,"
|
||||
":locations,"
|
||||
":series,"
|
||||
":alternateSeries,"
|
||||
":alternateNumber,"
|
||||
":alternateCount,"
|
||||
":languageISO,"
|
||||
":seriesGroup,"
|
||||
":mainCharacterOrTeam,"
|
||||
":review,"
|
||||
":tags,"
|
||||
|
||||
":hash )");
|
||||
|
||||
QSqlRecord record = newInfo.record();
|
||||
@ -596,6 +669,8 @@ bool DataBaseManagement::importComicsInfo(QString source, QString dest)
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
// TODO: update fields
|
||||
// TODO fix these bindings
|
||||
void DataBaseManagement::bindValuesFromRecord(const QSqlRecord &record, QSqlQuery &query)
|
||||
{
|
||||
@ -654,6 +729,22 @@ void DataBaseManagement::bindValuesFromRecord(const QSqlRecord &record, QSqlQuer
|
||||
bindValue("coverSizeRatio", record, query);
|
||||
bindValue("originalCoverSize", record, query);
|
||||
|
||||
bindValue("added", record, query);
|
||||
bindValue("type", record, query);
|
||||
bindValue("editor", record, query);
|
||||
bindValue("imprint", record, query);
|
||||
bindValue("teams", record, query);
|
||||
bindValue("locations", record, query);
|
||||
bindValue("series", record, query);
|
||||
bindValue("alternateSeries", record, query);
|
||||
bindValue("alternateNumber", record, query);
|
||||
bindValue("alternateCount", record, query);
|
||||
bindValue("languageISO", record, query);
|
||||
bindValue("seriesGroup", record, query);
|
||||
bindValue("mainCharacterOrTeam", record, query);
|
||||
bindValue("review", record, query);
|
||||
bindValue("tags", record, query);
|
||||
|
||||
bindValue("hash", record, query);
|
||||
}
|
||||
|
||||
@ -757,6 +848,7 @@ bool DataBaseManagement::updateToCurrentVersion(const QString &path)
|
||||
bool pre8 = false;
|
||||
bool pre9_5 = false;
|
||||
bool pre9_8 = false;
|
||||
bool pre9_13 = false;
|
||||
|
||||
QString fullPath = path + "/library.ydb";
|
||||
|
||||
@ -770,6 +862,8 @@ bool DataBaseManagement::updateToCurrentVersion(const QString &path)
|
||||
pre9_5 = true;
|
||||
if (compareVersions(DataBaseManagement::checkValidDB(fullPath), "9.8.0") < 0)
|
||||
pre9_8 = true;
|
||||
if (compareVersions(DataBaseManagement::checkValidDB(fullPath), "9.13.0") < 0)
|
||||
pre9_13 = true;
|
||||
|
||||
QString connectionName = "";
|
||||
bool returnValue = false;
|
||||
@ -895,6 +989,53 @@ bool DataBaseManagement::updateToCurrentVersion(const QString &path)
|
||||
returnValue = returnValue && successAddingColumns;
|
||||
}
|
||||
}
|
||||
|
||||
if (pre9_13) {
|
||||
{ // comic_info
|
||||
QStringList columnDefs;
|
||||
columnDefs << "added INTEGER";
|
||||
columnDefs << "type INTEGER DEFAULT 0"; // 0 = comic, 1 = manga, 2 = manga left to right, 3 = webcomic,
|
||||
columnDefs << "editor TEXT";
|
||||
columnDefs << "imprint TEXT";
|
||||
columnDefs << "teams TEXT";
|
||||
columnDefs << "locations TEXT";
|
||||
columnDefs << "series TEXT";
|
||||
columnDefs << "alternateSeries TEXT";
|
||||
columnDefs << "alternateNumber TEXT";
|
||||
columnDefs << "alternateCount INTEGER";
|
||||
columnDefs << "languageISO TEXT";
|
||||
columnDefs << "seriesGroup TEXT";
|
||||
columnDefs << "mainCharacterOrTeam TEXT";
|
||||
columnDefs << "review TEXT";
|
||||
columnDefs << "tags TEXT";
|
||||
bool successAddingColumns = addColumns("comic_info", columnDefs, db);
|
||||
returnValue = returnValue && successAddingColumns;
|
||||
|
||||
QSqlQuery updateTypeQueryToManga(db);
|
||||
updateTypeQueryToManga.prepare("UPDATE comic_info SET type = manga");
|
||||
bool successMigratingManga = updateTypeQueryToManga.exec();
|
||||
returnValue = returnValue && successMigratingManga;
|
||||
|
||||
QSqlQuery updateNumberQueryToBis(db);
|
||||
updateNumberQueryToBis.prepare("UPDATE comic_info SET number = number + 0.5 WHERE isBis = 1");
|
||||
bool successMigratingBis = updateNumberQueryToBis.exec();
|
||||
returnValue = returnValue && successMigratingBis;
|
||||
}
|
||||
{ // folder
|
||||
QStringList columnDefs;
|
||||
columnDefs << "added INTEGER";
|
||||
columnDefs << "updated INTEGER";
|
||||
columnDefs << "type INTEGER DEFAULT 0";
|
||||
|
||||
bool successAddingColumns = addColumns("folder", columnDefs, db);
|
||||
returnValue = returnValue && successAddingColumns;
|
||||
|
||||
QSqlQuery updateTypeQueryToManga(db);
|
||||
updateTypeQueryToManga.prepare("UPDATE folder SET type = manga");
|
||||
bool successMigratingManga = updateTypeQueryToManga.exec();
|
||||
returnValue = returnValue && successMigratingManga;
|
||||
}
|
||||
}
|
||||
}
|
||||
connectionName = db.connectionName();
|
||||
}
|
||||
|
Reference in New Issue
Block a user