Changeset View
Changeset View
Standalone View
Standalone View
src/databaseinterface.cpp
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 1211 Lines • ▼ Show 20 Line(s) | 1158 | { | |||
---|---|---|---|---|---|
1212 | 1212 | | |||
1213 | if (listTables.contains(QLatin1String("DatabaseVersionV5")) && | 1213 | if (listTables.contains(QLatin1String("DatabaseVersionV5")) && | ||
1214 | !listTables.contains(QLatin1String("DatabaseVersionV9"))) { | 1214 | !listTables.contains(QLatin1String("DatabaseVersionV9"))) { | ||
1215 | upgradeDatabaseV9(); | 1215 | upgradeDatabaseV9(); | ||
1216 | upgradeDatabaseV11(); | 1216 | upgradeDatabaseV11(); | ||
1217 | upgradeDatabaseV12(); | 1217 | upgradeDatabaseV12(); | ||
1218 | upgradeDatabaseV13(); | 1218 | upgradeDatabaseV13(); | ||
1219 | upgradeDatabaseV14(); | 1219 | upgradeDatabaseV14(); | ||
1220 | upgradeDatabaseV15(); | ||||
1220 | 1221 | | |||
1221 | checkDatabaseSchema(); | 1222 | checkDatabaseSchema(); | ||
1222 | } else if (listTables.contains(QLatin1String("DatabaseVersionV9"))) { | 1223 | } else if (listTables.contains(QLatin1String("DatabaseVersionV9"))) { | ||
1223 | if (!listTables.contains(QLatin1String("DatabaseVersionV11"))) { | 1224 | if (!listTables.contains(QLatin1String("DatabaseVersionV11"))) { | ||
1224 | upgradeDatabaseV11(); | 1225 | upgradeDatabaseV11(); | ||
1225 | } | 1226 | } | ||
1226 | if (!listTables.contains(QLatin1String("DatabaseVersionV12"))) { | 1227 | if (!listTables.contains(QLatin1String("DatabaseVersionV12"))) { | ||
1227 | upgradeDatabaseV12(); | 1228 | upgradeDatabaseV12(); | ||
1228 | } | 1229 | } | ||
1229 | if (!listTables.contains(QLatin1String("DatabaseVersionV13"))) { | 1230 | if (!listTables.contains(QLatin1String("DatabaseVersionV13"))) { | ||
1230 | upgradeDatabaseV13(); | 1231 | upgradeDatabaseV13(); | ||
1231 | } | 1232 | } | ||
1232 | if (!listTables.contains(QLatin1String("DatabaseVersionV14"))) { | 1233 | if (!listTables.contains(QLatin1String("DatabaseVersionV14"))) { | ||
1233 | upgradeDatabaseV14(); | 1234 | upgradeDatabaseV14(); | ||
1234 | } | 1235 | } | ||
1236 | if (!listTables.contains(QStringLiteral("DatabaseVersionV15"))) { | ||||
1237 | upgradeDatabaseV15(); | ||||
1238 | } | ||||
1235 | 1239 | | |||
1236 | checkDatabaseSchema(); | 1240 | checkDatabaseSchema(); | ||
1237 | } else { | 1241 | } else { | ||
1238 | createDatabaseV9(); | 1242 | createDatabaseV9(); | ||
1239 | upgradeDatabaseV11(); | 1243 | upgradeDatabaseV11(); | ||
1240 | upgradeDatabaseV12(); | 1244 | upgradeDatabaseV12(); | ||
1241 | upgradeDatabaseV13(); | 1245 | upgradeDatabaseV13(); | ||
1242 | upgradeDatabaseV14(); | 1246 | upgradeDatabaseV14(); | ||
1247 | upgradeDatabaseV15(); | ||||
1243 | } | 1248 | } | ||
1244 | } | 1249 | } | ||
1245 | 1250 | | |||
1246 | void DatabaseInterface::createDatabaseV9() | 1251 | void DatabaseInterface::createDatabaseV9() | ||
1247 | { | 1252 | { | ||
1248 | qCInfo(orgKdeElisaDatabase) << "begin creation of v9 database schema"; | 1253 | qCInfo(orgKdeElisaDatabase) << "begin creation of v9 database schema"; | ||
1249 | 1254 | | |||
1250 | { | 1255 | { | ||
▲ Show 20 Lines • Show All 1585 Lines • ▼ Show 20 Line(s) | 2812 | { | |||
2836 | d->mTracksDatabase.transaction(); | 2841 | d->mTracksDatabase.transaction(); | ||
2837 | 2842 | | |||
2838 | { | 2843 | { | ||
2839 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 2844 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
2840 | 2845 | | |||
2841 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Radios` (" | 2846 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Radios` (" | ||
2842 | "`ID` INTEGER PRIMARY KEY AUTOINCREMENT, " | 2847 | "`ID` INTEGER PRIMARY KEY AUTOINCREMENT, " | ||
2843 | "`HttpAddress` VARCHAR(255) NOT NULL, " | 2848 | "`HttpAddress` VARCHAR(255) NOT NULL, " | ||
2844 | "`Priority` INTEGER NOT NULL, " | 2849 | "`Priority` INTEGER NOT NULL, " | ||
mgallien: Even though this branch has not been released, can you bump the database version and do this… | |||||
Thanks for the feedback. I wonder if there is a particular reason for creating some tables to check the database version? (DatabaseVersionV13, DatabaseVersionV14 ...). Maybe we could use on table with a version field? It could be more efficient/readable in DatabaseInterface::initDatabase ? jguidon: Thanks for the feedback.
I wonder if there is a particular reason for creating some tables to… | |||||
The current solution was what I found enough to do the job. mgallien: The current solution was what I found enough to do the job.
Feel free to propose another… | |||||
2845 | "`Title` VARCHAR(85) NOT NULL, " | 2850 | "`Title` VARCHAR(85) NOT NULL, " | ||
2846 | "`Rating` INTEGER NOT NULL DEFAULT 0, " | 2851 | "`Rating` INTEGER NOT NULL DEFAULT 0, " | ||
2847 | "`Genre` VARCHAR(55), " | 2852 | "`Genre` VARCHAR(55), " | ||
2848 | "`Comment` VARCHAR(255), " | 2853 | "`Comment` VARCHAR(255), " | ||
2849 | "UNIQUE (" | 2854 | "UNIQUE (" | ||
2850 | "`HttpAddress`" | 2855 | "`HttpAddress`" | ||
2851 | "), " | 2856 | "), " | ||
2852 | "UNIQUE (" | 2857 | "UNIQUE (" | ||
Show All 10 Lines | |||||
2863 | } | 2868 | } | ||
2864 | } | 2869 | } | ||
2865 | 2870 | | |||
2866 | { | 2871 | { | ||
2867 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 2872 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
2868 | 2873 | | |||
2869 | //Find webradios (french): https://doc.ubuntu-fr.org/liste_radio_france | 2874 | //Find webradios (french): https://doc.ubuntu-fr.org/liste_radio_france | ||
2870 | //English: https://www.radio.fr/language/english (to get the link play a radio and look for streamUrl in the html elements page). | 2875 | //English: https://www.radio.fr/language/english (to get the link play a radio and look for streamUrl in the html elements page). | ||
2871 | const auto &result = createSchemaQuery.exec(QStringLiteral("INSERT INTO `Radios` (`HttpAddress`, `Priority`, `Title`) " | 2876 | const auto &result = createSchemaQuery.exec(QStringLiteral("INSERT INTO `Radios` (`HttpAddress`, `ImageAddress`, `Title`) " | ||
2872 | "SELECT 'http://classicrock.stream.ouifm.fr/ouifm3.mp3', 1, 'OuiFM_Classic_Rock' UNION ALL " | 2877 | "SELECT 'http://classicrock.stream.ouifm.fr/ouifm3.mp3', '', 'OuiFM_Classic_Rock' UNION ALL " | ||
2873 | "SELECT 'http://rock70s.stream.ouifm.fr/ouifmseventies.mp3', 1, 'OuiFM_70s' UNION ALL " | 2878 | "SELECT 'http://rock70s.stream.ouifm.fr/ouifmseventies.mp3', '', 'OuiFM_70s' UNION ALL " | ||
2874 | "SELECT 'http://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3', 2 , 'Jazz_Radio' UNION ALL " | 2879 | "SELECT 'http://jazzradio.ice.infomaniak.ch/jazzradio-high.mp3', '' , 'Jazz_Radio' UNION ALL " | ||
2875 | "SELECT 'http://cdn.nrjaudio.fm/audio1/fr/30601/mp3_128.mp3?origine=playerweb', 1, 'Nostalgie' UNION ALL " | 2880 | "SELECT 'http://cdn.nrjaudio.fm/audio1/fr/30601/mp3_128.mp3?origine=playerweb', '', 'Nostalgie' UNION ALL " | ||
2876 | "SELECT 'https://scdn.nrjaudio.fm/audio1/fr/30713/aac_64.mp3?origine=playerweb', 1, 'Nostalgie Johnny' UNION ALL " | 2881 | "SELECT 'https://scdn.nrjaudio.fm/audio1/fr/30713/aac_64.mp3?origine=playerweb', '', 'Nostalgie Johnny' UNION ALL " | ||
2877 | "SELECT 'http://sc-classrock.1.fm:8200', 1, 'Classic rock replay' UNION ALL " | 2882 | "SELECT 'http://sc-classrock.1.fm:8200', '', 'Classic rock replay' UNION ALL " | ||
2878 | "SELECT 'http://agnes.torontocast.com:8151/stream', 1, 'Instrumentals Forever' UNION ALL " | 2883 | "SELECT 'http://agnes.torontocast.com:8151/stream', '', 'Instrumentals Forever' UNION ALL " | ||
2879 | "SELECT 'https://stream.laut.fm/jahfari', 1, 'Jahfari'" | 2884 | "SELECT 'https://stream.laut.fm/jahfari', '', 'Jahfari' UNION ALL " | ||
2885 | "SELECT 'https://chai5she.cdn.dvmr.fr/francemusique-lofi.mp3', 'https://static.radio.fr/images/broadcasts/07/f7/3366/c44.png', 'France Musique'" | ||||
2880 | )); | 2886 | )); | ||
2881 | if (!result) { | 2887 | if (!result) { | ||
2882 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << createSchemaQuery.lastQuery(); | 2888 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << createSchemaQuery.lastQuery(); | ||
2883 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << createSchemaQuery.lastError(); | 2889 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << createSchemaQuery.lastError(); | ||
2884 | 2890 | | |||
2885 | Q_EMIT databaseError(); | 2891 | Q_EMIT databaseError(); | ||
2886 | } | 2892 | } | ||
2887 | } | 2893 | } | ||
Show All 11 Lines | 2902 | if (!result) { | |||
2899 | 2905 | | |||
2900 | Q_EMIT databaseError(); | 2906 | Q_EMIT databaseError(); | ||
2901 | } | 2907 | } | ||
2902 | } | 2908 | } | ||
2903 | 2909 | | |||
2904 | qCInfo(orgKdeElisaDatabase) << "finished update to v14 of database schema"; | 2910 | qCInfo(orgKdeElisaDatabase) << "finished update to v14 of database schema"; | ||
2905 | } | 2911 | } | ||
2906 | 2912 | | |||
2913 | void DatabaseInterface::upgradeDatabaseV15() | ||||
2914 | { | ||||
2915 | qCInfo(orgKdeElisaDatabase) << "begin update to v15 of database schema"; | ||||
2916 | | ||||
2917 | { | ||||
2918 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2919 | | ||||
2920 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DatabaseVersionV15` (`Version` INTEGER PRIMARY KEY NOT NULL)")); | ||||
2921 | | ||||
2922 | if (!result) { | ||||
2923 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastQuery(); | ||||
2924 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastError(); | ||||
2925 | | ||||
2926 | Q_EMIT databaseError(); | ||||
2927 | } | ||||
2928 | } | ||||
2929 | | ||||
2930 | { | ||||
2931 | QSqlQuery disableForeignKeys(d->mTracksDatabase); | ||||
2932 | | ||||
2933 | auto result = disableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=OFF")); | ||||
2934 | | ||||
2935 | if (!result) { | ||||
2936 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << disableForeignKeys.lastQuery(); | ||||
2937 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << disableForeignKeys.lastError(); | ||||
2938 | | ||||
2939 | Q_EMIT databaseError(); | ||||
2940 | } | ||||
2941 | } | ||||
2942 | | ||||
2943 | d->mTracksDatabase.transaction(); | ||||
2944 | | ||||
2945 | { | ||||
2946 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2947 | | ||||
2948 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `RadiosNew` (" | ||||
2949 | "`ID` INTEGER PRIMARY KEY AUTOINCREMENT, " | ||||
2950 | "`HttpAddress` VARCHAR(255) NOT NULL, " | ||||
2951 | "`ImageAddress` VARCHAR(255) NOT NULL, " | ||||
2952 | "`Title` VARCHAR(85) NOT NULL, " | ||||
2953 | "`Rating` INTEGER NOT NULL DEFAULT 0, " | ||||
2954 | "`Genre` VARCHAR(55), " | ||||
2955 | "`Comment` VARCHAR(255), " | ||||
2956 | "UNIQUE (" | ||||
2957 | "`HttpAddress`" | ||||
2958 | "), " | ||||
2959 | "UNIQUE (" | ||||
2960 | "`Title`, `HttpAddress`" | ||||
2961 | ") " | ||||
2962 | "CONSTRAINT fk_tracks_genre FOREIGN KEY (`Genre`) REFERENCES `Genre`(`Name`))" | ||||
2963 | )); | ||||
2964 | | ||||
2965 | if (!result) { | ||||
2966 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV14" << createSchemaQuery.lastQuery(); | ||||
2967 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV14" << createSchemaQuery.lastError(); | ||||
2968 | | ||||
2969 | Q_EMIT databaseError(); | ||||
2970 | } | ||||
2971 | } | ||||
2972 | | ||||
2973 | { | ||||
2974 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2975 | | ||||
2976 | const auto &result = createSchemaQuery.exec(QStringLiteral("INSERT INTO RadiosNew SELECT ID, HttpAddress, '', Title, Rating, Genre, Comment FROM Radios")); | ||||
2977 | | ||||
2978 | if (!result) { | ||||
2979 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastQuery(); | ||||
2980 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastError(); | ||||
2981 | | ||||
2982 | Q_EMIT databaseError(); | ||||
2983 | } | ||||
2984 | } | ||||
2985 | | ||||
2986 | { | ||||
2987 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2988 | | ||||
2989 | const auto &result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `Radios`")); | ||||
2990 | | ||||
2991 | if (!result) { | ||||
2992 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastQuery(); | ||||
2993 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastError(); | ||||
2994 | | ||||
2995 | Q_EMIT databaseError(); | ||||
2996 | } | ||||
2997 | } | ||||
2998 | | ||||
2999 | { | ||||
3000 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
3001 | | ||||
3002 | const auto &result = createSchemaQuery.exec(QStringLiteral("ALTER TABLE `RadiosNew` RENAME TO `Radios`")); | ||||
3003 | | ||||
3004 | if (!result) { | ||||
3005 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastQuery(); | ||||
3006 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << createSchemaQuery.lastError(); | ||||
3007 | | ||||
3008 | Q_EMIT databaseError(); | ||||
3009 | } | ||||
3010 | } | ||||
3011 | | ||||
3012 | d->mTracksDatabase.commit(); | ||||
3013 | | ||||
3014 | { | ||||
3015 | QSqlQuery enableForeignKeys(d->mTracksDatabase); | ||||
3016 | | ||||
3017 | auto result = enableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=ON")); | ||||
3018 | | ||||
3019 | if (!result) { | ||||
3020 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << enableForeignKeys.lastQuery(); | ||||
3021 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::upgradeDatabaseV15" << enableForeignKeys.lastError(); | ||||
3022 | | ||||
3023 | Q_EMIT databaseError(); | ||||
3024 | } | ||||
3025 | } | ||||
3026 | | ||||
3027 | qCInfo(orgKdeElisaDatabase) << "finished update to v15 of database schema"; | ||||
3028 | } | ||||
3029 | | ||||
2907 | void DatabaseInterface::checkDatabaseSchema() | 3030 | void DatabaseInterface::checkDatabaseSchema() | ||
2908 | { | 3031 | { | ||
2909 | checkAlbumsTableSchema(); | 3032 | checkAlbumsTableSchema(); | ||
2910 | if (d->mIsInBadState) | 3033 | if (d->mIsInBadState) | ||
2911 | { | 3034 | { | ||
2912 | resetDatabase(); | 3035 | resetDatabase(); | ||
2913 | return; | 3036 | return; | ||
2914 | } | 3037 | } | ||
▲ Show 20 Lines • Show All 709 Lines • ▼ Show 20 Line(s) | 3627 | { | |||
3624 | } | 3747 | } | ||
3625 | } | 3748 | } | ||
3626 | 3749 | | |||
3627 | { | 3750 | { | ||
3628 | auto selectAllRadiosText = QStringLiteral("SELECT " | 3751 | auto selectAllRadiosText = QStringLiteral("SELECT " | ||
3629 | "radios.`ID`, " | 3752 | "radios.`ID`, " | ||
3630 | "radios.`Title`, " | 3753 | "radios.`Title`, " | ||
3631 | "radios.`HttpAddress`, " | 3754 | "radios.`HttpAddress`, " | ||
3755 | "radios.`ImageAddress`, " | ||||
3632 | "radios.`Rating`, " | 3756 | "radios.`Rating`, " | ||
3633 | "trackGenre.`Name`, " | 3757 | "trackGenre.`Name`, " | ||
3634 | "radios.`Comment` " | 3758 | "radios.`Comment` " | ||
3635 | "FROM " | 3759 | "FROM " | ||
3636 | "`Radios` radios " | 3760 | "`Radios` radios " | ||
3637 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = radios.`Genre` " | 3761 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = radios.`Genre` " | ||
3638 | ""); | 3762 | ""); | ||
3639 | 3763 | | |||
▲ Show 20 Lines • Show All 802 Lines • ▼ Show 20 Line(s) | 4445 | { | |||
4442 | } | 4566 | } | ||
4443 | } | 4567 | } | ||
4444 | 4568 | | |||
4445 | { | 4569 | { | ||
4446 | auto selectRadioFromIdQueryText = QStringLiteral("SELECT " | 4570 | auto selectRadioFromIdQueryText = QStringLiteral("SELECT " | ||
4447 | "radios.`ID`, " | 4571 | "radios.`ID`, " | ||
4448 | "radios.`Title`, " | 4572 | "radios.`Title`, " | ||
4449 | "radios.`HttpAddress`, " | 4573 | "radios.`HttpAddress`, " | ||
4574 | "radios.`ImageAddress`, " | ||||
4450 | "radios.`Rating`, " | 4575 | "radios.`Rating`, " | ||
4451 | "trackGenre.`Name`, " | 4576 | "trackGenre.`Name`, " | ||
4452 | "radios.`Comment` " | 4577 | "radios.`Comment` " | ||
4453 | "FROM " | 4578 | "FROM " | ||
4454 | "`Radios` radios " | 4579 | "`Radios` radios " | ||
4455 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = radios.`Genre` " | 4580 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = radios.`Genre` " | ||
4456 | "WHERE " | 4581 | "WHERE " | ||
4457 | "radios.`ID` = :radioId " | 4582 | "radios.`ID` = :radioId " | ||
▲ Show 20 Lines • Show All 654 Lines • ▼ Show 20 Line(s) | |||||
5112 | 5237 | | |||
5113 | { | 5238 | { | ||
5114 | auto insertRadioQueryText = QStringLiteral("INSERT INTO `Radios` " | 5239 | auto insertRadioQueryText = QStringLiteral("INSERT INTO `Radios` " | ||
5115 | "(" | 5240 | "(" | ||
5116 | "`Title`, " | 5241 | "`Title`, " | ||
5117 | "`httpAddress`, " | 5242 | "`httpAddress`, " | ||
5118 | "`Comment`, " | 5243 | "`Comment`, " | ||
5119 | "`Rating`, " | 5244 | "`Rating`, " | ||
5120 | "`Priority`) " | 5245 | "`ImageAddress`) " | ||
5121 | "VALUES " | 5246 | "VALUES " | ||
5122 | "(" | 5247 | "(" | ||
5123 | ":title, " | 5248 | ":title, " | ||
5124 | ":httpAddress, " | 5249 | ":httpAddress, " | ||
5125 | ":comment, " | 5250 | ":comment, " | ||
5126 | ":trackRating," | 5251 | ":trackRating," | ||
5127 | "1)"); | 5252 | ":imageAddress)"); | ||
5128 | 5253 | | |||
5129 | auto result = prepareQuery(d->mInsertRadioQuery, insertRadioQueryText); | 5254 | auto result = prepareQuery(d->mInsertRadioQuery, insertRadioQueryText); | ||
5130 | 5255 | | |||
5131 | if (!result) { | 5256 | if (!result) { | ||
5132 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertRadioQuery.lastQuery(); | 5257 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertRadioQuery.lastQuery(); | ||
5133 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertRadioQuery.lastError(); | 5258 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertRadioQuery.lastError(); | ||
5134 | 5259 | | |||
5135 | Q_EMIT databaseError(); | 5260 | Q_EMIT databaseError(); | ||
Show All 15 Lines | |||||
5151 | } | 5276 | } | ||
5152 | 5277 | | |||
5153 | { | 5278 | { | ||
5154 | auto updateRadioQueryText = QStringLiteral("UPDATE `Radios` " | 5279 | auto updateRadioQueryText = QStringLiteral("UPDATE `Radios` " | ||
5155 | "SET " | 5280 | "SET " | ||
5156 | "`HttpAddress` = :httpAddress, " | 5281 | "`HttpAddress` = :httpAddress, " | ||
5157 | "`Title` = :title, " | 5282 | "`Title` = :title, " | ||
5158 | "`Comment` = :comment, " | 5283 | "`Comment` = :comment, " | ||
5159 | "`Rating` = :trackRating " | 5284 | "`Rating` = :trackRating, " | ||
5285 | "`ImageAddress` = :imageAddress " | ||||
5160 | "WHERE " | 5286 | "WHERE " | ||
5161 | "`ID` = :radioId"); | 5287 | "`ID` = :radioId"); | ||
5162 | 5288 | | |||
5163 | auto result = prepareQuery(d->mUpdateRadioQuery, updateRadioQueryText); | 5289 | auto result = prepareQuery(d->mUpdateRadioQuery, updateRadioQueryText); | ||
5164 | 5290 | | |||
5165 | if (!result) { | 5291 | if (!result) { | ||
5166 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateRadioQuery.lastQuery(); | 5292 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateRadioQuery.lastQuery(); | ||
5167 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateRadioQuery.lastError(); | 5293 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateRadioQuery.lastError(); | ||
▲ Show 20 Lines • Show All 1243 Lines • ▼ Show 20 Line(s) | 6535 | { | |||
6411 | 6537 | | |||
6412 | result[TrackDataType::key_type::DatabaseIdRole] = trackRecord.value(0); | 6538 | result[TrackDataType::key_type::DatabaseIdRole] = trackRecord.value(0); | ||
6413 | result[TrackDataType::key_type::TitleRole] = trackRecord.value(1); | 6539 | result[TrackDataType::key_type::TitleRole] = trackRecord.value(1); | ||
6414 | 6540 | | |||
6415 | result[TrackDataType::key_type::AlbumRole] = QStringLiteral("Radios"); | 6541 | result[TrackDataType::key_type::AlbumRole] = QStringLiteral("Radios"); | ||
6416 | result[TrackDataType::key_type::ArtistRole] = trackRecord.value(1); | 6542 | result[TrackDataType::key_type::ArtistRole] = trackRecord.value(1); | ||
6417 | 6543 | | |||
6418 | result[TrackDataType::key_type::ResourceRole] = trackRecord.value(2); | 6544 | result[TrackDataType::key_type::ResourceRole] = trackRecord.value(2); | ||
6419 | result[TrackDataType::key_type::RatingRole] = trackRecord.value(3); | 6545 | result[TrackDataType::key_type::ImageUrlRole] = trackRecord.value(3); | ||
6546 | result[TrackDataType::key_type::RatingRole] = trackRecord.value(4); | ||||
6420 | if (!trackRecord.value(4).isNull()) { | 6547 | if (!trackRecord.value(4).isNull()) { | ||
6421 | result[TrackDataType::key_type::GenreRole] = trackRecord.value(4); | 6548 | result[TrackDataType::key_type::GenreRole] = trackRecord.value(5); | ||
6422 | } | 6549 | } | ||
6423 | result[TrackDataType::key_type::CommentRole] = trackRecord.value(5); | 6550 | result[TrackDataType::key_type::CommentRole] = trackRecord.value(6); | ||
6424 | result[TrackDataType::key_type::ElementTypeRole] = ElisaUtils::Radio; | 6551 | result[TrackDataType::key_type::ElementTypeRole] = ElisaUtils::Radio; | ||
6425 | 6552 | | |||
6426 | return result; | 6553 | return result; | ||
6427 | } | 6554 | } | ||
6428 | 6555 | | |||
6429 | void DatabaseInterface::internalRemoveTracksList(const QList<QUrl> &removedTracks) | 6556 | void DatabaseInterface::internalRemoveTracksList(const QList<QUrl> &removedTracks) | ||
6430 | { | 6557 | { | ||
6431 | QSet<qulonglong> modifiedAlbums; | 6558 | QSet<qulonglong> modifiedAlbums; | ||
▲ Show 20 Lines • Show All 389 Lines • ▼ Show 20 Line(s) | 6947 | if (oneTrack.databaseId() == -1ull) { | |||
6821 | query = d->mInsertRadioQuery; | 6948 | query = d->mInsertRadioQuery; | ||
6822 | } | 6949 | } | ||
6823 | 6950 | | |||
6824 | query.bindValue(QStringLiteral(":httpAddress"), oneTrack.resourceURI()); | 6951 | query.bindValue(QStringLiteral(":httpAddress"), oneTrack.resourceURI()); | ||
6825 | query.bindValue(QStringLiteral(":radioId"), oneTrack.databaseId()); | 6952 | query.bindValue(QStringLiteral(":radioId"), oneTrack.databaseId()); | ||
6826 | query.bindValue(QStringLiteral(":title"), oneTrack.title()); | 6953 | query.bindValue(QStringLiteral(":title"), oneTrack.title()); | ||
6827 | query.bindValue(QStringLiteral(":comment"), oneTrack.comment()); | 6954 | query.bindValue(QStringLiteral(":comment"), oneTrack.comment()); | ||
6828 | query.bindValue(QStringLiteral(":trackRating"), oneTrack.rating()); | 6955 | query.bindValue(QStringLiteral(":trackRating"), oneTrack.rating()); | ||
6956 | query.bindValue(QStringLiteral(":imageAddress"), oneTrack.albumCover()); | ||||
6829 | 6957 | | |||
6830 | auto result = execQuery(query); | 6958 | auto result = execQuery(query); | ||
6831 | 6959 | | |||
6832 | if (!result || !query.isActive()) { | 6960 | if (!result || !query.isActive()) { | ||
6833 | Q_EMIT databaseError(); | 6961 | Q_EMIT databaseError(); | ||
6834 | 6962 | | |||
6835 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << query.lastQuery(); | 6963 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << query.lastQuery(); | ||
6836 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << query.boundValues(); | 6964 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << query.boundValues(); | ||
▲ Show 20 Lines • Show All 912 Lines • Show Last 20 Lines |
Even though this branch has not been released, can you bump the database version and do this modification via a database upgrade. That will be nicer for people using builds from trunk (think of early testers via the flatpak package built by KDE for example).